🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Typeform + Google Sheets: event follow-ups handled

Lisa Granqvist Partner Workflow Automation Expert

Event registrations come in, payments happen… and then the messy part starts. People miss confirmation emails, reminders go out late, and you end up double-checking a spreadsheet at night because you don’t trust it.

Event organizers feel this first. A community manager running monthly workshops knows it too. Even a small marketing team doing webinars gets dragged into it. This Typeform follow-ups automation keeps your list clean, your emails timely, and your “did they pay?” questions answered.

You’ll see how the workflow captures Typeform signups into Google Sheets, charges via Stripe, sends the right emails through Gmail, and keeps reminders and post-event follow-ups running automatically.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Typeform + Google Sheets: event follow-ups handled

The Problem: Event follow-ups slip through the cracks

Managing event participants sounds simple until you do it more than once. A signup arrives in Typeform, someone asks if their payment went through, another person wants the calendar invite re-sent, and you’re stuck hunting across tools that don’t talk to each other. The real cost isn’t just time. It’s the mental overhead of remembering who needs what, plus the awkward “sorry, we missed your email” moments that make your event feel less professional. After the event, it gets worse because follow-ups compete with the next thing on your calendar.

The friction compounds, especially when you try to scale from “one-off workshop” to “recurring events with a real process.”

  • Payments and attendee details live in separate places, so you end up reconciling Stripe with a spreadsheet by hand.
  • Reminder emails are easy to forget until the day before, which means more no-shows and more “where’s the link?” messages.
  • Follow-up surveys go out inconsistently, so you lose feedback right when it’s most valuable.
  • One missed step forces you into cleanup mode, and cleanup always takes longer than doing it right the first time.

The Solution: Typeform signups to paid, confirmed, and followed up

This workflow turns your registration process into a reliable system. It starts the moment someone submits your Typeform. Their details get mapped to your event settings (name, date, time, location, fee) and then saved into a Google Sheet that becomes your source of truth. Next, Stripe charges the registration fee and the workflow checks if the payment actually succeeded. If it did, the attendee receives a confirmation email via Gmail, the event is added to their Google Calendar, and you get a Slack notification so you always know what’s happening. After that, two scheduled checks run daily: one sends reminders a few days before the event, and the other sends a thank-you email with your survey link a couple days after. The sheet updates too, so you can see who has been followed up with at a glance.

The workflow starts with Typeform intake and a clean write to Google Sheets. Then Stripe and Gmail handle the “paid + confirmed” path, including the calendar invite and organizer alert. Finally, scheduled scans keep reminders and post-event follow-ups running without you babysitting it.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you run a paid workshop with 40 attendees. Manually, you might spend about 5 minutes per person to copy details into a sheet, confirm payment, send a confirmation, and answer follow-up questions, which is roughly 3 hours. Then add reminders and post-event emails, another hour or two across the week. With this workflow, you spend maybe 10 minutes setting up the event values once, and the rest runs in the background. You get the time back, and the experience is smoother for attendees.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Typeform to collect registration details.
  • Google Sheets to store participants and status flags.
  • Stripe API credentials (get it from Stripe Developers → API keys).

Skill level: Intermediate. You’ll connect accounts (OAuth), replace a few placeholder IDs, and test with a real signup.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

A Typeform submission triggers everything. As soon as someone registers, n8n pulls their name, email, and any other fields you included in the form.

Event settings get applied and saved. The workflow merges the participant data with your event details (date, time, location, fee), then appends a new row in Google Sheets so you can track each person from start to finish.

Payment and onboarding happen immediately. Stripe processes the charge, an “If” check confirms it worked, and Gmail sends a confirmation email. Right after that, Google Calendar adds the event for the attendee and Slack pings your channel so you’re not guessing who joined.

Daily scans handle reminders and follow-ups. On a schedule, n8n checks the sheet for upcoming events that are within your reminder window, then sends the reminder email. A separate scheduled scan looks for past events that are due for follow-up and sends a thank-you + survey link, then marks “Follow-up Sent” in the sheet.

You can easily modify the reminder timing to match your event cadence based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Typeform Trigger

