Skip to content
reebuff

Tracking

How tracking works

Every ad click lands with a signed click id. Tracking means sending it back with the event it led to.

The click id

Landing URL
https://yoursite.com/pricing?utm_source=freebuff&bfcid=bfc_1.eyJ…
  • Opaque and signed. Pass it through unchanged; up to 600 characters.
  • Capture it before your router rewrites the URL.
  • Store it with the visitor, then the account. The pixel writes it to a 30-day bfcid cookie for you.
  • Keep it out of analytics, logs and shared links.
  • Report within the campaign's attribution window (up to 30 days), with the real occurredAt.
Capture, server-side
// On landing: keep it, verbatim.
const bfcid = new URL(request.url).searchParams.get('bfcid')
if (bfcid) session.set('freebuff_click_id', bfcid)   // or a 30-day cookie

// On conversion: store it on the account, then POST it (Server postback).

What bills

  • Display campaigns bill the click, at most one per developer per campaign per Pacific day.
  • Agentic campaigns bill the developer's Accept.
  • Conversions never charge. They are reported, and they steer delivery toward developers who convert. The one exception is a campaign priced per conversion on an agreed rate card.
  • Test conversions are badged, excluded from totals, never billed.

Three ways to report

MethodHowCredential
Site pixelOne script tag. A goal rule or a freebuff() call counts the conversion.None
Server postbackYour backend POSTs click id + event + event id.API key
Identity matchSame postback with an email instead of a lost click id.API key

Run both if you like, but report each action from one of them.

Event ids

  • eventId is your durable id for the event, namespaced: signup_completed:4821.
  • Same id again → 200 deduped. Retries are free.
  • Same id on a different click → 409. That is a bug.
  • Different event, different id. Report every funnel step.
  • If both the pixel and your server report one action, give each its own id. Freebuff pairs them and counts one.

Testing

  1. Create a test click

    Events → Verify, or create_test_click over MCP. Valid 30 minutes.
  2. Open it and do the real action in a test account.

  3. Expect 200 accepted, then 200 deduped on a replay.

  4. See it in Events, marked Test, zero charge.

A test proves transport and idempotency. After launch, reconcile your first real event id against the console.