Conversion pipeline (tracker)

‹ Dashboard Report › Sheet fill › Accounts ›

Flow: partner → POST /cpa/{cid}/{payout}/{orderid}/{product} on the tracker service → forwards to Voluum → enqueues → background worker drains queue (Voluum lookup → bid-check guardrail → Google Ads ConversionUploadService). Page below is read-only — the worker drives state changes.

⚠ Past incident: a prior offline-conversion upload caused Google Ads to auto-flip to smart bidding, burning $30K in 24h. The worker aborts (status=blocked) if any ENABLED campaign is on Target CPA / Maximize Conv / Max Conv Value / Target ROAS. Per-account live flag defaults to 0 (dry-run); flip to 1 in /accounts only after verifying Auto-apply recommendations are OFF.

Queue state

Pending
0
In progress
0
Success
2
Failed
0
Blocked
0
Skipped
0

Per-account

Account conv_action_id Live flag Waiting Success Failed Blocked Total
ldnet 7610116773 live=0 dry-run 0 2 0 0 2
ldnow 7610096826 live=0 dry-run 0 0 0 0 0

Recent events (last 2)

id Received clickId product payout gclid GAds campaign Account Status att. Notes
2 2026-05-14T08:58:25 wm4f1bkotult5e… female Cj0KCQjwqPLOBh… 20988777024 ldnet success 0
1 2026-05-14T08:56:57 wm4f1bkotult5e… female Cj0KCQjwqPLOBh… 20988777024 ldnet success 0

Wiring

Partner postback URL pattern (this replaces your PHP script):
https://trk.aplus.io/cpa/{cid}/{payout}/{orderid}/{product}

{cid} = Voluum clickid · {payout} = numeric · {orderid} = unique per conversion · {product} = event type (male / female currently progress through the worker; others are stored as skipped).

Idempotency: UNIQUE(cid, product, orderid). Duplicate postbacks are no-ops. Retry policy: up to 8 attempts with 10s → 1h exponential backoff before terminal failed.