Set up the Typeform intake so registrations start the workflow and feed into your event settings.

  1. Add the Typeform Intake Trigger node as your workflow trigger.
  2. Set Form ID to <__PLACEHOLDER_VALUE__Typeform Form ID__>.
  3. Verify the trigger connects to Event Settings Map as shown in the execution flow.
⚠️ Common Pitfall: If the Typeform trigger doesn’t fire, confirm the form ID is correct and the webhook is enabled in Typeform.

Step 2: Connect Google Sheets

Configure the participant database so registrations, reminders, and follow-ups can be read and updated.

  1. Open Append Participant Sheet and set Document ID to <__PLACEHOLDER_VALUE__Google Sheets Document ID__> and Sheet Name to <__PLACEHOLDER_VALUE__Sheet Name (e.g., Participants)__>.
  2. Map columns in Append Participant Sheet to the provided expressions, including {{ $json.name }}, {{ $json.email }}, and {{ $now.toISO() }}.
  3. Configure Retrieve Upcoming Rows with the same Document ID and Sheet Name, and keep the filter on Payment Status = succeeded.
  4. Configure Retrieve Past Rows with the same Document ID and Sheet Name, and keep the filters on Payment Status = succeeded and Follow-up Sent empty.
  5. In Update Follow-up Flag, set Operation to update and keep column values Follow-up Sent = Yes and Follow-up Date = {{ $now.toISO() }}.
  6. Credential Required: Connect your googleSheetsOAuth2Api credentials in Append Participant Sheet, Retrieve Upcoming Rows, Retrieve Past Rows, and Update Follow-up Flag.

Step 3: Set Up Processing and Event Settings

Define the event metadata used across billing, emails, calendar entries, and notifications.

  1. Open Event Settings Map and set placeholders like eventName, eventDate, eventTime, eventLocation, and participationFee to real values.
  2. Keep reminderDaysBefore at 3 and followupDaysAfter at 2 or adjust to your timing needs.
  3. Confirm that Event Settings Map connects directly to Append Participant Sheet as shown in the execution flow.

Step 4: Configure Payment, Confirmation, Calendar, and Organizer Alerts

This sequence charges the participant, verifies payment success, sends confirmation, adds a calendar event, and notifies the organizer.

  1. In Charge Registration Fee, set Amount to {{ $('Event Settings Map').first().json.participationFee * 100 }}, Currency to jpy, and fill Source ID and Customer ID placeholders.
  2. Ensure Validate Charge Result checks status equals succeeded using {{ $json.status }}.
  3. In Dispatch Confirmation Email, keep Send To as {{ $('Typeform Intake Trigger').first().json.email }} and Subject as {{ 'イベント参加確認: ' + $('Event Settings Map').first().json.eventName }}.
  4. Configure Create Calendar Entry with Start {{ $('Event Settings Map').first().json.eventDate + 'T' + $('Event Settings Map').first().json.eventTime }} and End {{ DateTime.fromISO($('Event Settings Map').first().json.eventDate + 'T' + $('Event Settings Map').first().json.eventTime).plus({ hours: 2 }).toISO() }}.
  5. In Post Organizer Alert, confirm the Channel ID uses {{ $('Event Settings Map').first().json.organizerSlackChannel }} and the message template includes name, email, and event name.
  6. Credential Required: Connect your gmailOAuth2 credentials in Dispatch Confirmation Email.
  7. Credential Required: Connect your googleCalendarOAuth2Api credentials in Create Calendar Entry.
  8. Credential Required: Connect your slackOAuth2Api credentials in Post Organizer Alert.
⚠️ Common Pitfall: Charge Registration Fee requires Stripe credentials, but none are configured. Add your Stripe credentials before running the workflow.

Step 5: Configure Reminders and Follow-ups

