Tailored first-touch emails for new Airtable prospects
When a new prospect lands in Airtable, send a short, personalized first-touch email through SendGrid and stamp the send back onto the row.
Build me an agent workflow that sends a tailored first-touch outreach email through SendGrid every time a new prospect row lands in my Airtable outreach table.
Trigger: poll Airtable on new_record for a specific base and table that I will configure (think of it as a Cold Outreach base with a Prospects table). Each new record should fire one run of the workflow.
On each run, the agent should:
1. Use Airtable Get Record to pull the full record for the newly created row. Read at minimum the prospect's name, email, company, role/title, and any context columns the user keeps (for example: recent news, mutual connection, persona, pain point, recent funding, podcast appearance, blog post). Treat the column set as configurable, not hardcoded.
2. Skip the row (do nothing, do not send, do not update) if the email field is empty or if a Status field is already set to Sent. Also skip if there is no usable personalization hook in any of the context columns. Log why it was skipped.
3. Draft a short first-touch email (roughly 4 to 7 sentences, plain text by default) that is anchored to ONE concrete detail from the record so it does not read as generic. The subject line should also reference that detail. The voice, sign-off, and call to action should come from a tone note the user provides when configuring the workflow.
4. Send the email via SendGrid's Send Email operation from a verified sender address that the user configures. To-name should be the prospect's name. Use the user-configured from name and reply-to.
5. Capture the SendGrid message ID from the x-message-id response header (POST /mail/send returns 202 with an empty body, so the message ID only lives in that header).
6. Call Airtable Update Record on that same row to set Status = Sent, LastTouchAt = the current timestamp, and MessageId = the SendGrid x-message-id value. The exact field names should be configurable in case the user's schema uses different labels.
Also enforce a per-run send cap (default 25, user-configurable). If the cap is hit, stop sending for this run and leave the remaining rows untouched so they get picked up on the next trigger.
On any SendGrid error (400, 401, 403, 413, 429), do NOT mark the row as Sent. Instead set Status to something like Error and write the error message to an optional ErrorNote field so the user can see what went wrong in Airtable.
Make the table/base IDs, the column names, the from address, the reply-to address, the voice/tone note, and the per-run cap all easy to edit after the workflow is built.
Additional information
What does this prompt do?
- Watches your Airtable outreach table and picks up each new prospect row as it appears.
- Drafts a short, specific first-touch email anchored to a real detail from the row (recent news, mutual connection, role, persona) so it does not read as generic.
- Sends the email through SendGrid from your verified sender and writes the status, send time, and message ID back to the Airtable row.
- Skips rows with no email or that are already marked Sent, and caps the total emails per run so a bulk import never blasts your list.
What do I need to use this?
- An Airtable base with a table of prospects, including columns for email, name, company, and at least one context field like recent news or a mutual connection.
- A SendGrid account with a verified sender address you are allowed to send from.
- A short voice or tone note so the agent writes emails that sound like you, not like a template.
How can I customize it?
- Change which Airtable table or view the agent watches, and which columns count as the personalization hook.
- Adjust the per-run send cap so a fresh import never sends more than a safe warm-up batch in one go.
- Edit the voice, the subject line style, the call to action, or the rule that decides when a row is ready to send.
Frequently asked questions
Will the emails actually feel personal, or will they read like a mail merge?
Can I stop it from emailing prospects who are already in flight?
What if I drop in a huge import of new prospects at once?
Where does the send actually come from?
Can I track which emails actually got delivered?
Stop letting fresh prospects sit untouched.
Connect Airtable and SendGrid once, and Geni reaches out the moment a new row lands, with a note that actually sounds like you.