·
Measurement Methodolgy
ROAS decomposition: how to find the lever that's breaking your Ad campaigns
Most brands look at ROAS as a single number and wonder why it's low.
This guide breaks ROAS into its four component levers - CTR × CVR × AOV / CPI that shows where campaigns typically break, and explains how BooleanMaths data layer makes each lever measurable with accuracy that platform-reported data can't match.
What is ROAS? and why is capturing it accurately difficult?
Return on ad spend (ROAS) is a ratio: attributed revenue divided by ad spend.
The complexity comes from trying to measure it at a granular level.
Blended ROAS is the easiest to calculate. It measures your total marketing ad spend and the revenue that hit your bank account. Very little confusion about both numbers, so you get an extremely accurate number.
When you start evaluating channel / campaign-level ROAS, the waters get muddy quickly. The problem is that attributed revenue is hiding a lot of the complexity. What exactly is attributed revenue for a Meta ad campaign? Is it the numbers Meta is reporting? Is GA4 accurate? or is it Shopify or your third-party checkout?
Using Meta's default 7-day click / 1-day view window, view-through attribution, what looks like a 4× return may be a 1.8× return once you strip out the statistical noise.
So how do we make sense of the data?
The only way is to have independent tracking that tracks complete user journeys from ad clicks to order delivery.
BooleanMaths uses server-side pixel data and cross-device journey stitching to compute true attributed revenue. Every number in this framework is based on BooleanMaths pixel orders - not platform-reported conversions.
What is ROAS decomposition?
ROAS is the North Star metric for any marketing team, but it is looking at full-funnel performance. It measures the ad spend that went into the black box and the revenue that came out: to actually debug and optimise your marketing funnel, you need to break it up into its various components.
The decomposition formula
ROAS = CTR × CVR × AOV / CPI
CTR = click-through rate (impressions → clicks)
CVR = conversion rate (BM pixel sessions → BM pixel orders)
AOV = average order value from BM pixel orders
CPI = cost per impression (spend / impressions).
Each lever is independently observable and independently fixable.
CTR
×
CVR
×
AOV
/
CPI
=
ROAS
The four levers - and what breaks each one
Every underperforming campaign has at lest one primary broken lever. The diagnostic logic is straightforward once you have accurate data for all four inputs.
Measure each of the four levers individually.
Benchmark them against account targets.
Go deeper into what's actually broken.
Lever 1 - CTR
The signal that measures creative quality
CTR measures whether your creative stops the scroll.
Benchmarks for Indian D2C on Meta:
1.0–2.5% for prospecting,
2.5–5.0% for retargeting.
Below 1.0% on prospecting means the creative is failing before any downstream lever matters.
What breaks CTR:
→ creative fatigue (frequency rising, CTR falling week-over-week),
→ audience mismatch,
→ hook failure (first 2–3 seconds of video), or
→ format mismatch (static where video is needed).
BooleanMaths surfaces CTR alongside BM pixel ROAS per campaign - so when a high-CTR campaign still underperforms, the diagnosis moves downstream to CVR or AOV.
For any campaign where CTR is the major issue, the diagnosis digs deeper into creative fatigue, audience mismatch, hook failure or format.
Lever 2 - CVR
The landing page and funnel signal
CVR is where most Indian D2C campaigns silently bleed. A 1–2% site-wide CVR is typical, but campaign-level CVR varies by 3–5× depending on which landing page receives traffic.
BooleanMaths computes CVR using BM pixel orders (not platform-reported conversions) divided by attributed sessions - eliminating view-through inflation.
A campaign showing 3× ROAS in Meta Ads Manager but 0.8× in BooleanMaths almost always has a CVR problem.
What breaks CVR:
Landing page mismatch - the messaging on the ad and the landing page do not match.
Landing page quality - the landing page doesn't have high-resolution product images and content.
Discount offer mismatch - the discount offer on the ad and the landing page do not match.
page load speed on mobile LTE,
trust deficit for cold audiences
COD vs. prepaid checkout friction - the checkout partner does not offer flexible COD and postpaid options.
SKU stockouts - visitors want to purchase, but the SKU is out of stock.
Lever 3 - AOV
The product mix & discount reliance signal
AOV is the most underappreciated lever because it is the most structurally determined. A campaign selling accessories (₹300–600 average) alongside a core product (₹1,500–2,500) will always show suppressed AOV - not because the campaign is failing, but because Pmax or DPA is letting accessories dominate the mix.
BooleanMaths surfaces SKU-level attributed quantity and revenue per campaign. When accessories account for 30%+ of attributed quantity but only 10% of attributed revenue, that is an AOV drag signal.
The fix: exclude accessory SKUs from the campaign's product feed. Use them as bundle candidates to boost AOV. This is the most common cause of underperformance in unconstrained Google Pmax campaigns.
Lever 4 - CPI
The bid efficiency signal
CPI (cost per impression) is a proxy for auction competitiveness. Rising CPM is a signature of audience saturation, seasonal demand spikes, or bid strategy misalignment. When CTR, CVR, and AOV all look healthy but ROAS is flat, CPI is typically the culprit.
On Meta, rising CPM with steady CTR usually means frequency is too high - you are reaching the same warm audience repeatedly.
On Google Pmax, CPI inflation signals the campaign is entering more competitive placements as it matures.
The fix is not to decrease the bid. Usually, it is audience expansion, creative refresh to reduce per-creative frequency, or separating brand from non-brand to control bid floors.
How to run diagnostics?
Once you can measure all four levers accurately, the diagnostic verdict follows a standard decision tree. Given the diagnostic verdict, you can figure out the root cause by further deep diving into the individual layers.
Using a combination of our measurement stack, MCP, and AI agents, BooleanMaths generates this diagnosis automatically for every ad campaign.
Signal pattern
Broken lever
Verdict
High CTR + low CVR
Landing page
LP problem - fix creative-to-page match before scaling
Low CTR + low CVR
Creative
Pause and rebuild from scratch. Fix the Creative problem first. Fixing LP won't fix problems upstream.
Low CTR + BM CVR
Targeting
Creative is not targeting the right audience. The audience that does land on the page - ends up converting.
Good CTR + good CVR + rising CPI
Bid / creative refresh
Healthy funnel. Auction efficiency issue - refresh creative to reduce frequency
Good CTR + good CVR + low AOV
Product mix
SKU mix or Discount issue - exclude accessories from feed. Reconfigure discounts.
How BooleanMaths implements ROAS decomposition
The methodology above requires accurate data for each lever. Platform-reported data is unreliable for CVR and AOV because of attribution window inflation. BooleanMaths builds the decomposition on four data layers.
Server-side CAPI pixel for true CVR
BooleanMaths fires purchase events via server-side Conversions API, bypassing browser limitations (ad blockers, ITP, cookie loss). This gives accurate session-to-order matching that browser pixels miss by 15–35% for Indian mobile traffic.
Cross-device journey stitching for accurate attribution
Indian shoppers commonly browse on mobile and convert on desktop, or click an Instagram ad and purchase via a WhatsApp share link. BooleanMaths stitches these journeys using deterministic identity signals (email, phone) - giving accurate cross-device CVR instead of counting each device as a separate unattributed session.
SKU-level product attribution for AOV decomposition
BooleanMaths attributes not just orders but individual line items within each order to campaigns and channels. This makes it possible to see that Campaign A's low AOV is driven by accessory orders - and Campaign B's strong AOV comes from a hero SKU with a higher average selling price.
Multi-touch linear attribution for unbiased lever measurement
Platform-reported ROAS is either only last-click or biased. BooleanMaths uses linear-touch attribution across the full customer journey - spreading credit across every paid touchpoint proportionally. This eliminates the platform bias where Meta credits itself for orders that Google or organic search actually closed and vice versa.
What the audit output looks like in practice
A BooleanMaths ROAS decomposition audit runs across a brand's Ad campaigns by spend producing a per-campaign diagnosis in under two minutes via the MCP integration. This is a sample campaign card.

