Text iMessage reminders for tomorrow's meetings every weekday

Each weekday morning, text every client on tomorrow's calendar a personalized iMessage reminder so service businesses cut no-shows.

Agentic Task
SendblueGoogle CalendarGoogle SheetsOperationsSalesMeeting WorkflowsNotifications & Alerts

Every weekday morning at 8am in my local time zone, run an agent that texts iMessage reminders to every client who has a meeting with me tomorrow. The goal is to cut no-shows for my service business, so the reminders need to feel personal and land reliably whether the recipient is on iPhone or Android.

Step 1. Pull tomorrow's events from my Google Calendar using List Events. Use my primary calendar unless I configure otherwise. Time window is the full local day for tomorrow (midnight to midnight in my time zone). Expand recurring events into individual instances. Skip any event that looks internal-only: no external attendees, all attendee emails on my own domain, recurring team standups, or events I have explicitly tagged as internal.

Step 2. For each remaining event, identify the external attendee or attendees we want to remind. Look them up in my Google Sheets client roster using Get Values (or Batch Get Values if it is faster) against the roster tab. Match by attendee email first, then by full name as a fallback. The roster columns are: full name, email, phone number in E.164 format (like +14155551234), and an optional notes column.

Step 3. For every matched client with a valid E.164 phone number, call Sendblue Evaluate Service on that number to confirm whether it supports iMessage. Use the result to decide the delivery channel: iMessage when supported, SMS otherwise. Sendblue's Send Message endpoint will handle both.

Step 4. Before sending, check the reminders log sheet for any row where the same attendee was texted in the last 24 hours. If a recent entry exists, skip this send so nobody gets double-texted when they have two meetings tomorrow.

Step 5. Draft a short, friendly reminder message (two or three sentences, no more) that includes: the client's first name, the meeting time and time zone, the location or video link, and one specific topic line pulled from the event title or description. Sign off as me. Example shape: "Hi Sam, quick reminder we're on for tomorrow at 2pm PT to review the kitchen reno timeline. Here's the Zoom link: <url>. See you then. — Jamie". Adjust the topic line per event so each message feels written for that meeting, not blasted.

Step 6. Send the message with Sendblue Send Message from my Sendblue line. Use E.164 for the recipient number.

Step 7. After each successful send, append a row to my reminders log sheet using Append Values with these columns: timestamp (ISO 8601), attendee name, attendee phone, event ID, event title, meeting start time, delivery channel (iMessage or SMS), and the full message text. This gives me an audit trail and lets me spot rows where a number bounced or never delivered so I can refresh it in the roster.

Skip rules to enforce throughout: recurring internal-only events, anyone already texted in the last 24 hours per the reminders log, roster rows without a valid E.164 number, and any event without at least one external attendee that maps to the roster. Log skipped events to the run output (not the sheet) with the reason, so I can see why a meeting did not generate a reminder.

Configuration to expose at the top of the workflow so I can tweak without re-prompting: send time and time zone, Google Calendar ID, roster spreadsheet ID and tab name, log spreadsheet ID and tab name, my own email domain (for the internal-only filter), and the Sendblue from-number.

Additional information

What does this prompt do?
  • Every weekday morning, pulls tomorrow's meetings from your Google Calendar and matches each attendee to a phone number in your client roster spreadsheet.
  • Checks whether each phone number supports iMessage and falls back to SMS automatically, so the message always lands.
  • Sends a short, personalized reminder that names the client, the meeting time and time zone, the location or video link, and one specific topic from the event.
  • Skips internal-only meetings, anyone you already texted in the last 24 hours, and rows with missing or invalid phone numbers.
  • Logs every send to a reminders sheet with timestamp, attendee, event, delivery channel, and message text, so you have an audit trail and can spot bad phone numbers.
What do I need to use this?
  • A Sendblue account with a line that can send iMessage and SMS.
  • A Google account with access to the calendar that holds your client meetings.
  • A Google Sheet roster mapping each client to a phone number in international format (the +1 country-code style).
  • A second tab or sheet to receive the reminders log (the workflow will append to it).
How can I customize it?
  • Change the send time (default is each weekday at 8am in your time zone) or run it on weekends too.
  • Edit the message template, tone, and which event field becomes the topic line (title, description, or a custom note).
  • Tighten or loosen the skip rules, for example excluding specific calendars, internal domains, or meetings under 15 minutes.
  • Point at a different roster sheet or change which column holds the phone number, name, or notes.

Frequently asked questions

Will this work if my clients don't have iPhones?
Yes. Before sending, the workflow checks whether each phone number supports iMessage. If it doesn't, Sendblue falls back to a regular SMS so the reminder still goes out.
What if a client appears on tomorrow's calendar but isn't in my roster sheet?
They get skipped and the run continues. The reminders log only records people we actually texted, so a quick scan tells you which contacts you still need phone numbers for.
How do I avoid double-texting someone with two meetings tomorrow?
The workflow checks the reminders log before each send and skips anyone already texted in the last 24 hours, so each client hears from you once per day at most.
Can I change the message wording?
Yes. The message template is part of the prompt you hand to the agent, so you can edit the tone, length, sign-off, or which event details to include without touching any code.
Does this send reminders for internal team meetings too?
No. The workflow filters out events that look internal-only, such as recurring team standups or meetings with no external attendees, so reminders only go to real clients.

Stop losing revenue to client no-shows.

Connect Google Calendar, Google Sheets, and Sendblue once, and Geni texts every client on tomorrow's calendar each weekday morning.