Why Nobody Tracks Webinar Show Rate by Traffic Source
Registration is a vanity number. We built the fan-out that lets you measure who actually shows up, broken out by the channel that brought them — and a clock that keeps a real calendar invite in sync.
Snapshot
- Client: Coaching brand running recurring live masterclasses
- Problem: Registrations landed in one system; the rest found out late or never
- Solution: Idempotent fan-out with attendance write-back
- Stack: Typeform, Close CRM, Mailchimp, Google Calendar, Airtable, Zapier
- Build time: 6 days
The Problem
A live masterclass looks like one event. Operationally it's five.
Someone registers. Now the CRM needs to know so sales can see them. The email platform needs to know so reminders go out with the right cohort tag. The calendar needs to issue an invite, because a registration nobody diarizes is a no-show waiting to happen. Funnel tracking needs the record so the source is preserved. And after the session, attendance has to come back so follow-up can be split between the people who showed and the people who didn't.
Miss any one of those and the registration quietly degrades into a name on a list.
Here it was being held together by hand. Exports, imports, someone remembering to tag the new cohort in Mailchimp on the morning of the session. It mostly worked, in the way manual processes mostly work — right up until a launch week when nobody has time and the cohort tag goes out an hour late, after half the reminder emails already fired against the wrong list.
The bigger issue was measurement. The team counted registrations. The team counted attendance. But nothing preserved the link between them, so nobody could answer the only question worth asking: which traffic source produces people who actually turn up?
That matters more than it sounds. A channel that drives 400 registrations at a 12% show rate and one that drives 150 at a 46% show rate look very different in a registration report and identical in nobody's plan. Published webinar benchmarks split show rate by traffic source only as far as warm versus cold — warm lists typically land 40-57%, cold paid traffic 15-30% — and stop there. Nobody publishes it broken out by individual channel, which is exactly the number this build makes visible.
Why Nobody Tracks Show Rate This Way
One trigger, one fan-out, one key.
The registration form fires the workflow. Email address is the primary key across every downstream system. Before anything is created, the workflow checks whether that person already exists — and if they do, it updates rather than duplicates.
That single rule is what makes the whole thing safe to re-run. Somebody registering twice because they lost the confirmation email doesn't produce two CRM records, two calendar invites, and two sets of reminders.
The Build: Dedupe, Fan-Out, Real Calendar Invite
Dedupe and validation before anything is written
Every downstream write uses a normalized email address as its key. An existing person gets updated. A new person gets created. A malformed address gets caught and flagged instead of silently poisoning four systems at once.
Parallel fan-out
CRM record, Mailchimp cohort tag, and calendar invite all happen off the same trigger. It's not a chain where step four fails because step three timed out — it's a fan-out where each destination runs independently.
Why the Calendar Invite Matters More Than the Reminder Email
Not a link in an email that says "add to calendar." An actual invite lands in the registrant's calendar with the join link on it. This is unglamorous and it is probably the single most consequential piece of the build, because the biggest predictor of attendance is whether the session exists in someone's day.
Source carried all the way through
The traffic source that produced the registration is written onto the funnel tracking record and stays attached. It doesn't get overwritten by the reminder email or the calendar invite.
Attendance write-back
After the session, attended and no-show statuses come back into the funnel record. That closes the loop — and it's the step almost everyone skips, which is exactly why almost nobody can tell you their show rate by channel.
Idempotency is the word to remember. A workflow that can run twice on the same input without doing damage is a workflow you can debug, replay, and trust. One that can't is a workflow you'll be afraid to touch during a launch.
What Changed Once Registration Stopped Being Manual
Launch week stopped being manual
No exports, no imports, no morning-of tagging. The ops load per masterclass dropped to checking that the numbers looked right.
Show rate became segmentable
With source attached from registration through to attendance, the team could finally rank channels by people who actually showed up rather than people who filled in a form.
Follow-up split cleanly
Attendees and no-shows need completely different messages. Once attendance existed as a field instead of a memory, that split ran on its own.
Re-registrations stopped causing damage
The dedupe guard quietly removed a whole class of embarrassing duplicate-email problems nobody had to think about again. The same email-as-primary-key discipline underpins how source data survives the funnel on the setter-call side of this business — one canonical identity, everywhere, resolved once.
Why This Matters
Registration is a vanity number. Attendance is the business. The distance between them is almost entirely an operations problem — reminders that didn't fire, invites that were never issued, cohorts that were tagged late.
Three questions:
- Can you tell me your show rate by traffic source for your last live session?
- Does registering put a real calendar invite in someone's calendar, or just a link in an inbox?
- If someone registered twice, what would your stack do?
Losing people between registration and showing up?
We'll map your launch flow end to end, find the handoffs that drop people, and build the tracking that tells you which traffic actually attends.
Book a Free Strategy Call