These scheduled scans send reminder emails before the event and follow-up surveys after the event date.

  1. In Scheduled Reminder Scan, set the schedule to run daily at 09:00 using the rule with triggerAtHour = 9.
  2. Configure Compute Reminder Date with Operation = subtractFromDate, Duration = {{ $('Event Settings Map').first().json.reminderDaysBefore }}, and Magnitude = {{ $json['Event Date'] }}.
  3. Ensure Evaluate Reminder Window compares {{ $now.toFormat('yyyy-MM-dd') }} to {{ $json.output }} and routes to Send Reminder Notice.
  4. In Send Reminder Notice, keep Send To as {{ $json.Email }} and Subject as {{ 'リマインダー: ' + $json['Event Name'] + ' が間もなく開催されます' }}.
  5. In Scheduled Follow-up Scan, set the schedule to run daily at 10:00 using the rule with triggerAtHour = 10.
  6. Configure Compute Follow-up Date with Operation = addToDate, Duration = {{ $('Event Settings Map').first().json.followupDaysAfter }}, and Magnitude = {{ $json['Event Date'] }}.
  7. Ensure Evaluate Follow-up Window checks {{ $now.toFormat('yyyy-MM-dd') }} gte {{ $json.output }} and routes to Send Thanks & Survey, then to Update Follow-up Flag.
  8. Credential Required: Connect your gmailOAuth2 credentials in Send Reminder Notice and Send Thanks & Survey.
Tip: Keep the reminder and follow-up schedules at off-peak hours to avoid timezone conflicts with event dates.

Step 6: Test and Activate Your Workflow

Validate the full flow with a sample registration and then enable the scheduled scans.

  1. Use Typeform Intake Trigger to submit a test registration and run the workflow manually.
  2. Confirm that Append Participant Sheet writes a new row and Charge Registration Fee returns a successful charge.
  3. Verify that Dispatch Confirmation Email, Create Calendar Entry, and Post Organizer Alert all execute in sequence.
  4. Run Scheduled Reminder Scan and Scheduled Follow-up Scan once manually to verify reminder and follow-up emails.
  5. Activate the workflow by toggling the Active switch so scheduled scans run automatically.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Google Sheets OAuth permissions can be picky. If rows stop appending, check the connected Google account in n8n credentials and re-auth if needed.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Gmail email content defaults are bland, frankly. Update the HTML in the confirmation, reminder, and thank-you nodes early so you’re not “fixing tone” for every event.

Frequently Asked Questions

How long does it take to set up this Typeform follow-ups automation?

About 45 minutes if your accounts and sheet are ready.

Do I need coding skills to automate Typeform follow-ups?

No. You’ll mostly connect accounts and replace placeholder IDs. The only “technical” part is testing the workflow with a real submission to make sure your columns match.

Is n8n free to use for this Typeform follow-ups workflow?

Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Stripe fees (your normal processing rate) and your email provider limits.

Where can I host n8n to run this automation?

Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.

Can I customize this Typeform follow-ups workflow for free events (no payment)?

Yes, but you’ll remove the Stripe branch. In n8n, disable or delete the “Charge Registration Fee” and “Validate Charge Result” nodes, then route “Append Participant Sheet” straight into your confirmation email and calendar nodes. Common customizations include changing the reminder and follow-up timing, swapping Gmail for another email service, and adding extra columns like ticket type or dietary requirements.

Why is my Google Sheets connection failing in this workflow?

Most of the time it’s expired OAuth credentials or the wrong Google account. Reconnect Google Sheets in n8n credentials, then confirm the Sheet ID and tab name match what’s in your nodes. Also check the header row: if your columns don’t exist (like “Payment Status” or “Follow-up Sent”), appends and updates can fail silently. If you’re running a lot of events, Google API limits can show up too, so spacing executions out helps.

How many participants can this Typeform follow-ups automation handle?

For most small events, it’s effectively unlimited. On n8n Cloud Starter, you’re capped by monthly executions; if you self-host, there’s no platform execution limit, just whatever your server can handle. In practice, this workflow is light: a registration is one execution, and each daily scan processes rows quickly as long as your sheet is organized.

Is this Typeform follow-ups automation better than using Zapier or Make?

Often, yes. This workflow has branching logic (payment success vs. failure), scheduled scans, and row updates that can get pricey or awkward in Zapier. n8n also gives you the self-hosting option, which matters when you’re running frequent reminders. But if you only need “Typeform submission → send one email,” Zapier or Make may be faster to set up. The deciding factor is complexity. Talk to an automation expert if you want someone to sanity-check your exact flow.

Once this is running, your event operations stop living in your head. The workflow does the repetitive follow-ups, and you get to focus on filling seats and running a great session.

Need Help Setting This Up?

Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal