How to Track Event ROI from Facebook Ads to Filled Seats
By Rome Thorndike
Most Event Marketers Cannot Answer One Question
"How much did it cost to fill each seat?" It sounds simple. But most event teams cannot answer it because they do not have the tracking infrastructure to connect ad spend to registrations to actual attendance.
They know how much they spent on Facebook ads. They know how many people registered. They know how many showed up. But they cannot draw a line from a specific ad dollar to a specific filled seat. Without that line, budget decisions are guesses.
This guide walks through the full attribution setup, from UTM parameters on your ads to conversion events in GA4 and Meta Pixel, to the final ROI calculation after the event ends.
The Attribution Chain
Full event attribution has four links:
- Ad click: Someone clicks your Facebook ad. The click URL includes UTM parameters that identify the campaign, ad set, and ad.
- Page visit: The Meta Pixel fires a PageView event. GA4 records the session with UTM source, medium, and campaign.
- Registration: The person completes the form. The confirmation page fires a Lead event (Meta Pixel) and a conversion event (GA4). Both events inherit the UTM parameters from the original click.
- Attendance: The person shows up on event day. You check them in and mark their attendance in your registration data.
Links 1-3 are automated through proper tracking setup. Link 4 requires a manual step (check-in) that connects the digital trail to the physical seat. Without all four links, you have partial data.
Step 1: Set Up UTM Parameters on Every Ad
UTM parameters are tags appended to your ad URLs that tell GA4 where the traffic came from. Every Facebook ad should include at minimum:
utm_source=facebookutm_medium=paidutm_campaign=event-name-city-2026utm_content=ad-set-name(e.g., "custom-audience" or "retargeting")
In Meta Ads Manager, add these in the "URL Parameters" field at the ad level. Do not put them in the Website URL field. The URL Parameters field appends them automatically.
Use a consistent naming convention. If you run events in multiple cities, include the city in the campaign name: utm_campaign=symposium-austin-2026. This lets you filter GA4 reports by city later.
For email campaigns, use different UTM parameters: utm_source=email, utm_medium=email, utm_campaign=event-invite-austin. This separation lets you compare ad-driven registrations against email-driven registrations in the same GA4 report.
Step 2: Install Meta Pixel With Conversion Events
The Meta Pixel must fire two events:
- PageView: Fires on the registration page when someone lands on it. This happens automatically with the base pixel code.
- Lead (or CompleteRegistration): Fires on the confirmation page after someone submits the form. This requires the pixel code on the confirmation page plus a standard event call.
The confirmation page pixel event is what tells Meta "this person converted." Without it, Meta Ads Manager shows you clicks, not registrations. You cannot calculate cost per registration, and Meta cannot optimize ad delivery toward people likely to register.
To verify the pixel is firing correctly, install the Meta Pixel Helper Chrome extension. Visit your registration page and confirmation page. The extension shows which events fire on each page. Green checkmarks mean it is working. For a detailed walkthrough, see our Meta Pixel and GA4 setup guide.
Step 3: Configure GA4 Conversion Events
In GA4, you need to mark the registration completion as a conversion event. There are two approaches:
Option A: Page-based conversion. Create an event that fires when someone visits the confirmation page URL. In GA4, go to Admin > Events > Create Event. Set the condition to page_location contains /confirmation (or whatever your confirmation page URL is). Then mark that event as a conversion under Admin > Conversions.
Option B: Custom event via Google Tag Manager. If you use Google Tag Manager, fire a custom event (e.g., "event_registration") when the form submits successfully. This is more reliable than page-based tracking if your form uses AJAX submissions that do not redirect to a new page.
Once the conversion event is configured, GA4 reports show registrations attributed to each traffic source. You can see exactly how many registrations came from utm_source=facebook / utm_medium=paid versus utm_source=email / utm_medium=email.
Step 4: Track Attendance on Event Day
This is the manual link in the chain. On event day, you need a check-in process that records which registrants actually showed up.
The simplest approach: export your registration list with email addresses. At the event, check off each attendee as they arrive. After the event, you have two columns: registered (yes/no) and attended (yes/no).
For larger events, use a check-in app or a simple spreadsheet on a tablet at the door. The tool does not matter as long as the output is a list of email addresses that attended.
Why email addresses? Because email is the common key that connects your registration data (which has UTM source information) to your attendance data. Registrant email + UTM source + attended = full attribution from ad to filled seat.
Step 5: Calculate the Numbers
After the event, pull these data points:
From Meta Ads Manager:
- Total ad spend
- Registrations (Lead events) attributed to ads
- Cost per registration (spend / registrations)
From GA4:
- Total registrations by traffic source (ads, email, organic, direct)
- Registration conversion rate by source (registrations / sessions)
From your attendance data:
- Show-up rate for ad-driven registrants
- Show-up rate for email-driven registrants
- Show-up rate for all registrants
The ROI calculation:
Cost per filled seat = Total ad spend / Number of ad-driven attendees who actually showed up.
Example: You spent $600 on Facebook ads. 45 people registered through ads. 32 of those 45 showed up. Cost per filled seat = $600 / 32 = $18.75.
Compare this across channels. If email campaigns drove 60 registrations at $0 ad cost with a 70% show-up rate (42 attendees), your email channel produced more filled seats at zero ad cost. That data shapes your budget for the next event.
Step 6: Build a Post-Event Report
Compile the numbers into a one-page report that answers five questions:
- How many seats did we fill? Total attendees (not registrations).
- What did it cost per filled seat? Total promotion cost / attendees.
- Which channel performed best? Cost per filled seat by channel (ads, email, organic).
- What was the registration-to-attendance rate? Overall and by channel.
- What should we change next time? One to three specific actions based on the data.
This report is the foundation for every future event budget. If Facebook ads produced filled seats at $18.75 each and your target is under $25, you know the channel works and can scale spend confidently. If the number is $50, you know to investigate the landing page conversion rate and ad targeting before spending more.
Common Attribution Gaps
No confirmation page pixel. If the Meta Pixel only fires on the registration page (not the confirmation page), you have click data but no conversion data. Meta cannot optimize for registrations, and your cost-per-registration number is invisible.
Missing UTM parameters. If ads link to the registration page without UTM tags, GA4 records the traffic as "direct" or "referral." You cannot separate ad-driven registrations from organic ones.
No check-in process. Without attendance data, you can calculate cost per registration but not cost per filled seat. For free events with 30-50% no-show rates, cost per filled seat can be 2x the cost per registration.
Cross-device attribution. Someone sees your ad on their phone, then registers on their laptop the next day. Meta and GA4 handle this imperfectly. Accept that attribution will never be 100% accurate. Aim for 80-90% coverage, which is enough to make sound budget decisions.
Set Up Attribution Before Your Next Event
Every event page we build includes Meta Pixel, GA4, UTM-ready URLs, and a confirmation page wired for conversion tracking. The attribution chain is part of the build, not an afterthought.
Event pages start at $2,000 to $4,000. Ad campaign management starts at $1,000/month. See pricing for details, or run a free audit to check your current tracking setup. Contact us to plan your next event.
Frequently Asked Questions
What is cost per filled seat?
Total promotion cost divided by the number of people who actually attended (not just registered). For events with 30-50% no-show rates, cost per filled seat can be significantly higher than cost per registration. This is the true metric for event ROI.
How do I track which Facebook ad drove a registration?
Use UTM parameters on your ad URLs and install the Meta Pixel with a conversion event on the confirmation page. UTM parameters identify the campaign and ad set in GA4. The Meta Pixel Lead event attributes the registration to the specific ad in Ads Manager.
Can I track ROI without Google Tag Manager?
Yes. GA4 page-based conversion events work for most event pages where form submission redirects to a confirmation page URL. Google Tag Manager is only needed for AJAX forms that do not redirect. The Meta Pixel works independently of GTM.
What show-up rate should I expect from Facebook ad registrations?
For free events, 50-70% of registrants show up. For paid events, 80-90%. Ad-driven registrants sometimes show up at slightly lower rates than email-driven registrants because the relationship is less established. Track both channels separately to see the difference.
Ready to Fill Your Next Event?
We build the page, set up the pixels, and run the ads. You run the event.