Most. Help

Tracker ROI vs ROAS: Why the Numbers Never Match

Published Sep 14, 2026Updated Sep 22, 20267 min readIntermediate
Hand-drawn calculator showing 3.2 on one screen and 2.1 on another, an orange coin split into two unequal halves between them, and a magnifying glass over the spend column
What you'll learn
  • Why tracker ROI and Ads Manager ROAS are different formulas, not two measurements of one thing
  • Which side of each number - numerator or denominator - diverges first
  • How hold, clawbacks, and currency convert reported money after the fact
  • A reconciliation procedure that finds real leaks instead of chasing phantom ones
Intermediate
1views

The tracker ROI versus ROAS standoff is the weekly ritual of every media buyer: the tracker reports 40 percent ROI on confirmed payouts, Ads Manager reports a 2.4 ROAS on attributed revenue, and someone concludes the tracking is broken. It is not. The two numbers are different formulas over different data - the tracker divides your money by your money, while Ads Manager divides the revenue value you transmitted by the spend it measured - and each one is internally correct. This guide dissects both sides of the division sign, walks every documented reason the results diverge, and ends with a reconciliation procedure that finds real leaks instead of chasing phantom ones.

Conversion-count divergence - leads versus sales, windows, duplicates - is covered separately in the three-systems guide; this page stays on the money.

Two Formulas, Not One Measurement

Write both formulas side by side - with conversion identity tying events to clicks - and the mismatch stops being mysterious:

tracker ROI   = (confirmed payouts - spend) / spend
Ads Manager ROAS = attributed revenue value / attributed spend

Numerators already disagree by construction. The tracker's numerator is the payout the network confirmed - after holds, after rejections, net of clawbacks. Ads Manager's numerator is the sum of value fields inside the events you chose to send - including lead events with no value, including sales the network later rejected, minus everything you never sent. Denominators disagree too: your tracker's spend is what you imported or entered; Ads Manager's spend is what the platform billed, on its own clock and currency.

No tracking setup makes these converge, because they are not two measurements of one quantity. They are two reports answering two different questions: "is my business profitable?" versus "how much revenue does the platform see per its dollar?" The craft is keeping both honest - and knowing which question each number answers.

Where the Numerator Diverges

Every stage of the affiliate chain reshapes the revenue side:

  1. Hold and rejection timing. The tracker's revenue only counts confirmed payouts; the platform's revenue counts events already sent. During the hold window the platform's number leads; after rejections, the tracker's number falls behind reality less - the status-policy trade-off from the hold guide applied to reporting.
  2. Unsent conversions. Events you filtered - trash statuses, junk segments - carry no value to the platform but no money to you either; symmetric. Asymmetric cases hurt: approved sales that were never sent (a delivery gap) inflate platform-blind money that the tracker sees alone.
  3. Duplicates. One sale sent twice (such as a browser-pixel and server-CAPI deduplication failure without a shared event_id) doubles the platform's revenue numerator while the tracker shows one payout - the duplicate-conversions problem in money form.
  4. Value quality. Events with empty value count as conversions without contributing revenue; a flat-event stream makes Ads Manager's ROAS measure counts wearing a money costume.

The payout field feeding your tracker's numerator is documented explicitly: Keitaro's postback payout carries the network's reported money, "positive and negative values are supported" for clawbacks, and currency converts into the tracker's base (Keitaro postback documentation).

Where the Denominator Diverges

Spend splits on three documented seams:

  1. Import timing. Platform spend posts continuously; tracker-side spend exists only if imported - Keitaro's postback contract has a cost parameter "for CPA and RevShare models," but many setups leave spend out of the daily loop entirely and compare against a stale number.
  2. Currency conversion. The platform bills in the account's currency; the network reports payouts in its own; the tracker converts to its base. A tracker ROI computed on converted payouts against unconverted spend - or the reverse - shifts the ratio by the exchange margin.
  3. Costs outside the platform. Tracker ROI can include content, proxies, and staff; Ads Manager ROAS sees only its own spend. Neither is wrong - they are answering for different cost bases.

The rule for reconciliation: fix the currency edge once (usually "tracker base = account currency"), import spend on a schedule, and never mix cost bases inside one ratio.

The Timing Seam: When Each Book Closes

Money crosses the chain with delays, and each book closes on its own schedule. A sale ordered on the last day of the month lands in the platform's report on the day its event was sent, in the network's balance after confirmation, and in the tracker's ROI under whichever period your report cut assigns it to. Attribution windows add a second layer: the platform joins a conversion to the click inside its own documented window, so late conversions can land attributed to nothing - revenue the tracker sees, the platform's ROAS never does, even though the event arrived fine (the attribution-window picture covers the mechanics).

Practically, the discipline is cohort thinking: compare money for cohorts of clicks old enough that hold windows and confirmation lags have finished - the same rule as approve rate math, applied to money instead of counts.

The Reconciliation Procedure

  1. Align the cost basis. Same currency, same period, same spend source on both sides of the comparison.
  2. Align the revenue scope. Decide which events the platform's numerator should contain - sales only, or the lead stream too - and confirm the delivery layer sends exactly that.
  3. Compare on settled cohorts. Pick clicks older than the longest hold window; compute tracker ROI on their confirmed payouts and Ads Manager ROAS on the events they produced.
  4. Classify the residual. Explained by scope (unsent events), by duplicates (identity drift), or by timing (windows) - each has a fix from the linked guides. Unexplained by all three: a real leak, usually in delivery or value passing.
  5. Repeat monthly. A standing reconciliation catches leaks while they are small; the postback troubleshooting checklist covers the plumbing side.

When the residual points at value rather than counts, the payout-as-value guide and its clawback section are the usual fixes.

Tracker ROI vs ROAS: Frequently Asked Questions

Frequently asked questions

Sources

Sources

One truth, both books
  • Audit the events: Pixel Activator fires free valued test events so both books price the same conversion.
  • Value on every cycle: Most keeps payout, currency, and scope consistent between tracker and platforms.
Was this guide helpful?
Author
Most Team
Справочная служба

Официальные руководства и глоссарий для платформы Most и Активатора пикселей.

Topic
Affiliate Conversion Tracking: The Complete Guide
Main article of the topic
Related articles

Related guides

Affiliate Conversion Tracking: The Complete Guide

The entry point to our affiliate tracking cluster: how a conversion that lands on someone else's offer travels through a postback, a tracker, and a Conversions API call, and where each specific failure has its own deep-dive guide.

16 min

Pixel Warming Without Burning Budget: A Practical Sequence

Warming is not a ritual - it is an ordering problem. Verify delivery before spend, feed clean well-attributed events while the baseline forms, and scale on evidence. This guide turns pixel warming into the sequence buyers actually follow, with the platform documentation behind each step and the affiliate-specific twists of warming a pixel you feed by postback.

7 min

Keitaro Macros: The S2S Postback and Sub ID Reference

Every Keitaro S2S postback is a template, and the placeholders are its vocabulary. This reference collects the documented macros in working groups - identifiers, money, statuses with mappings, timestamps, campaigns and offers, geo and device - plus the sub ID fields and the encoding and currency rules that keep substituted URLs intact.

6 min

Conversion Value Payout: Passing Affiliate Payout as Event Value

A flat Purchase counts actions; a Purchase with the network's payout counts money. This guide traces the payout number from the network postback into the event's value and currency fields, then through the messy parts - partial approvals, rebills, clawbacks, and currency mismatches - to a value policy the algorithm can actually optimize on.

8 min