How to track webinar registration to attendance for Meta Ads
Registrations are easy to buy and attendance rates vary enormously by channel, which makes registration a poor optimization target and attendance a genuinely useful one. The complication is timing: the webinar happens days after the click, on a platform you don't own, and the attendance record lives there rather than on your site. On Meta Ads the specifics that matter are the click identifier (fbclid, which becomes the _fbc cookie), the import mechanism (the Conversions API), and deduplication is on event_name and event_id together, so both paths must send the same ID and the identically-cased name. The chain only works end to end if the identifier is captured on landing and stored on the registrant record in your webinar platform and CRM — no cookie survives the gap between ad click and attendance sent back.
Free30 minutesNo obligation
Specific to Meta × Webinar registration → attendance
Meta webinars: CompleteRegistration first, attendance as custom event
On Meta, fire CompleteRegistration with a shared event_id from both pixel and server at sign-up, then send attendance through the Conversions API as a custom event, matched on the registrant's hashed email and the stored fbc. Build a custom conversion on attendance to optimize toward it once weekly volume is high enough.
Meta's standard events cover the registration and stop there. CompleteRegistration fits the sign-up, but there is no standard event for attending, so attendance goes in as a custom event sent from the server after the session. Name it once and keep the casing identical every time; build a custom conversion on it in Events Manager to make it something campaigns can optimize toward.
The 7-day click window matters more here than the gap between stages suggests. A webinar promoted three weeks ahead collects registrations whose attendance falls well past seven days from the click, so Meta's default reporting will not credit it. Send it anyway with event_time set to the session time. If you can, schedule sessions within a week of the main promotion push, or run a recurring weekly session, so attendance falls inside the window bidding can see.
Instant forms change the matching. Registrations collected through a Meta lead form never visit your site, so there is no fbc; use the leadgen ID and the email from the form to send attendance back. Either way, the registrant's email is the strongest match key you have, so normalize it before hashing, especially work emails typed with capital letters.
Meta · Webinar registration → attendance · what breaks
Where this funnel usually breaks — Meta · Webinar registration → attendance
- 01
The identifier doesn't reach the registration
Webinar platforms are usually a different domain. It has to be passed as a hidden field or link parameter.
- 02
Registration optimized as the conversion
Attendance rates differ by a wide margin between channels, and registration-optimized bidding finds the worst of them.
- 03
Attendance never sent back
The platform exposes the webhook and most setups never wire it, so the useful signal stays inside the webinar tool.
Meta · Webinar registration → attendance · the fix
What working looks like — Meta · Webinar registration → attendance
Attendance sent back attributed to the click
Weeks later if necessary, because the identifier lives on the registrant record in your webinar platform and CRM rather than in a cookie.
Meta bidding fed the real outcome
Via the Conversions API, so it optimizes toward people who attend rather than toward registrations.
A reconciliation that closes
Your webinar platform's attendance records matched per record against what Meta Ads reports, over a fully closed window.
Meta · Webinar registration → attendance · architecture
The exact event sequence — Meta · Webinar registration → attendance
The gap between stages two and three is days, which is short enough to stay inside every import window and long enough to break cookie-based approaches.
- 1
Ad click
Identifier captured on landing and written into the registration.
- 2
Registered
The form event. Cheap, plentiful, and a weak predictor on its own.
- 3
Attended
Days later, from the platform's webhook. This is the event worth optimizing toward.
- 4
Watched past a threshold
Where the platform reports it — a much stronger signal than merely joining.
- 5
Attendance sent back
Uploaded against the original click, so bidding learns which channels produce people who show up.
Meta · Webinar registration → attendance · diagnose
What's specific to Meta Ads
- 01
Click identifier: fbclid, which becomes the _fbc cookie
fbclid arrives on the landing URL and is normally written into the _fbc cookie. If it isn't captured on landing, _fbc never exists — and _fbc is the strongest click signal Meta has, so its absence caps your match quality regardless of what else you send. Forward _fbp too, from the browser rather than regenerating it server-side.
- 02
Import mechanism: the Conversions API
Server events go through CAPI with an action_source describing where the conversion happened. Offline outcomes flow through the same API rather than a separate product. Verify current field names against Meta's documentation before building — this surface changes.
- 03
Deduplication
This is the mechanism that decides whether adding CAPI helps or doubles your conversions. Both the Pixel and the server event must carry the same event_id — the order or booking reference works best, because both sides can produce it without coordinating. A case difference in the event name alone produces two events even with a matching ID. Read the Deduplicated indicator in Events Manager over a full week, not one session.
- 04
Window and timing
Meta's default attribution is a 7-day click and 1-day view. View-through is included by default, which is a large part of why Meta claims more conversions than your other platforms — that overlap is expected rather than a fault.
- 05
The Meta gotcha
Match quality is where most Meta accounts lose attribution, and it's almost always normalization rather than coverage. An email hashed with a capital letter, or a phone hashed with brackets, produces a perfectly valid hash that matches nobody and errors nowhere. Normalize first, then hash, and read the score per event rather than overall.
Meta · Webinar registration → attendance · prove
How to prove the chain works — Meta · Webinar registration → attendance
Source of truth
your webinar platform's attendance records
- The same identifier confirmed on the registrant record in your webinar platform and CRM after a full real journey through every step.
- Attendance sent back confirmed arriving at Meta Ads, verified by the Deduplicated indicator and the per-event match quality score, both read over seven days.
- Your webinar platform's attendance records reconciled against Meta Ads per record over a fully closed window.
Meta · Webinar registration → attendance · free audit
What we check in the free audit
- Click identifier: fbclid, which becomes the _fbc cookie
- Import mechanism: the Conversions API
- Deduplication
- Window and timing
- The Meta gotcha
Checked against
your webinar platform's attendance records
Free30 minutesNo obligation
Meta · Webinar registration → attendance · when not to buy
When this doesn't apply to you — Meta · Webinar registration → attendance
- If your webinars are evergreen and on-demand, there's no scheduled attendance event to send. That's closer to a content-consumption funnel and wants a different treatment.
- If you're advertising a business type Meta restricts data collection for — health being the obvious one — the parameters you can legitimately send are narrower, and that constraint should shape the build rather than be worked around.
- If your cycle from click to attendance sent back regularly exceeds the import window, the final event can't drive bidding whatever you build. Optimize toward registration with a qualification flag instead and use the later data for budget decisions rather than for bidding.
- If almost none of your registrant records carry a click identifier today, that's the whole project.
Meta · Webinar registration → attendance · what we deliver
The implementation, on Meta Ads
Capture fbclid and _fbc on landing
fbclid is appended automatically on ad clicks. Capture it on landing and persist it — if you only ever read the _fbc cookie later, you're depending on a cookie that Safari caps at seven days when it's set through JavaScript.
Persist it to the registrant record in your webinar platform and CRM
Write it into the registration form as a hidden field, so it's on the registrant record before the webinar happens.
Send attendance sent back from the record
The webinar platform's attendance webhook fires after the session, carrying the registrant reference. Dispatched to Meta Ads through the Conversions API.
Deduplicate and reverse
Deduplication is on event_name and event_id together, so both paths must send the same id and the identically-cased name. Not usually applicable — attendance either happened or it didn't. Duplicate registrations should be deduplicated on the registrant record.
FAQ
Meta · Webinar registration → attendance questions, answered
No. Use CompleteRegistration for the sign-up and send attendance as a consistently named custom event, then create a custom conversion on it.
Yes. Store the lead ID with the registrant and send attendance back through the Conversions API matched on the lead ID and hashed email.
Because attendance rates differ by an order of magnitude between channels. A channel producing cheap registrations that nobody attends looks like the best performer you have.
It doesn't, as a cookie — the gap is too long. It has to be written onto the registrant record in your webinar platform and CRM at the point of ad click, where it lives as a field rather than as browser storage.
event_name from the standard set with exact casing, event_time in seconds, a shared event_id, an action_source, and hashed user_data that was normalized before hashing. Purchase additionally requires value and currency.
Two to four days for the implementation, plus a closed reconciliation window before we'd call it verified. Capture and persistence are the fiddly parts; the import itself is usually an afternoon.
Yes, and the reference pages on this site cover the mechanics. The part that's genuinely tedious rather than clever is keeping fbclid and _fbc alive through multi-step forms and a registration form hosted on the webinar platform's own domain, which fails silently at every stage.
More on Meta · Webinar registration → attendance
- Google Ads · Webinar registration → attendanceHow to track webinar registration to attendance for Google Ads
- TikTok · Webinar registration → attendanceHow to track webinar registration to attendance for TikTok Ads
- Microsoft · Webinar registration → attendanceHow to track webinar registration to attendance for Microsoft Ads
RELATED GUIDES
Funnels next to webinar registration to attendance, and the checks that close it
- Meta · Webinar → purchaseHow to track webinar attendance to purchase for Meta Ads
- Meta · Application → enrollmentHow to track application to enrollment for Meta Ads
- Meta × Enrolment SystemHow to reconcile Meta Ads against your application or enrolment system
- Meta · Ticketing and eventsMeta Ads conversion tracking for ticketing and events businesses
- Tovuti → MetaConnecting Tovuti to Meta Conversions API
- Patreon → MetaConnecting Patreon to Meta Conversions API
- Meta · Lead magnet → saleHow to track lead magnet to sale for Meta Ads
Free · 30 min
Get webinar registration to attendance tracked properly on Meta Ads
Free30 minutesNo obligation
