Where pixel IDs come from
Each event exposes apixelIntegration object on its public payload
(GET /api/events/public/{slug}):
pixelIntegration itself may be null when the organizer hasn’t configured
any pixels. Each field is independently nullable. meta_pixel_id may be
comma-separated for organizers running multiple Meta pixels — initialize
each independently.
Required pixel IDs to initialize
On every page that’s part of the buyer journey (event detail → tickets → checkout → order confirmation), initialize:
The platform pixel is non-negotiable. Without it UnderPass loses
cross-tenant attribution, and your fraud/refund alerts will degrade.
Events to fire
Currency is always
"COP" unless the event explicitly states otherwise.
value is the integer COP amount (no decimals — COP has no minor unit).
Reference implementation
Drop this into your frontend once. Plain JavaScript — no framework dependency.When to fire — in the buyer journey
Common mistakes
Firing Purchase on the success_url page load instead of on confirmed status
Firing Purchase on the success_url page load instead of on confirmed status
The buyer’s return-from-payment page loads BEFORE the order has actually
confirmed (Bold webhook arrives asynchronously). Firing Purchase on page
load over-reports — every cancelled-but-redirected buyer counts as a
purchase. Always wait for
getCheckoutStatus to return confirmed
before firing.Forgetting the platform Meta pixel
Forgetting the platform Meta pixel
If you only init the event’s own pixel, UnderPass-level conversion
reporting breaks. The platform pixel
749891594864955 is required on
every page. Init it FIRST, then any organizer pixels.Firing InitiateCheckout multiple times on form re-render
Firing InitiateCheckout multiple times on form re-render
React/Vue re-renders shouldn’t refire InitiateCheckout. Fire exactly once
per submit click, ideally in the same handler that calls
/api/checkout/start. Guard with a useRef flag if needed.Wrong currency or fractional value
Wrong currency or fractional value
Currency is
"COP" for Colombian Pesos. Values are integer COP — no
decimals. Don’t divide by 100; that’s for currencies with minor units.Missing eventID on Purchase
Missing eventID on Purchase
Meta’s Conversion API (server-side) will eventually deduplicate against
your client-side Purchase event. Always pass
{ eventID: orderId } so
UnderPass can match the two halves.What we do NOT need you to fire
For clarity — these are handled by UnderPass server-side and you should not fire them:Lead/CompleteRegistration(no buyer registration step exists)AddToCart/AddPaymentInfo(UnderPass’s checkout is single-step)- Subscription events (no recurring revenue model)

