Understand your conversion data in Meta
How to read OpenCourt's Purchase and Subscribe events in Meta, break out sale types with content_category, and set realistic attribution expectations.
OpenCourt reports every online sale to Meta as a single Purchase event — the sale type lives in the event parameters, not the event name. This page shows you how to read those parameters, break out sale types for optimization and reporting, and set the right expectations when comparing Meta's numbers to OpenCourt's.
One event name, typed by parameters
In Meta's event list you'll see Purchase for everything — a court booking, a store order, a membership. What kind of sale it was is carried in the parameters:
| Parameter | Example value |
|---|---|
| Event name | Purchase |
value | 89.00 — net cash captured, after promos/passes/credits |
content_category | "membership" |
content_name | "Unlimited Monthly" |
event_type | Not sent on a membership. On a league registration this row would read "League" |
content_categories | "membership" — every category in the order, comma-joined |
is_new_customer | true |
The content_category buckets
| Bucket | Meaning |
|---|---|
membership | A first-time membership purchase (also fires Subscribe) |
membership_renewal | A recurring membership renewal payment |
space | A court, bay or lane booking — someone reserving your space |
event | A registration for something on your schedule: open play, a player fee, a league, clinic, tournament or program. event_type says which |
day_fee | A day-pass / entry fee |
add_on | An equipment rental added to a booking (a ball machine, a paddle) |
membership_presale | A deposit taken before the club opens. Kept separate from membership so an acquisition campaign can exclude deposits |
pass_package | A punch card or lesson bundle bought up front |
store | An online store / pro-shop order |
coach_lesson | A coaching lesson purchase |
gift_card | A gift card purchase |
An order that mixes types is filed under the most important one: a membership sale that also books a court is
a membership, and a booking with a ball-machine rental attached is a space. Every individual line still
carries its own type inside contents.
Telling programs apart with event_type
Anything attached to your schedule carries event_type, which is one of OpenPlay, OpenGame, League,
Clinic, Tournament, Lesson or Other. This is what you filter on to build a leagues-only or
clinics-only conversion.
The same list is summarized, alongside every other field OpenCourt sends, in What OpenCourt sends to Meta and Google.
Recipe: break out sale types with Custom Conversions
Meta optimizes and reports per event name, so to target or report on a specific sale type, create a Custom Conversion filtered on content_category:
- In Meta Events Manager, open Custom Conversions and create a new one.
- Choose your OpenCourt data source and select the
Purchaseevent. - Add a rule on the
content_categoryparameter — for example:- "New memberships" —
content_categoryequalsmembership - "Court and bay bookings" —
content_categoryequalsspace - "League signups" —
content_categoryequalseventandevent_typeequalsLeague(swap inClinicorTournamentfor those). Both halves matter:event_typetravels with anything on your schedule, so a court booked for a league session carriesLeaguetoo — theeventbucket is what narrows it to an actual registration - "Anything booked on the schedule" —
content_categoriescontainsspaceorevent. A rule oncontent_categoryequals both can never match, because one order carries one value - "Any order that included a membership" —
content_categoriescontainsmembership. Use this whenever a cart can mix types;content_categoryonly ever names the single most important one - "One specific program" —
content_idscontains the event's ID, which you can copy from the event's URL in your admin panel
- "New memberships" —
- Name and save it. It's now available as an optimization goal in ad sets and as a column in reporting.
Attribution expectations
These are server-side events, matched to ad clicks through hashed identifiers and click IDs — so expect Meta's attributed conversion counts to differ from OpenCourt's revenue reports. Some purchasers won't match to a Meta account, some sales were never ad-driven, and Meta only counts conversions inside its attribution windows. A gap between the two numbers is normal; use OpenCourt as the source of truth for revenue and Meta for relative performance between campaigns, ad sets, and creatives. Also remember that admin and front-desk (POS) sales are excluded by design — see What OpenCourt sends for the full data policy.
Related articles
- Set up Meta conversion tracking
- Send a test event
- What OpenCourt sends to Meta and Google — the full field list and privacy policy
- Monitor and troubleshoot
What OpenCourt sends to Meta and Google — and what it never sends
A plain-English breakdown of the conversion data OpenCourt shares with ad platforms, how it protects your customers' privacy, and what stays private.
Monitor and troubleshoot
Check your conversion tracking health inside OpenCourt and fix the most common problems — missing test events, failing sends, and numbers that look off.