Ad and Conversion Tracking

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:

ParameterExample value
Event namePurchase
value89.00 — net cash captured, after promos/passes/credits
content_category"membership"
content_name"Unlimited Monthly"
event_typeNot 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_customertrue

The content_category buckets

BucketMeaning
membershipA first-time membership purchase (also fires Subscribe)
membership_renewalA recurring membership renewal payment
spaceA court, bay or lane booking — someone reserving your space
eventA registration for something on your schedule: open play, a player fee, a league, clinic, tournament or program. event_type says which
day_feeA day-pass / entry fee
add_onAn equipment rental added to a booking (a ball machine, a paddle)
membership_presaleA deposit taken before the club opens. Kept separate from membership so an acquisition campaign can exclude deposits
pass_packageA punch card or lesson bundle bought up front
storeAn online store / pro-shop order
coach_lessonA coaching lesson purchase
gift_cardA 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:

  1. In Meta Events Manager, open Custom Conversions and create a new one.
  2. Choose your OpenCourt data source and select the Purchase event.
  3. Add a rule on the content_category parameter — for example:
    • "New memberships"content_category equals membership
    • "Court and bay bookings"content_category equals space
    • "League signups"content_category equals event and event_type equals League (swap in Clinic or Tournament for those). Both halves matter: event_type travels with anything on your schedule, so a court booked for a league session carries League too — the event bucket is what narrows it to an actual registration
    • "Anything booked on the schedule"content_categories contains space or event. A rule on content_category equals both can never match, because one order carries one value
    • "Any order that included a membership"content_categories contains membership. Use this whenever a cart can mix types; content_category only ever names the single most important one
    • "One specific program"content_ids contains the event's ID, which you can copy from the event's URL in your admin panel
  4. 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.