Cash Flow Inventory
Menu
Documentation

Reading the ROAS report and Insights

How to read every figure on the attribution ROAS report and the Insights tab, with worked examples, and which decisions each one supports.

Where in the app
IntegrationsCFI Order AttributionROAS report
Last reviewed
Reading time
7 min

What it is

The ROAS report tab shows, per ad platform and campaign, how many orders were credited, the net revenue, the profit, the ad spend, and two ratios: ROAS and POAS. The Insights tab looks at the whole business: overall ad efficiency, the cost of new customers, customer value over time, what each platform claims, and two estimates.

Why it matters: ad platforms judge a campaign by revenue they think they caused. Your business lives on profit after the goods, the courier, the payment fees and the refused parcels. The report shows both, side by side, from your own books.

Note Example (one month, in your currency): Campaign A spent 20,000 and brought 64,000 of net revenue: ROAS 3.2×. After goods cost 30,000, courier charges 9,000, payment fees 1,000 and refusals 6,000, profit is 18,000: POAS 0.9×. Campaign B had ROAS 2.4× but POAS 1.3×, because it sold higher-margin products. B is the better campaign.

Who it is for

  • Owners deciding where to put the ad budget
  • Marketing staff and agencies
  • Accountants checking ad spend against the books

Before you start#

  • Access to Integrations. Profit, cost and POAS figures also need the Gross profit report right, and margins must not be hidden from you. Without them the report shows revenue only, and says Cost and profit figures need the Gross profit report right.
  • Order attribution set up and, for spend, at least one ad account connected or spend imported from a file.

Step by step#

  1. Open Integrations › CFI Order Attribution and choose the ROAS report tab.
  2. Choose the Period: 7, 30, 90, 180 or 365 days, or Custom dates and Apply.
  3. Choose a comparison: No comparison, Compare with the previous period or Compare with a year earlier.
  4. Choose the Credit model (see below) and the Lookback window (7, 28 or 90 days).
  5. Choose the Date basis: By order date (what the books show) or By click date (what marketers compare with spend).
  6. Choose the Value: ROAS (net revenue) or POAS (profit after every cost).
  7. Read the tiles, the From revenue to profit card and the daily chart (Show as a table lists the same days).
  8. Choose Orders on a campaign row to see its orders. Choose an order number to open its progress.

What each control means#

ControlMeaning
First touchThe first visit from an ad or campaign gets the whole order (the default)
Last touchThe last visit before the order gets the whole order
Last non-direct clickThe last visit from an ad, a campaign or another site; typed-in visits are skipped
LinearEvery visit gets an equal share
Position basedFirst and last visit get 40% each; the visits between share 20%
Time decayNewer visits weigh more: a visit 7 days earlier counts half as much
Data-drivenLearned from your own orders. Needs at least 30 orders with visits from 2 or more channels; until then the report uses linear and says why
Lookback windowOnly visits in that many days before the order can get credit. An order with no visit in that time counts as direct

How credit works on the report explains each model in plain words.

What you see#

The campaign table (example)

PlatformCampaignOrdersNet revenueSpendROASPOAS
facebookEid sale118.0172,40041,0004.20×1.10×
googleBrand search54.596,3009,8009.83×3.40×
tiktokNew arrivals31.538,90015,0002.59×0.62×
facebook(unattributed spend)——3,200——

How to read it:

  • Orders can have decimals: with shared credit models, an order is split between visits (Weighted orders).
  • Net revenue is the order total without tax and without shipping charged, less returns, credit notes and refunds.
  • ROAS = net revenue ÷ spend. POAS = profit ÷ spend. POAS above 1× means the ads paid for themselves after every cost.
  • (unattributed spend) is spend that matched no order. It is never spread over other campaigns, so the rows add up to the total.
  • A row marked matched by name has no campaign id; it breaks when someone renames the campaign. Add utm_id with the UTM template.

From revenue to profit

LineExample
Revenue (ex tax, ex shipping charged)320,000
Refunds and returns−12,400
Net revenue307,600
Shipping and fees charged to customers+18,000
Cost of goods−151,000
Shipping paid (courier bills)−27,500
Payment fees−3,100
Return shipping and COD refusals−9,800
Profit (contribution)134,200
Ad spend−69,000
Profit after ads65,200

