Personalized invitations via Email

Hi everyone?

Is anyone aware of a way to create a series of personalized invitations (pdf´s), with the names on a table?

I built a Template Email to the invitation of the meeting with data from “meetings” table, but it has no name on it.

Now I need to personalize that for each name in the “members” table.
Is there a way to automatize that with AppSheet?

It sounds like you need to trigger a workflow to run on every record in your “Members” table.


Hi @Marc_Dillon, thanks for pointing that out, and putting it in easier words.
Im not sure on how to achieve that.
I mean, I have my working workflow, which sends an email with generic invitation PDF with no name on it.
Im just missing how to make the workflow make a PDF invitation for every record of my “members table” with their name on it.
It actually doesn´t have to be an Email Workflow, I think it could also work with MakeDoc.

Your existing workflow is run on a single record of another table, correct?

You can start by creating an action from that table, of type “execute an action on a set of rows”, that will run a data change action on all records of the “Members” table, which can trigger a workflow for all member records.


Ouch! But… Yeah.

As @Marc_Dillon pointed out and you now realize, the workflow must run for each Member. That is the only way to get an email to each individual person.

The question is how can you get the Meeting details when cycling through the members? A template can run queries against other tables. Is there some way the template can identify which meeting invite when the PDF is being generated? If so, then you can write that query inside the template to pull those meeting details.

If not, then you must have some way to link the meeting to each person for purposes of including the meeting AND the member info together into the template.

What I would do is create a two-step process for each meeting invite added.

The first step is a custom action (or set of actions) attached to the meeting save. It adds rows to a “working” table for each member - populating the member ref along with the meeting ref. Maybe just member ref and meeting ref columns are all that is needed.

The second step is a workflow triggered on the adds to the “working” table - one for each member - to generate the PDF from template. To keep the “working” table clean, you can add a step in the workflow to delete the row once the email is sent.


Yep, exactly. Thanks for writing what I didn’t feel like typing out at the time :smiley:

What I would do is to “flag” the Meeting record, by setting a column to UTCNOW(). Then in the template that runs for each Member workflow, you can enter the context of that Meeting record with:

<<START: LIST( MAXROW( “Meetings” , “Flag Column” ) )>>


Thanks @WillowMobileSystems, you just nailed it.
I used this formula to get the Meeting Details provided by @Steve at FAQ: FILTER(), LOOKUP(), MAXROW(), MINROW(), REF_ROWS(), and SELECT()
<<LOOKUP(MAX(Meetings[_ROWNUMBER]),”meetings”,”_ROWNUMBER”,”Meeting date”)>>
The last value of the formula is the name of the column you want to get from Meetings table.

I went further and linked another table with the lists of the “meeting objectives” like this:

<<start: SELECT(Meeting objectives[Unique ID], (LOOKUP(MAX(Meetings[_ROWNUMBER]),”Meetings”,”_ROWNUMBER”,”Meeting date”)=[Meeting date]))>>

<<[Meeting objectives]>>


End Result: