Meta reports 4x. Your Shopify dashboard says 1.8x. Only one of them pays salaries.
Most Meta accounts are not underperforming — they are under-measured. We rebuild the signal layer first: server-side events, correct deduplication, and values on conversions, so the algorithm optimises toward revenue instead of toward whatever it can still see.
- Priced on scope, never a percentage of your ad spend
- CAPI, event schema and dashboards built in your Business Manager
- Incrementality tested, not just attributed
Meta is optimising against a partial picture of your customers
Since iOS 14.5 and the tracking-prevention changes that followed, a meaningful share of browser-side conversions never reach Meta at all. What arrives is thinner, later, and increasingly modelled rather than observed. Meta then reports on the subset it can see, inside its own attribution window, and calls that your ROAS. Meanwhile Advantage+ campaigns absorb budget across placements and audiences you cannot inspect, so the usual response — more granular targeting — no longer applies. The account is not broken. The feedback loop is: you are asking an algorithm to find more customers like the ones it observed, while a large and non-random slice of your best customers are invisible to it.
Platform-reported conversions versus booked revenue. Four advertising channels each report a share of the same conversions — Meta, Google, LinkedIn and YouTube. Because each measures inside its own attribution window with no visibility of the others, their combined claimed total is larger than the revenue actually recorded in the ledger.
Symptoms, causes and what they cost
Meta's reported ROAS and your actual revenue have stopped agreeing
Why it happens: The pixel and the Conversions API are both firing without a shared event ID, so the same purchase is counted twice. Layer on a 7-day click / 1-day view window and view-through credit for people who would have bought anyway, and the gap compounds.
What it costs: You scale the campaigns with the most inflated reporting and starve the ones actually acquiring new customers.
Advantage+ took over the account and you cannot see inside it
Why it happens: Advantage+ Shopping consolidates prospecting and retargeting into one budget. Without a clean new-customer signal it will happily spend against people already returning to you, then report their purchases as campaign performance.
What it costs: You pay prospecting prices to re-buy customers you already had, and blended ROAS hides it completely.
Creative dies faster than you can replace it
Why it happens: In a broad-targeting account the creative *is* the targeting. Frequency climbs against a fixed audience, the hook stops working, and CPMs rise to compensate for falling click-through.
What it costs: Efficiency decays on a predictable curve while spend stays flat, and it reads as 'the platform got worse'.
Lead campaigns produce volume that sales will not touch
Why it happens: Instant Forms remove so much friction that the cheapest completion is often the least considered one. Meta optimises for the event you send it, and a form fill is the event you sent.
What it costs: Cost per lead falls, cost per closed customer rises, and the marketing report only shows the first number.
Where growth is normally stuck
- Browser pixel only, with no server-side Conversions API to recover the events privacy restrictions remove
- Pixel and CAPI both firing without a shared event_id, so purchases are double-counted rather than deduplicated
- Low Event Match Quality — few hashed identifiers sent, so Meta cannot attribute the events it does receive
- Conversion events sent as counts rather than values, making value-based bidding impossible
- No new-customer signal, so Advantage+ cannot distinguish acquisition from retention
- Creative production rate below the fatigue rate for the spend level
- Attribution setting never reconciled against booked revenue, so nobody knows the real multiple
Conversion signal loss between the browser and the ad platform. Conversions fall at each stage of browser-side collection: tracking prevention and consent choices remove roughly a third, and further loss occurs before the event reaches the ad platform. A final bar shows the larger share that survives when events are also sent server-side.
Our solutions — matched to the problem you have
- Lower the cost of every customer you win. — for: “Every customer costs more than the last one”. Read more
- Your growth stalled. Your CAC didn't. — for: “Spend keeps rising and profit does not follow”. Read more
- Fix the leaks that cost you the most. — for: “Traffic arrives and does not convert”. Read more
- Know what a customer is actually worth. — for: “You do not know what a customer is actually worth”. Read more
- Build the model that tells you if the business works. — for: “You cannot prove the business works at a unit level”. Read more
Our services
Measurement first
Nothing downstream is trustworthy until this is right. We start here on almost every engagement, because optimising against numbers that do not reconcile just reaches the wrong destination faster.
- Server-side Conversions API
- Google Enhanced Conversions
- Analytics & technical telemetry
- Attribution audits
Meta buying
Campaign structure, bidding and creative cadence built on the signal layer above — in that order, because the reverse does not work.
Conversion & retention
Where the funnel rather than the ad is the binding constraint, more traffic makes the problem more expensive rather than smaller.
What we actually do on a Meta account
The media work is the visible part and rarely the constraint. Most of the value is in making the signal Meta receives an accurate description of your business, then buying against that.
- Deploy the Conversions API server-side with correct event_id deduplication against the pixel, so events are recovered rather than double-counted
- Raise Event Match Quality by passing the hashed identifiers you are permitted to send, so the events that arrive can actually be matched
- Send values, not counts — including margin-adjusted values where product mix varies materially
- Separate new-customer acquisition from retention so Advantage+ has a signal worth optimising against
- Run a creative system sized to the spend, with structured variation on hook, format and angle rather than ad-hoc refreshes
- Test incrementality with geo holdouts or conversion lift, because attributed revenue and incremental revenue are different numbers
- Reconcile Meta-reported revenue against your ledger monthly, and report the reconciled figure
How it runs
The engagement sequence, phase by phase. Four sequential phases, beginning with diagnosis and measurement before any campaign changes are made.
Days 1–10 — Audit the signal, not the ad copy
Read-only access to Business Manager, the pixel, your CAPI setup if one exists, and your ledger. We check deduplication, Event Match Quality, event values, attribution settings, and how much of your reported revenue is modelled. You get the gap between Meta-reported and booked revenue, quantified.
Weeks 2–4 — Rebuild the event layer
Server-side CAPI with deduplication, richer match keys, values on every conversion event, and a new-customer flag. Nothing about the campaign structure changes yet — changing bidding while the signal is still wrong just moves the error.
Weeks 4–8 — Restructure the buying against real values
Consolidate where fragmentation is starving the learning phase, separate acquisition from retention, move to value-based bidding now that values exist, and put a creative cadence in place matched to the fatigue curve at your spend level.
Ongoing — Hold it to incrementality, not attribution
Weekly against contribution and reconciled ROAS, with periodic holdout tests. When a campaign's attributed revenue is not incremental we say so, including when that means recommending you spend less on it.
Why we fix measurement before touching the budget
Every lever Meta gives you — bid strategy, budget allocation, audience expansion, Advantage+ — is downstream of the events you send it. An account with broken deduplication and no values is being optimised confidently toward the wrong thing, and no amount of campaign restructuring corrects that. It is also why so many Meta engagements plateau: the media work was competent, the input was not. Fixing the signal is unglamorous, invisible in a monthly report, and usually the single highest-return thing available in the account.
What you get out of it
The ROAS you report is the ROAS you banked
Deduplicated events reconciled against your ledger, so the number in the deck survives contact with finance.
Bidding optimises toward margin, not volume
Once conversions carry values, Meta can pursue high-value customers instead of cheap ones. That distinction is invisible to a count-based account.
Acquisition stops being confused with retention
A new-customer signal keeps prospecting budget from quietly re-buying people who were coming back anyway.
Creative stops being the emergency
A production cadence matched to your fatigue curve turns creative from a recurring fire into a scheduled input.
Cumulative contribution against customer acquisition cost over twelve months. Contribution accumulates month by month as a rising line, while acquisition cost is a flat line paid up front. The two cross once cumulative contribution overtakes acquisition cost. The shaded area before that crossing is the payback period, during which capital is committed.
Published engagements
-
How a K-12 Online School Fixed a Losing ROAS by Fixing Who It Targeted
— EdTech & K-12
— Sustained Return on Ad Spend: 0.3 - 0.5 ROAS → 8.0 - 10.0 ROAS
A K-12 online school was paying for leads who weren't even parents. See the targeting rebuild that lifted qualification 300% and took ROAS from 0.3 to 8–10.
-
How a Global EdTech Fixed a Sub-1 ROAS by Rebuilding the Funnel
— EdTech & Upskilling
— Return on Ad Spend across global geos: Sub-1 ROAS (0.5x) → Up to 3.0x ROAS
A global upskilling platform was running ROAS below 1 in major markets. Here is the geo-by-geo funnel, landing page rebuild, and Andromeda creative testing framework that cut CPL 60-70% and lifted ROAS by 80% to 300%.
-
How a First-Time Marathon Got 189 Paid Signups With No Team or CRM
— Events & Community
— Paid Registrations in 39 Days: 20 Contacts → 189 Paid Signups
First-time organizers, no community, no CRM, 39 days, and a tiny budget. A paid-signup-fee qualifier on Click-to-WhatsApp Ads + n8n automation delivered 189 paid registrations at 2.09 ROAS with zero human overhead.
-
How a Wearables Brand Fixed Its Weakest Channel — Without Touching Anything Else
— D2C & Wearables
— Media-buying Return on Ad Spend: 0.8 - 1.4 ROAS → 2.3x - 2.5x ROAS
A healthy electronics brand had one weak channel: bought media converted at 1% vs 3-8% elsewhere. Here's the media-buying rebuild that lifted ROAS to 2.3-2.5x.
Client names are withheld under NDA. Every figure comes from the engagement it is attached to.
This is for you if
- Meta is a material share of your acquisition and the reported numbers do not reconcile
- You are running Advantage+ and cannot tell what it is actually buying
- Your Event Match Quality is mediocre and nobody has been able to move it
- Lead volume looks fine and the sales team disagrees
- You want the CAPI implementation to remain yours, in your Business Manager
Do not hire us if
- Your spend is small enough that the measurement rebuild costs more than the efficiency it recovers. We will tell you where that line is rather than sell past it.
- The product has no repeat purchase and no margin headroom. Meta will find you buyers; it cannot make the unit economics work.
- You want someone to run ads and report platform ROAS. That is a cheaper service and several firms do it well.
Industries we serve
D2C & e-commerce
Value-based bidding on margin rather than revenue, and a new-customer signal that keeps prospecting honest.
EdTech
High enquiry volume where the binding constraint is qualification, not cost per lead.
Real estate
Geography-bound, high-value enquiries where a cheap lead is usually the expensive outcome.
Automotive & local retail
Bridging a Meta enquiry to a showroom visit that happens two weeks later.
Events & community
Click-to-WhatsApp and conversational funnels where the conversion never touches a web form.
Fintech & regulated
Acquisition where consent and what may lawfully be transmitted shape the CAPI architecture.
Check your own numbers before you talk to anyone
A working spreadsheet with live formulas: spend through to net contribution, blended CAC including the fees your ad platform excludes, and payback computed on contribution rather than revenue. No email required — it is a file, and you should be able to check our thinking before you hear our pitch.
Frequently Asked Questions
- Why does Meta report more revenue than our store does?
- Usually three things compounding. The pixel and Conversions API are both reporting the same purchase without a shared event_id, so it is counted twice. The attribution window credits view-through conversions from people who would have bought anyway. And a portion of what you see is modelled rather than observed. Each is defensible on its own; together they routinely produce a gap of tens of percent against booked revenue.
- Is the Conversions API still necessary if our pixel is working?
- Yes, and the two are complementary rather than alternatives. The pixel fires in a browser, which is exactly where tracking prevention, consent choices and blockers operate. The Conversions API sends the same events server-side, where they are not subject to those constraints. The critical detail is deduplication: without a shared event_id you have not recovered signal, you have doubled it.
- What is Event Match Quality and why does ours matter?
- It is Meta's score for how well it can match the events you send to actual people. An event that arrives with only an IP address matches poorly; one with hashed email, phone and click identifier matches well. Low match quality means events you paid to generate cannot be attributed or used for optimisation — you are sending signal that lands nowhere.
- Should we be running Advantage+ Shopping campaigns?
- Often yes, but not before you can distinguish new customers from returning ones. Advantage+ optimises toward the conversions you report; if returning customers look identical to new ones in your event stream, it will spend prospecting budget re-acquiring people who were already coming back and report it as performance. Fix the new-customer signal first, then let it run broad.
- How do we know Meta is actually driving incremental sales?
- Attribution cannot answer that question — only a holdout can. We run geo-based holdouts or Meta's conversion lift studies, where a matched population is deliberately not exposed. The difference between exposed and unexposed is incremental revenue, and it is often materially lower than attributed revenue. That is uncomfortable and worth knowing.
- Do you also run Facebook and Instagram, or just Meta as a whole?
- They are the same buying platform and the same account-level mechanics, so they are never separate engagements. The creative and placement realities do differ — Instagram is Reels-first and fatigues faster; Facebook carries the lead-form and Marketplace surfaces — and we cover those in more depth on the Facebook Ads and Instagram Ads pages.
- Do you charge a percentage of ad spend?
- No. That model pays the agency more when your budget grows, whether or not the growth was profitable, and it makes recommending a spend reduction structurally irrational. We price on the scope of the work: $2,500 for a diagnostic audit, $4,500–$5,500 for a build sprint, $6,500–$8,500 per month for a retainer.
- Do you work with companies outside India?
- Yes. We are based in Bengaluru and work with companies across the US, UK, UAE, Singapore, Australia, Canada, New Zealand and Ireland. Engagements run remotely with working hours overlapping your timezone.
- Who owns the tracking setup and models when we stop working together?
- You do, entirely. Everything is built in your accounts under your credentials — server-side tracking configuration, unit-economics models, dashboards, playbooks. We do not hold code or withhold access at the end of an engagement.
- Why can we not see your client names?
- Our clients are under NDA, so engagements are described by sector and situation rather than named. We would rather show you a real result with the name withheld than a named logo we cannot substantiate, and we will walk you through the methodology and the measurement on a call.
How we work
- Priced on scope, never as a percentage of your ad spend
- Every model, script, tracking configuration and dashboard stays in your accounts
- Client names withheld under NDA — methodology walked through on a call
- Senior operators on the account, not a junior team learning on your budget
- We will tell you when the constraint is somewhere we are not
Bring your Business Manager
Forty-five minutes against your real account. You leave knowing your deduplication status, your Event Match Quality, and the gap between Meta-reported and booked revenue — whether or not you work with us.