Cost of goods is what the books posted for the order. For goods not picked yet it is estimated from the order lines; each order says posted, partly estimated or estimated. A refused cash-on-delivery parcel brings no revenue, but its shipping and return costs stay against the campaign (marked COD returned in its orders).

Insights

  • Executive KPIs (every sales order, attributed or not): MER (all net revenue ÷ all ad spend), nCAC (ad spend ÷ customers whose first-ever order is in the period), aMER (new customers' first-order revenue ÷ ad spend), New-customer revenue, Contribution after ads. Each is compared with the period before.
  • Customer lifetime value by cohort: customers grouped by the month of their first order and where it came from, with what they bought within 30, 60, 90, 180 and 365 days. A dash means the cohort isn't that old yet. Payback is the first column where profit per customer reaches the cost of getting that customer.
  • What the ad platforms say vs what CFI counted: Platform conversions, Platform value and Platform ROAS next to CFI orders, CFI net revenue and CFI ROAS. CFI credits each order once (last non-direct click); each platform counts by its own rules, so platforms usually claim more. Neither number is "wrong".
  • Media mix model (Estimate): weekly net revenue against each platform's spend, with Modelled ROAS, Next unit of spend returns, Carry-over and a Confidence. It needs 26 weeks and shows correlation, not proof.
  • Plan a geo-lift test (Estimate): choose test regions from your customers' regions and the lift to detect (5%, 10% or 20%); the plan says how many weeks to run. The app never pauses ads for you.

Daily use#

A cash-on-delivery shop in Bangladesh

Use POAS (profit after every cost) and Last non-direct click over 30 days. Campaigns with many refusals show a high ROAS but a low POAS. Open Orders on such a campaign: the COD returned rows show where the money went.

Orders without consent still carry their campaign label, so they are credited. Compare CFI ROAS with Platform ROAS on Insights: the platform's figure is often higher, because it counts views and modelled conversions.

A multi-location retailer

Use MER and nCAC on Insights for the whole business, because shop-counter sales are influenced by ads too, but never carry a click.

Good practice#

  • Decide on POAS, report on ROAS. Ad platforms only understand revenue; your business needs profit.
  • Keep one credit model for decisions. Switching models changes who gets credit, not how much you sold.
  • Compare like with like: use Compare with a year earlier in seasonal trades.
  • Give COD campaigns time: last week's orders are not settled yet.

Troubleshooting#

What you seeWhyWhat to do
No attributed orders in this window yet.No captured orders in the periodWiden the period; check the Health tab
No ad account is connected — this shows orders by platform and campaign only. …No spend yetConnect an account or import spend from a file
Cost and profit figures need the Gross profit report right.Your role can't see marginsAsk the owner for the right
Rows matched by nameNo campaign id on the ordersAdd the UTM template to your ads
Large (unattributed spend)Spend on campaigns with no orders, or ads without tagsTag the ads; check tracking health
Data-driven shows linearFewer than 30 orders with visits from 2 or more channelsWait for more orders
A currency is missing from spendNo exchange rate for that currencyAdd rates in Settings › Currencies

Limits and what is not there yet#

  • Built and tested on test data to the cent; not yet run on a real ad account.
  • Marketplace commissions are not in the profit yet.
  • The media mix model and geo-lift planner are estimates.

Questions#

Why does Meta show more purchases than the report?

Each platform credits itself, counts views, uses its own windows and adds modelled conversions. The Insights tab shows both numbers and the reasons for the gap.

Which model should I use?

Last non-direct click is the usual default in analytics tools and easy to explain. Use Data-driven once you have enough orders.

Is the spend in my currency?

Spend is kept in each ad account's own currency and converted to your business currency at your own exchange rate for each day.

Can I post ad spend to the books?

Yes, from Ad spend in the books, linked on the Ad platforms tab. See Ad attribution, ROAS and POAS.

All guides

Type at least 2 letters.↑ ↓ to moveEnter to openEsc to close