How it works
What this workflow does
Check whether the invitee joined a completed demo, then give the rep a safe next step. An authenticated webhook receives the normalized booking details, reads the Zoom participant report, and classifies attendance as attended, needs_review, or no_show. Confirmed attendance is logged, incomplete evidence goes to the review queue, and an optional Gmail rescheduling draft is prepared only for a verified no-show.
The workflow imports inactive with dryRun: true. Run with sample data uses a fictional booking and host-only Zoom report, so the preview does not call Zoom, Gmail, or the Data Table.
This is the attendance-verification layer for the Meeting Lifecycle & Outcome Verification blueprint; the Intelligent Lead Routing & Response blueprint covers how the meeting was booked.
Do not guess a no-show
Classify attendance treats the invitee as attended when the booking email appears in the Zoom participant report. Otherwise, it requires all of the following before calling the booking a no-show:
- The report has no additional pages.
- The expected host appears in the report.
- Every participant email is usable.
verifiedZoomIdentityRequiredis enabled.
A host-only report is therefore needs_review by default. Missing identities, masked emails, pagination, or a missing host stay visible in the Data Table instead of triggering a rescheduling message.
The Zoom request uses the occurrence UUID, including double-encoding for recurring meeting links. The workflow enforces a configurable report delay (20 minutes by default) so the participant report has time to finalize. An unavailable report fails the execution so the trusted relay can retry later.
Draft only after evidence
Each booking is recorded in the Data Table by event_key. A duplicate booking stops the run. When createGmailDraft is true and the result is a verified no_show, the workflow reserves draft_pending, creates an addressed Gmail draft with an optional Calendly rescheduling URL, verifies the returned draft ID, and records draft_ready. If a draft response is lost, inspect Gmail before releasing the booking for a retry.
Validation scope
The supplied report confirms the isolated n8n 2.47.4 import, inactive state, and sample path. It also covers structural checks, exact attendance matching, host-only reports, missing identities, paginated reports, report delay, and draft opt-in behavior. Live Zoom, Gmail, and Data Table calls require a staging test with your accounts.
How to use
Before you start
- A current n8n instance with Data Table support.
- Zoom OAuth access to read meeting participant reports for the meeting hosts.
- A Gmail OAuth account for the rep who will review the rescheduling draft.
- A trusted Calendly/Zoom relay that sends the completed-booking event after the report is ready.
1. Import and run the sample
Download the complete package, extract the ZIP, and read the full setup guide. Import missed-demo-follow-up.n8n.json and keep it inactive.
Open Run with sample data and choose Test workflow. Classify attendance should return the sample result with its review reason.
2. Create the state table
Create an n8n Data Table with text columns event_key, status, detail, and result_id. Enter its ID in Setup. The workflow uses the booking ID as event_key, the attendance status, the review reason, and the Gmail draft ID.
3. Configure the workflow
Set reportDelayMinutes (5 to 1,440), an optional bookingUrl using a https://calendly.com/... scheduling URL, and keep both createGmailDraft and verifiedZoomIdentityRequired false for the first connected test.
Connect Zoom OAuth2 API on Read Zoom attendance. Select the rep's Gmail OAuth2 account on Create Gmail rescheduling draft. Add a private Header Auth credential to Receive event.
4. Send a completed booking
From the trusted relay, submit bookingId, meetingUuid, endedAt, inviteeEmail, inviteeName, and hostEmail. Use the Zoom occurrence UUID, including for recurring meeting links, and submit only once the report delay has passed. The webhook acknowledges receipt; the Data Table shows the outcome.
Use the supplied test payloads for a completed booking, a host-only report, an attended report, and an ambiguous report.
5. Test and enable drafts
Test a verified host-only meeting, a meeting with the invitee, and a report with masked emails. Enable verifiedZoomIdentityRequired only when your Zoom setup consistently requires attendees to join with the address used to book. Enable createGmailDraft only after the attendance results match how your meetings are authenticated.
Review records marked needs_review in the Data Table. Serialize submissions for the same booking ID. If a draft attempt stops at draft_pending, inspect Gmail before releasing that booking for a retry.
Related automations
Use the Calendly Booking Sync System to record the original booking, and the Sales-Call Follow-Up Draft System when the demo does happen. The Sales Objection Coaching System turns the transcript into coaching notes. Read the Meeting Lifecycle & Outcome Verification blueprint for the wider meeting process.
Use the AI Inbound Lead Routing & Sales Follow-Up System for the original inquiry and first response.