The media buyer can further use the MCP to dig deeper into diagnosed metric and how exactly to fix it.
Can you run this decomposition yourself, and what considerations should you make?
Yes, any media buyer can stitch together the data from multiple platforms to create this decomposition. However, there are three major traps that distort this analysis, which you must be on the lookout for.
Trap 1
Using platform CVR instead of BM pixel CVR
Platform conversion rates include view-through attributions that can inflate CVR by 2–4×. These are conversions that never landed on your landing page and actually have no effect on measuring landing page performance. A campaign showing 1.8% CVR in Meta Ads Manager may be running at 0.4% true pixel CVR.
Using platform CVR will make you scale campaigns that should be paused and pause campaigns that are actually working.
Trap 2
Ignoring RTO in AOV calculations
Indian D2C brands with high COD volumes can have 15–25% return-to-origin rates. A campaign showing ₹2,000 AOV may net only ₹1,500 per order after RTO adjustments. BooleanMaths connects Shiprocket, Delhivery and other shipping platforms to track RTOs and cancellations - giving true realised AOV rather than gross order value.
Trap 3
Attributing blended ROAS to any single channel
Blended ROAS (total revenue / total spend) is a useful business health metric but a dangerous campaign-level diagnostic tool. A brand with strong organic and direct traffic will show inflated blended ROAS for every paid campaign because organic revenue pollutes the measurement pool.
Campaign-level decomposition requires campaign-level attribution - which is exactly what BM pixel enables and platform numbers obscure.
The bottom line
ROAS decomposition converts a vague question - "why is this campaign underperforming?" - into a four-lever scientific diagnostic with a clear verdict.
The prerequisite is accurate data. Platform-reported ROAS is a starting point at best. The decisions you make from it - which campaigns to scale, which to pause, which landing pages to fix - are only as good as the data beneath the number.
BooleanMaths exists to make the underlying data trustworthy and make the diagnostic instant and repeatable.



