Quick answer
To track ticket sales in Google Analytics 4, install GA4 on your WordPress site, switch on ecommerce event tracking so every ticket purchase sends a purchase event with revenue and ticket-type details, and tag every campaign link with UTM parameters so GA4 can tell you which channel produced the sale. Once those three pieces are in place, you can answer the only question that really matters before your next on-sale: where do buyers actually come from, and where do they drop off?
- GA4 out of the box records pageviews, not ticket revenue — ecommerce events have to be enabled deliberately.
- Five events cover almost every reporting need:
view_item,add_to_cart,begin_checkout,purchase, and a custom event for check-in or registration. - GA4 is for attribution and behaviour; your ticketing system stays the source of truth for money and headcount.
In this guide
- Why default GA4 reports miss your ticket sales
- The five events worth tracking
- Installing GA4 on a WordPress ticketing site
- Turning on ecommerce tracking for ticket purchases
- Tagging traffic so attribution actually works
- Three reports you will use every week
- Reconciling GA4 with your real ticket numbers
- Common tracking mistakes
- How Tickera helps
- Checklist
- FAQ
Why default GA4 reports miss your ticket sales
Most organizers install a tracking snippet, see traffic appear in the dashboard, and assume the job is done. It isn’t. A default GA4 property tells you how many people landed on your event page and roughly where they came from. It tells you nothing about how many bought, which ticket type they chose, or how much revenue each channel generated — because none of that is a pageview.
The gap becomes obvious the first time you try to make a budget decision. You spent money on two ad sets and posted in three community groups. Sessions went up. Sales went up. Which of the five caused it? Without ecommerce events and clean campaign tagging, the honest answer is that you’re guessing, and the usual failure mode is to keep funding whatever channel happened to send the most raw traffic — often the cheapest and least qualified one.
There is a second, subtler problem. Ticket buying is bursty. Sales cluster around announcement day, a price-change deadline, and the final 72 hours. Averages across a whole campaign flatten those spikes into noise. You need event-level data with timestamps if you want to see the shape of demand rather than a single conversion-rate figure that describes no real day.
The five events worth tracking
You can instrument dozens of interactions. You shouldn’t. A small set of well-named events, tracked consistently, beats a sprawling setup nobody trusts. These five carry almost all of the decision-making weight.
| Event | Fires when | Question it answers |
|---|---|---|
view_item |
Someone opens the event or ticket page | Is my promotion generating genuine interest? |
add_to_cart |
A ticket is selected or added | Does the page convince people to pick a ticket? |
begin_checkout |
The buyer reaches the checkout form | How many serious buyers do I have? |
purchase |
Payment succeeds and tickets are issued | What did each channel actually earn? |
ticket_checkin (custom) |
A ticket is scanned at the door | Which buyers turn into attendees? |
The first four are Google’s standard ecommerce events, documented in the GA4 ecommerce measurement guide. Sticking to the standard names matters: GA4’s built-in reports and funnel templates recognise them automatically, so you get working reports without building anything custom.
The fifth is optional but revealing. Attendance is a different metric from sales, and the gap between them is where a lot of budget quietly disappears. If you already push check-in data somewhere, sending a lightweight custom event lets you compare show-up rates by acquisition channel — discount-code buyers and affiliate traffic often behave very differently from people who came from your own email list. We covered the operational side of that in our guide to reducing event no-shows.
Installing GA4 on a WordPress ticketing site
You have three realistic options, and the right one depends on how much you plan to customise later.
- A GA4 plugin. Fastest path. Paste your Measurement ID (the
G-XXXXXXXstring) and you’re collecting data in minutes. Fine if you only need standard events. - Google Tag Manager. More setup, far more control. Worth it if you run paid ads on more than one platform, because you can manage every pixel from one container instead of editing your theme each time.
- Direct in the theme. Put the snippet in a child theme or a site-specific plugin, never in a parent theme that an update will overwrite.
Whichever you choose, verify before you move on. Open your site in an incognito window, then check GA4’s Realtime report. If your own visit doesn’t appear within thirty seconds, the tag isn’t firing — usually because a caching or consent plugin is stripping it, or because it was added twice and the duplicate is being blocked.
A tracking setup you haven’t verified with a real test purchase is not a tracking setup. It’s a hypothesis. Run one end-to-end order — a free or £1 ticket works fine — and confirm the revenue figure that lands in GA4 matches the order you just placed.
Turning on ecommerce tracking for ticket purchases
This is the step that separates a decorative dashboard from a useful one. The purchase event needs to carry a payload, not just fire. At minimum it should include a unique transaction ID, the order value, the currency, and an items array describing what was bought.
For a ticketing site, the items array is where the value lives. Send the ticket type name as the item name, and use the item category to group tickets by event. Do that consistently and GA4 will show you revenue split by ticket tier without any extra configuration — which tier sells first, which one stalls, whether your early-bird band is actually pulling forward demand or just discounting sales you would have made anyway. That feeds directly into decisions we discussed in our event ticket pricing strategy guide.
Two details save a lot of grief later. First, make the transaction ID match the order number in your ticketing system, so reconciliation is a lookup rather than a detective exercise. Second, send the value excluding fees and taxes if you want it to line up with your payout reports; whichever convention you pick, write it down, because a number that means something slightly different every quarter is worse than no number.
If you sell through the WooCommerce bridge, most GA4 integrations for WooCommerce will pick up ticket orders automatically because they’re ordinary Woo orders underneath. Confirm the ticket name comes through as the item name rather than a generic product label — that’s the usual thing to fix.
Tagging traffic so attribution actually works
GA4 can only attribute what you tell it. Any link you control — email, social post, partner page, printed QR code, sponsor newsletter — should carry UTM parameters. Any link you don’t tag gets bucketed as direct or referral, and direct traffic is where accountability goes to die.
| Parameter | Use it for | Example |
|---|---|---|
utm_source |
The specific platform or partner | instagram, mailchimp, venue-newsletter |
utm_medium |
The channel category | social, email, cpc, qr |
utm_campaign |
The event or push | summerfest-2026-onsale |
utm_content |
The creative or placement variant | story-a, footer-link |
Keep a shared spreadsheet of your naming conventions and stick to lowercase everywhere. GA4 treats Email and email as two different mediums, and by the time you notice, your campaign report is split across four near-identical rows. Tagging offline touchpoints is worth the effort too: a unique campaign tag behind the QR code on your posters is the only way you’ll ever know whether print did anything.
Once tagging is clean, your event landing page stops being a black box. You can see that Instagram sends volume but converts at a third the rate of your own email list, and reallocate accordingly before the next on-sale rather than after it.
Three reports you will use every week
Ignore most of the GA4 interface. Three views cover the practical work.
- Revenue by session source / medium. Traffic acquisition report, add purchase revenue as a metric, sort descending. This is your spend allocation report, and the ranking by revenue is almost never the same as the ranking by sessions.
- The purchase funnel. Build a funnel exploration with the four ecommerce events in order. The largest percentage drop tells you where to work next: a big fall between
view_itemandadd_to_cartis a page or pricing problem; a fall betweenbegin_checkoutandpurchaseis a checkout or payment problem, and usually the cheapest thing on your list to fix. - Sales by day since announcement. A simple time-series of purchase events. After two or three events you’ll have a demand curve for your own audience, which makes your reminder scheduling a decision rather than a habit.
Checkout abandonment deserves particular attention because it’s the leak closest to the money. If your funnel shows a steep drop at the final step, our guide to abandoned cart recovery for event tickets covers what to do about it.
Reconciling GA4 with your real ticket numbers
GA4 and your ticketing dashboard will disagree. That’s expected, not a bug. Ad blockers, consent refusals, cross-device journeys, and Safari’s storage limits all cost GA4 some events. A gap of five to fifteen percent is normal; a gap of fifty percent means something is broken.
| Question | Trust GA4 | Trust your ticketing system |
|---|---|---|
| How many tickets did we sell? | No | Yes |
| How much revenue is real? | No | Yes |
| Which channel drove sales? | Yes | Rarely available |
| Where do buyers drop off? | Yes | Partially |
| Who is actually attending? | No | Yes |
The rule is simple: GA4 answers why and from where; your ticketing platform answers how many and how much. Report the ticketing numbers to stakeholders, use the GA4 numbers to decide where next month’s budget goes. For the metrics that belong on the first list, see our breakdown of the ticket sales metrics worth tracking.
Common tracking mistakes
- Two tags on one site. A plugin and a theme snippet both firing doubles every event. Check your page source for more than one
gtagor GTM container. - Counting the thank-you page as a conversion. It inflates numbers whenever someone refreshes or returns via browser history. Use the
purchaseevent with a transaction ID instead. - Untagged internal links. Tagging links between pages on your own site rewrites the original source and destroys attribution. UTMs are for inbound traffic only.
- Ignoring the consent banner. If your banner blocks analytics until acceptance, a meaningful share of visits never gets recorded. Know your acceptance rate before you interpret anything.
- Setting it up mid-campaign. Instrument before the on-sale. The launch spike is the most informative traffic you’ll get all year, and it doesn’t come back.
How Tickera helps
Analytics only pays off if the underlying sales data is yours to begin with. Tickera keeps ticket sales on your own WordPress site, so every step of the buyer journey — event page, ticket selection, checkout, confirmation — happens on domains you control and can tag. There is no hop to a marketplace checkout that breaks the session and hands your attribution to someone else’s analytics account.
Because orders live in your own database, transaction IDs, ticket type names, and buyer details line up with what GA4 records, which makes reconciliation a five-minute job. Ticket types map cleanly onto GA4 item names, CSV export gives you the raw rows for any deeper analysis, and check-in data from the app tells you which of those tracked purchases actually walked through the door. If you sell through the WooCommerce bridge, standard WooCommerce GA4 integrations work without special handling.
Licensing is a flat fee with no per-ticket commission, so the revenue GA4 reports is the revenue you keep — see Tickera pricing for the current plans.
Checklist
- GA4 property created and the Measurement ID installed once, not twice.
- Realtime report confirmed with a live visit from an incognito window.
- Ecommerce events firing:
view_item,add_to_cart,begin_checkout,purchase. - The
purchaseevent carries transaction ID, value, currency, and an items array with ticket type names. - One real test order placed and matched against the GA4 revenue figure.
- UTM conventions documented, lowercase, and applied to every outbound link including QR codes.
- Funnel exploration built and saved to your reports collection.
- Internal site links confirmed free of UTM parameters.
- Data retention set to 14 months, so you can compare against last year’s edition.
- Everything verified at least a week before tickets go on sale.
Final thoughts
Tracking ticket sales properly isn’t an analytics project; it’s a budgeting one. The setup above takes an afternoon and replaces the annual argument about which channel deserves credit with a report anyone can read. Do it once, keep the naming conventions stable, and by your third event you’ll have something more valuable than any single dashboard: a reliable picture of how your own audience buys.
Start narrow. Get the purchase event correct and your UTMs clean, then add refinements as questions come up. A small setup you trust beats an elaborate one you quietly ignore — and once you can see which channels earn their keep, the work of selling more tickets gets a lot less speculative.
FAQ
Do I need Google Tag Manager to track ticket sales in GA4?
No. A GA4 plugin or a direct snippet is enough for standard ecommerce events. Tag Manager becomes worthwhile once you run pixels for several ad platforms or need custom events, because it lets you manage all of them in one place without touching your theme.
Why don’t my GA4 revenue numbers match my ticketing dashboard?
Ad blockers, declined cookie consent, cross-device purchases, and browser privacy limits all cause GA4 to under-record. A five to fifteen percent gap is normal. Anything larger usually points to a broken purchase event, a duplicate tag, or a consent banner blocking most sessions. Always report the ticketing system’s figures as the official numbers.
Can I track which ticket type sells best?
Yes, if you send ticket type names in the items array of the purchase event. GA4 will then show revenue and quantity split by item name, which is exactly what you need to evaluate early-bird, general admission, and VIP tiers separately.
How do I track sales from printed posters or flyers?
Put a QR code on the poster that points to your event page with UTM parameters attached, for example utm_source=poster&utm_medium=print&utm_campaign=summerfest-2026. Use a different campaign or content value per location and you can compare placements directly.
Is GA4 enough on its own, or do I need other tools?
For most organizers GA4 plus their ticketing platform’s own reporting is enough. Add a heatmap or session-recording tool only if your funnel shows a drop you can’t explain from the numbers alone.
When should I set up tracking before an event?
At least a week before tickets go on sale, and ideally before you publish the event page at all. The announcement spike is your highest-signal traffic; if tracking isn’t verified by then, that data is gone for good.