Templates

Webinar Reminder Series

Someone registers for your webinar. This workflow sends five reminders (30 days, 14 days, 7 days, day before, day of), each at 9am UTC. Late registrants skip windows that already passed and continue from the next valid reminder.

8 minutes setupUpdated 2026-05-21

Overview

Five reminder emails lead up to a webinar: 30 days out, 14 days, 7 days, the day before, and the day of. Each send is scheduled for 9am UTC on its target day, anchored to the webinar date rather than time since registration.

If someone registers late (for example, two weeks before the webinar), the 30-day window is already past. The workflow skips that reminder and continues at the 14-day mark.

How it runs

On registration, the first step calculates UTC timestamps for all five send windows and returns null for any window already in the past.

For each window, the workflow waits until that timestamp (or proceeds immediately when the value is null). A Switch checks the timestamp: null skips the email; a real timestamp sends it. The day-of email always sends, with no skip branch, so same-day registrants still receive join details.

Steps

  • JavaScript (map_input): Validates the webinar date is in the future, then calculates send timestamps for all five windows. Past windows become null.
  • Wait + Switch + Gmail (x4): One trio per window (30 days, 14 days, 7 days, 1 day). Wait until the target time, Switch decides skip or send, Gmail delivers when applicable.
  • Wait + Gmail (day-of): No skip branch. The day-of email always sends.
  • Exit (series_complete): Closes out.

Why timestamps are computed upfront

Recalculating send time at each step breaks for late registrations. If someone registers 10 days before the webinar and you compute "30 days from now" at step one, the workflow could wait past the event or skip inconsistently. Computing all five windows from the webinar date at registration keeps timing anchored to the event.

Using null for past windows is cleaner than negative waits. The Wait step proceeds immediately, the Switch sees null and skips, and no email is sent. The same pattern applies to every window.

Setup

  1. Connect Gmail and replace the from address in all five email steps with your verified sender.
  2. Customise the email bodies. The 14-day email includes [Key topic 1/2/3] placeholders to fill in.
  3. Trigger from your webinar registration form. Payload needs email, firstName, webinarTitle, webinarDate (ISO 8601), webinarLink, and hostName.

Time zones

Sends are scheduled at 9am UTC for a single consistent reference time and to avoid DST edge cases. If your audience is mostly in one region and you want local 9am, change the d.setUTCHours(9, 0, 0, 0) line in map_input to the matching UTC offset (for example 13, 0, 0, 0 for 9am ET in winter).

Adapt this template in Unmeshed

Start from the sequence above, then connect your APIs, approvals, decision logic, and notifications as durable workflow steps.