Ad and Conversion Tracking

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.

Everything you need to keep conversion tracking healthy lives inside OpenCourt — no log-diving in Meta or Google required.

Your dashboard in OpenCourt

Open Admin → Settings → Ad and Conversion Tracking. Each connected provider has a health card showing:

  • Sent / Failed (7d) — how many events went out and how many failed over the last 7 days.
  • Last sent — when the most recent event went out.
  • A red "Sending is failing" banner when recent sends are failing — this is your one signal that something needs attention. No banner, and Sent is climbing? You're healthy.

Below that, the Recent conversion events table lists every event OpenCourt captured. Click any row to open a detail slideout with the exact request and response payload and a Copy button.

OpenCourt's Conversion tracking health card and the Recent conversion events table

Status glossary

StatusMeaning
SentThe event was delivered and the platform accepted it.
FailedDelivery was attempted but the platform rejected it — see the slideout for the response.
Not sending yetThe event was captured but not sent yet. This is normal, not an error — it's expected until your Conversions API token is live. Once your token is saved and working, new events send for real.

Symptom → fix

Test events don't appear in Meta

Meta's Test Events tab is a live listener — open it first, keep it open, then send, and allow up to a minute. And the test code in OpenCourt must match the one in Meta's tab exactly — a wrong code still reports "Sent" but lands the events in a bucket you can't see. Full walkthrough: Send a test event.

The red "Sending is failing" banner is up

Your Conversions API token was most likely revoked or is invalid. Generate a new token in Meta and paste it into OpenCourt — the steps are in Set up Meta conversion tracking. Check the failing rows' slideouts to confirm the platform's error response.

A Custom Conversion stopped counting bookings

Court, bay and lane bookings used to report as content_category event. They now report as space, and the old court value is gone. If you built a Custom Conversion on content_category equals event, it still counts league, clinic, tournament and open-play registrations — but no longer counts bookings. Add a second Custom Conversion on content_category equals space to count them again. If you want one conversion covering both, build the rule so it matches event or space — not a rule that requires both, which nothing can satisfy. The recipe is in Understand your conversion data.

Expect a step change in volume around the release date. That is the rename, not a drop in real bookings.

Different symptom, worse outcome. Google Ads credits a sale to the conversion action you mapped against its order type. If your map still has a court row, nothing will ever match it — move that resource name to the space row in Settings → Ad and Conversion Tracking → Google Ads. And make sure the default row is filled: an order type with no mapping, and any charge OpenCourt cannot classify, falls back to default. With default empty those conversions are never uploaded, and no error is shown.

A sale is missing

Was it rung up by staff at the front desk (an admin or POS sale)? Those are excluded by design — ad platforms only need the sales your ads could have driven, and a front-desk sale isn't one. See What OpenCourt sends — and what it never sends.

Two events for one membership sale

Expected. A new membership fires Purchase + Subscribe — Meta uses one for revenue and one for subscription optimization. See Understand your conversion data.

Value looks lower than the price

Also by design: OpenCourt reports net cash captured, not the list price. Discounts, credits, and partial payments all reduce the reported value — so your ad platforms optimize toward real revenue. See What OpenCourt sends — and what it never sends.

Reported revenue is higher than what you actually kept

Refunds are not reversed. When you refund a booking or a membership, the original purchase stays in Meta and Google as reported revenue. Clubs that refund often will see ad-platform revenue — and return on ad spend — read better than reality. Always reconcile against OpenCourt's own reports. See What OpenCourt sends — and what it never sends.

A free booking or registration is missing

Expected. A sale that captures $0 — fully covered by a pass, account credit, or a 100% promo code, or a free event — sends no event at all. If a campaign's goal is free signups, talk to your OpenCourt contact before you launch.

A sale from the app isn't credited to an ad

In-app purchases are reported server-side, so the revenue arrives — but the browser pixel does not run inside the OpenCourt app, so those sales often land without a link to a specific ad. Send your ad traffic to the web booking pages instead. See Purchases made in the OpenCourt app.