Tracker Playbook
2.38K subscribers
3 photos
1 link
Repeatable systems for Voluum, Keitaro and friends: naming conventions, campaign templates, postback checklists and the exact setup steps to never lose a conversion to a config error.
Download Telegram
Channel created
Channel photo updated
Redirect health check — 5-step latency audit

Every hop in your redirect chain adds latency and a failure point. Audit monthly and after any infrastructure change.

— Count your hops. Open the offer link in a network inspector and log every 301/302. Target is 2 or fewer: tracker, then offer. Three-plus means you are leaking users.
— Measure time to first byte on your redirect domain. Over 200ms loses mobile traffic. Test from the GEO you actually run, not your home connection.
— Verify HTTPS end to end. One HTTP hop in the chain triggers a browser warning and kills conversion. Check every hop, not just the entry.
— Confirm the tracking domain is not on a public blocklist. A flagged redirect domain gets stripped by ad networks and antivirus. Check it before, not after, the ban.
— Test the fallback. Kill the offer URL and confirm your redirect rule sends traffic to a backup path, not a blank page or a tracker error.

Log the hop count and time to first byte each month. A redirect chain that grew from 2 hops to 4 over a quarter is the silent reason your conversion rate slipped.

Save this SOP. Run this before every launch.


Если тема зашла, посмотри @creator_playbook
Postback QA — 7-point pre-launch checklist

A broken postback means you optimize blind for hours. Verify before traffic, not after.

— Fire a manual test conversion from the network panel, confirm it lands in your tracker within 60 seconds
— Confirm the {click_id} / {cid} token in the postback URL matches the exact parameter your tracker reads (a tracker expecting cid ignores clickid silently)
— Check the payout token resolves to a number, not {payout} as literal text — a string breaks revenue math
— Verify the status parameter maps correctly: approved vs pending vs rejected each route to the right event
— Confirm HTTPS on the postback endpoint; mixed protocol calls get dropped by some firewalls
— Test a duplicate fire — your tracker must dedupe on click_id, not double-count
— Check the postback IP isn't rate-limited or whitelisted-out on your server

Log the test conversion ID so you can trace it end to end if numbers disagree later.

Save this SOP. Run this before every launch.
Campaign naming convention — the 6-field framework

Inconsistent names make reporting useless after 30 campaigns. Lock one schema and never deviate.

Format: GEO_VERTICAL_SOURCE_OFFER_ANGLE_DATE

