Resource

·

Campaign Analytics

ROAS decomposition: how to find the lever that's breaking your 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 — shows where campaigns typically break, and explains how BooleanMaths pixel attribution makes each lever measurable with accuracy that platform-reported data can't match.

By BooleanMaths

·

10 min read

·

Campaign Optimisation

What ROAS actually is — and what it isn't

Platform-reported ROAS is a ratio: attributed revenue divided by ad spend. The problem is that "attributed revenue" is doing enormous hidden work. Meta's default 7-day click / 1-day view window, view-through attribution, and cross-device counting all inflate the numerator. What looks like a 4× return may be a 1.8× return once you strip out the statistical noise.
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.

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.

The four levers — and what breaks each one

Every underperforming campaign has one primary broken lever. The diagnostic logic is straightforward once you have accurate data for all four inputs.

Lever 1

CTR — the creative quality signal

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.

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, page load speed on mobile LTE, trust deficit for cold audiences, COD vs. prepaid checkout friction, and third-party checkout (GoKwik, Shopflo) losing cart tokens before the BM pixel fires.

Lever 3

AOV — the product mix 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. 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 the 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 rarely "bid less" — it is audience expansion, creative refresh to reduce per-creative frequency, or separating brand from non-brand to control bid floors.

The five-verdict diagnostic

Once you can observe all four levers accurately, the campaign verdict follows a decision tree. BooleanMaths generates this verdict automatically for every active campaign.

Signal pattern

Broken lever

Verdict

High CTR + low BM CVR

Landing page

LP problem — fix creative-to-page match before scaling

Low CTR + low BM CVR

Creative

Creative problem — pause and rebuild from scratch

Low CTR + decent BM CVR

Reach

Creative reach problem — audience is too narrow

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

Pmax SKU mix issue — exclude accessories from feed

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 always last-click and always self-serving. 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.

What the audit output looks like in practice

A BooleanMaths ROAS decomposition audit across a brand's top five campaigns by spend produces a per-campaign diagnosis in under two minutes via the MCP integration. Each campaign card shows:

Spend, BM pixel revenue, BM pixel orders, and ROAS — with platform vs. pixel comparison

CTR, CPA, new customer percentage, and fatigue status

Top 5 SKUs by attributed quantity — identifying hero SKU concentration or accessory drag

Landing page CVR inferred from web analytics sessions matched to campaign UTMs

One-line verdict: Scale / Watch / Pause / Hold — with the primary broken lever identified

The output is designed to be shareable with media buyers or agencies without exposing specific revenue numbers — campaign codes replace brand identifiers, and absolute spend figures can be masked for external review.

Three traps that distort the decomposition

Trap 1

Using platform CVR instead of BM pixel CVR

Platform conversion rates include view-through attributions that can inflate CVR by 2–4×. 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 and Delhivery shipping data to mark RTOs and cancellations — giving true realised AOV rather than gross order value.

Trap 3

Attributing blended ROAS to any single campaign

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 dilutes the denominator. Campaign-level decomposition requires campaign-level attribution — which is exactly what BM pixel enables and platform blended numbers obscure.

The bottom line

ROAS decomposition with BM pixel data converts a vague question — "why is this campaign underperforming?" — into a four-lever diagnostic with a clear verdict. The methodology works across Meta, Google, and any other channel where BooleanMaths has attribution data.
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 that data trustworthy.

Activate your Marketing Data with BooleanMaths

Background