tracker-ops · git:20261014.8613433 · 2026-10-14 · sha256 2850d59cb7696dfe
tracker-ops git:20261014.8613433A
Immutable. This exact content never changes and is served at /api/v1/blob/2850d59cb7696dfe.
---
name: tracker-ops
description: "Counting ops for Facebook/Meta affiliate traffic, tracker or no tracker: Keitaro + Binom APIs (keys, reports, cost push), postback/S2S, no-tracker lane (PWA builder log + affiliate network API/postbacks + own sheet, Scaleo recipe), metric discipline (payout event vs all-conversions, timezones, CPL math), Meta-vs-tracker reconciliation, status→CAPI event mapping, daily spend sync. Principles port to other trackers and networks."
---
# Tracker Ops
Count money correctly and automate tracker work for Meta traffic. Keitaro and Binom
specifics below; the metric rules and daily sync port to any tracker.
## Pick the lane first
| Lane | Chain | Count truth | Cost lives in | Money metric |
|---|---|---|---|---|
| Tracker (Keitaro; Binom the same, `02`) | ad → tracker → offer, campaign-name contract (`03`) | tracker payout status (rules 1-2) | tracker, daily cost push | CPL/CPA + ROI on `sale_revenue` |
| No-tracker (solo) | ad → PWA builder (click/install log, fires pixel/CAPI) → affiliate network | network report + postbacks per goal (`05`) | own sheet: FB insights spend | cost per dep only, no revenue/ROI |
Rules 3-5 hold in both lanes (no-tracker: read "tracker" as "affiliate network
report", and for rule 5 as the PWA builder's click log). Rules 1-2 are tracker
semantics; rule 6 has a line per lane.
## Metric rules (NEVER violate)
1. "Conversions" (Keitaro) can exceed your payout-lead count, but the ratio is
integration-specific, not a law: the same subid+status OVERWRITES; extra records
come only from distinct `tid`s or a real multi-step funnel. Never do CPL math on
"conversions": the payout metric is ONE event/status, get it from the TL in
writing.
2. Metric names aren't portable. Keitaro `leads` = conversions STILL in status lead
(lead→sale flips in place): regs = leads + sales, deps = sales; `leads` alone
overstates reg→dep (field: 11 vs 17). Binom "leads" ≈ all conversions. Verify per
tracker per setup.
3. Cross-check: Meta lead count ≈ tracker lead count. A big gap = wrong metric or
broken tracking: reconcile before reporting. The tolerance (e.g. ±20%) is an
account-specific baseline from one reconciled day, not a constant. Meta counts
view-through the tracker never sees: compare Meta click-only (`03`).
4. Daily CPL in the AD ACCOUNT timezone for spend and leads. The account timezone is
effectively permanent (changing it means a new account; operating contract #5 in
`../senior-buyer-ops/SKILL.md`): reconcile in the tracker, never by eye. No-tracker:
convert the network's conversion timestamp to the account tz first (`05`).
5. Rows with unsubstituted `{{...}}` macros: exclude from performance analysis, then
classify the cause: bots/crawlers, but also a broken URL template, a
misspelled/unsupported macro, or manual/direct traffic. Fix your own template before
blaming traffic.
6. Money = `sale_revenue`, never `revenue` (it includes lead_revenue; payout on lead
postbacks fakes ROI: field case $9,820 vs $1,650 real). Check lead_revenue = 0.
No-tracker: no revenue column; deps (CPA goal, distinct click) from the network
report, cost per dep = FB spend ÷ deps (`05`, `03` routine).
## Route references
| Need | Reference |
|---|---|
| Keitaro: key, report/build, measures, update_costs, postback/S2S, postback drill, gotchas | `references/01-keitaro.md` |
| Binom: legacy URL-param + v2 REST, reports, cost, postback/S2S | `references/02-binom.md` |
| CPL math, Meta↔tracker reconciliation, anti-fraud metrics, cohort nowcasting, status→CAPI event contract, Telegram bot CAPI without pixel, multi-tracker sync + conversion ledger, ATT, mapping, daily routine | `references/03-metrics-and-math.md` |
| No-tracker lane: affiliate network API (Scaleo), per-goal/per-status postbacks, reconciliation, dedupe, dep-alert worker, PWA click id as join key | `references/05-affiliate-network-postbacks.md` |
## Non-negotiables
- Work only on YOUR campaign IDs; every call carries a campaign filter. Other buyers'
campaigns are read-never-touch.
- Tracker lane: no cost push = no CPL/ROI (report cost is 0, or fake: a CPA/CPS cost
model with auto ON adds fixed cost per conversion, `01`). Push daily, keyed on ids,
in the ad account's tz and currency:
`metaops keitaro push` (`../meta-grey-ops/references/16-metaops-agent-cli.md`
§ Keitaro; dry run first, then `--confirm PUSH`). Overwriting a period is idempotent,
but cost lands only on clicks matching range+filters: reconcile source spend vs
tracker cost after each push.
- No-tracker lane: nothing to push. Cost = FB spend per campaign/state/day (insights,
account tz) in your sheet; deps = network report (CPA goal, player state from the
report, not ad geo), cross-checked against postback alerts; cost per dep on full days
only (`05`, `03` routine).
- API keys are write-once; keep them in a gitignored secrets file, never in chat,
commits or shared docs.