— GEO: ISO country code, uppercase (US, DE, BR) — never "usa" or "United States"
— VERTICAL: fixed abbreviation list you write down once (NUTRA, GAMB, DATE, FIN)
— SOURCE: traffic source code (FB, GADS, PUSH, POP)
— OFFER: network offer ID, not the offer name (names change, IDs don't)
— ANGLE: your creative/funnel concept in one token (fear, social, discount)
— DATE: YYMMDD launch date for cohort tracking

Example: DE_NUTRA_PUSH_8841_fear_260613

Rules that keep it clean:

— Underscores between fields, never spaces or dashes inside a field
— Lowercase only for the ANGLE field so it's scannable
— Maintain the abbreviation list in a pinned doc; new verticals get added there first

This schema lets you filter "all DE push nutra" in two clicks across any tracker.

Save this SOP. Run this before every launch.
S2S vs pixel tracking — the decision checklist

Pick the wrong method and you lose 10-30% of conversions to ad blockers or cookie loss. Decide per campaign with this checklist.

Use server-to-server (S2S postback) when:

— The offer is a lead/sale that completes on the advertiser's server
— Your traffic source supports passing a click ID back (most do)
— You run push, pop, or native where pixels fire unreliably
— You need conversions resistant to ad blockers and ITP cookie expiry

Use pixel/JS when:

— You track on-page events the advertiser server never sees (scroll, add-to-cart)
— The network only offers a pixel and no postback option
— You're tracking pre-lander engagement, not the final conversion

The rule: S2S is the default for payout-bearing conversions. Pixel is a supplement for funnel insight, never the source of truth for revenue.

If you must use a pixel for payout, confirm the advertiser fires it server-side (image pixel), not client-side JS.

Save this SOP. Run this before every launch.
Worth your feed

@AboveFoldLab. Deep, evidence-based teardowns of why landers convert — load-time studies,… We read it, you probably should too.
Traffic distribution — rotation rules that don't waste budget

Distributing traffic across offers without rules just spreads your losses evenly. Set explicit distribution logic.

The three valid modes and when to use each:

— Weighted (e.g. 70/30): use when you have a proven control and one challenger. Never split unproven offers evenly — you double your sample-size-to-significance
— Round-robin equal split: use only in the first 100-200 clicks of a pure test where you have zero priors
— Rule-based (conditional): route by device, GEO sub-region, or ISP to the offer that converts that segment best

Distribution hygiene:

— Cap any single test arm at the traffic needed to reach significance, then auto-pause it
— Set a fallback offer for when an arm hits daily cap or goes inactive — never serve a dead link
— Log the distribution decision per click so you can reconstruct why a click went where
— Re-weight on conversion data, not click-through rate — CTR liars beat you on payout

Save this SOP. Run this before every launch.
Click ID pass-through — tracing the token end to end

If the click ID doesn't survive the full chain, your postback can't match the conversion and it shows as anonymous. Trace it deliberately.

The chain to verify:

— Traffic source generates click ID → passes into your tracker's incoming parameter
— Your tracker stores it and injects it into the offer URL token ({clickid} / {subid})
— Offer carries it through any advertiser-side redirect
— Advertiser returns it in the postback → tracker matches it to the original click

How to test:

— Append a known sentinel value (e.g. QA_TEST_001) as the click ID and follow it visually at each URL
— Confirm the value isn't truncated — some sources cap subid length at 32 or 50 chars
— Confirm no URL-encoding corruption: a click ID with special chars must be encoded once, not double-encoded
— Watch for parameter name collisions: source subid vs offer sub_id vs network aff_sub

Document the exact token name at each hop in a 4-row table per offer.

Save this SOP. Run this before every launch.
Migrating Voluum to Keitaro — the cutover checklist

Moving a tracker live without breaking active campaigns requires sequencing. Don't flip DNS first.

Pre-cutover:

— Export all offers, affiliate networks, and campaign URLs from Voluum to a sheet — IDs and tokens included
— Rebuild offers in Keitaro with matching postback templates; map Voluum's {cid} to Keitaro's {subid}
— Recreate traffic-source token presets so incoming parameters parse identically
— Set up identical campaign streams (distribution rules) and verify weights

Cutover sequence:

— Stand up the new Keitaro tracking domain and confirm SSL is valid
— Run one live test campaign on Keitaro with $5 budget — confirm click, conversion, and postback all register
— Update postback URLs in your networks to point at Keitaro (keep Voluum postbacks live in parallel for 48h)
— Swap campaign links source by source, lowest-spend first

Post-cutover:

— Reconcile 48h of overlap data — conversion counts must match within 2%
— Only then decommission Voluum links

Save this SOP. Run this before every launch.
Conversion reconciliation — closing the gap with the network

Your tracker and the network panel will disagree. The job is to know why, not to assume one is right.

Weekly reconciliation steps:

— Pull conversions by day from both your tracker and the network, same timezone (force both to UTC first — timezone mismatch is the #1 false gap)
— Calculate the discrepancy percentage per day, not just the weekly total — a clean week can hide one broken day
— If tracker is HIGHER than network: suspect double-fired postbacks or a dedupe failure on click_id
— If tracker is LOWER than network: suspect dropped postbacks, click_id mismatch, or blocked postback IP
— Match the conversion timestamp window: a conversion attributed at click-time vs approval-time shifts days
— Spot-check 5 individual conversion IDs end to end when the gap exceeds 3%

Acceptable gap: under 2%. Above 5% sustained means a structural tracking fault — stop scaling and fix first.

Log each week's gap percentage so you can spot a creeping trend before it costs real money.

Save this SOP. Run this before every launch.
New offer onboarding — the 8-step intake SOP

Every new offer enters the tracker the same way. Skip a step and you'll debug it under live spend.

— Record offer ID, network, payout, and payout model (CPA / CPL / RevShare) in your offer sheet
— Note approved GEOs and the exact allowed traffic types — running a banned source gets you shaved
— Copy the conversion postback template the network provides; identify their click_id token name
— Build the offer in the tracker with the destination URL and correct token placeholders
— Set the payout in the tracker to match the network (so revenue math is right even before postbacks)
— Configure caps: daily conversion cap and budget cap, mirroring the network's cap
— Add the offer's tracking domain to your allowlist if the network requires referrer/domain whitelisting
— Run the postback QA checklist with a test conversion before any real traffic

Flag the offer's hold/approval window so you don't panic when conversions show pending for 3 days.

Save this SOP. Run this before every launch.
Token reference table — stop guessing macro names

Every source and tracker names its macros differently. Guessing wastes test budget. Build one reference table and never guess again.

Maintain a sheet with one row per source, columns for each token:

— Click ID: Voluum {cid}, Keitaro {subid}, Binom {clickid}
— Source cost: most use {cost} but push networks vary ({bid}, {payout})
— Creative ID: {creative_id} / {banner_id} / {ad_id}
— Zone/placement: {zoneid} / {site_id} / {pub_id}
— GEO and device: confirm whether the source passes these or you derive them in-tracker

Rules:

— Curly-brace style differs: some sources use {token}, others [token] or ##token## — copy exactly
— Verify each token returns a real value in a test click, not the literal macro string
— When a source updates its macro list, update the table the same day

This table turns offer setup from trial-and-error into copy-paste.

Save this SOP. Run this before every launch.
Tracking domain health — keep your redirect domain alive

A flagged tracking domain silently kills delivery — clicks 403 and you blame the offer. Audit the domain on a schedule.

Monthly domain health checklist:

— Check the domain against major blocklists (it gets flagged by association if a neighbor on shared infra spammed)
— Confirm SSL certificate validity and expiry over 30 days out — an expired cert drops every click
— Verify DNS resolves from multiple GEOs, not just yours
— Test the domain isn't blocked inside Facebook/Google by pasting it in a message/ads preview
— Keep a warmed backup tracking domain ready, pre-SSL'd, so you can swap in minutes

Domain hygiene rules:

— Never run your main money domain as the click redirect domain — isolate them
— Use a fresh tracking domain per major traffic source to contain flag blast radius
— Rotate domains before they're burned, not after delivery already tanked

Keep a dated log of which domain serves which source so a swap doesn't break attribution.

Save this SOP. Run this before every launch.
Click fraud filters — the tracker-side rule set

You can't optimize on poisoned data. Filter bot and junk clicks at the tracker before they enter your reports.

Rules to configure in your tracker:

— Block known datacenter IP ranges (AWS, GCP, OVH) on consumer-traffic campaigns — real users aren't in datacenters
— Filter clicks with no User-Agent or a known bot UA string
— Set a minimum time-on-prelander threshold; sub-1-second "visitors" are bots or misfires
— Flag duplicate click IDs from the same IP within seconds — a single user can't click 40 times
— Block proxy/VPN ranges only if the offer's GEO rules require it (some legit traffic uses VPN)
— Cap clicks per IP per hour and route excess to a junk stream you don't pay attention to

Handling:

— Don't delete filtered traffic — route it to a separate stream so you can audit your filter's false-positive rate
— Review filtered volume weekly; if it exceeds 20% of a source, the source is the problem, not your filter

Save this SOP. Run this before every launch.
Split test sign-off — when an A/B result is real

Calling a winner early is how you scale a loser. Use a fixed sign-off checklist before declaring a test done.

— Set the minimum conversion count per arm BEFORE launch — aim for at least 25-30 conversions per variant, not per click count
— Confirm both arms received roughly equal traffic (within 5%) — uneven splits invalidate the comparison
— Verify both arms ran across the same time-of-day and day-of-week window — Monday vs Saturday traffic differs
— Check the result holds across your main segments (device, top 3 GEOs) — a blended winner can hide a segment loser
— Confirm the lift exceeds your noise floor: a 3% difference on 200 clicks is noise, not signal
— Rule out an external cause: an offer cap, a creative disapproval, or a tracking gap mid-test

If the test fails any line, it isn't done — extend it or rerun clean.

Document the winning variant's ID and the sample size that decided it.

Save this SOP. Run this before every launch.