XTRACKER

Destinations: Facebook CAPI, webhooks and S2S postbacks

The three places XTRACKER can send your conversions, how to configure each, and how durable delivery with retries and backoff keeps you from losing events.

A destination is where matched events go. XTRACKER supports three kinds, and one event can fan out to several at once.

The destinations list with live delivery status

Delivery pipeline

The three kinds

Facebook CAPI (fb_capi)

Server-side Conversions API. You provide a pixel id and an access token; XTRACKER builds the CAPI payload and sends Purchase, CompleteRegistration, etc. (per your event map). For deposits, value and currency are forwarded as custom_data so Meta can optimise on revenue.

Webhook (webhook)

A generic HTTP callback to a URL you control. XTRACKER POSTs a JSON body for every matched event. Use it to push conversions into your own backend, a data warehouse, or a no-code tool. See the webhook payload reference.

S2S postback (s2s_postback)

Affiliate-network style. You give a url_template with macros like {uid} and {value}; XTRACKER fills them in and fires a GET (or POST). See the postback macro reference.

Adding one is the same flow for every kind — pick the kind, fill its fields, save:

Adding a destination

Durable delivery

Events are never fire-and-forget. The flow is:

  1. An event lands in event_inbox (durable, deduped).
  2. It fans out to one event_outbox row per destination.
  3. A worker dispatches each row and records the outcome.

If a destination is down or returns a transient error (408, 429, 5xx), the row is retried with exponential backoff — the first retry after ~30s, capped, up to a maximum number of attempts before it's marked failed_permanently. A permanent error (a bad URL, a 4xx that isn't retryable) fails fast without burning retries.

This means a momentary outage at Meta or your endpoint never loses a conversion.

Proxies

Each destination can route its outbound traffic through a per-destination proxy — useful for Meta pixels that must originate from a specific region.

Statuses on the dashboard

The delivery health widget shows, per destination: sent, pending, failed, failed_permanently. Watch failed_permanently — that's where a misconfigured URL or a rejected token surfaces.

Next