The 15-Minute Meta Account Audit We Run Before Touching Any Client's Creative (CAPI, Pixel & Match Rate)

Before you brief another creative, answer me this honestly: do you actually know whether the numbers in your ads manager are real, or have you been optimising against a reporting layer that's quietly lying to you?
Most founders can't answer that. They can tell me their ROAS to two decimal places. They can't tell me whether Meta is double-counting their purchases, how many real transactions never make it back into the account, or why a custom audience of 50,000 buyers only matched 11,000 people. And here's the uncomfortable bit - until you know those things, every test result you're reading is noise dressed up as signal.
So when a brand comes to us certain they have a "creative problem", the first thing we do is not look at the creative. We spend fifteen minutes on the data layer. More often than I'd expect, the creative was fine all along. The account just couldn't see what the creative was doing.
Here's the exact audit, station by station, on the clock. You can run it on your own account this afternoon.
Minutes 0-3: Attribution settings
Start where the whole thing begins - your attribution window. This is the setting that decides both what gets reported and, more importantly, what the algorithm learns from.
Open your ads manager and check what window you're on. If you're running 7-day click plus 1-day view, the view portion is the bit I'd look at hard.
What good looks like: I want optimisation weighted toward click-based conversions. View-through attribution credits a purchase to your ad just because the impression was served, which is a bit like a billboard taking credit because you drove past it. It pulls in conversions other channels actually earned, and it flatters your numbers.
Here's the difference in practice. An account on 7-day click, 1-day view might be reporting a 4.0x return. Flip the reporting to 7-day click only and the same account shows ~2.6x. Nothing about the business changed. One number was borrowing credit; the other is what your ads genuinely drove.
What it means: a $7 reported CAC can become a $33 real CAC once you strip the view-through. If you've been scaling on the flattered number, you've been scaling on borrowed conversions. The honest window will report lower, and that's the point - you're feeding the system cleaner signal and only letting it chase the action you actually want, which is a click and a purchase.
This is a three-minute check that reframes every other number in the account. Do it first.
Minutes 3-7: Pixel health and double-firing
Now into the events manager. This is where I find the problem that quietly wrecks more accounts than any single creative decision: events firing more than once.
Pull up your purchase event and look at the browser events versus the server events over the last week or two. There should be a sensible relationship between them.
What good looks like: browser and server roughly tracking together once deduplication is doing its job. What you do not want to see is the browser line sitting well above the server line. If browser purchases are firing at a noticeably higher rate than server purchases, that's your warning light. It usually means the pixel is firing the event two or three times per actual purchase.
I've seen an account where the pixel was triple-firing every purchase. Think about what that does. Meta believes you got three times the purchases you actually got, so the reporting is inflated and - the worse part - the optimisation is being trained on phantom conversions. You're telling the algorithm "this worked brilliantly" about sales that happened once, or didn't happen at all.
What it means: if your purchases are firing twice, your real CAC is roughly double what the dashboard says, and every "winning" ad is suspect. Grab the Meta Pixel Helper browser extension, load your own checkout, and watch what fires. If you see a purchase event stack up two or three times on a single order, you've found why your tests have never made sense.
Four minutes. This single check has flipped more "our creative is broken" conversations than I can count.
Minutes 7-10: CAPI and event match quality
Same screen, different number. Now I want to see your conversions API status and, specifically, your event match quality score.
If you're relying on the browser pixel alone in 2025, you're working with one hand tied behind your back. iOS, ad blockers, and cookieless browsers mean a big slice of your conversions never make it back to Meta through the browser at all. The conversions API sends those events server-side, which is how you recover the ones the pixel drops.
What good looks like: CAPI connected, firing, and an event match quality that reads "good" or "great" rather than "poor". Match quality is Meta's measure of how well it can tie each event back to a real person, using the customer information you send alongside it - email, phone, name, address, all hashed. The more strong identifiers you pass, the higher the match quality, and the more of your actual sales the system can see and learn from.
What it means: poor match quality is invisible lost performance. The transactions are happening, the money is real, but Meta can't attribute them, so it can't optimise toward the people who drive them. You're effectively hiding a chunk of your results from the algorithm and then wondering why it can't find more customers like your best ones.
To put this into perspective: lifting match quality from "poor" to "great" doesn't change how many people buy. It changes how many of those buyers Meta can actually recognise and go and find more of. On a decent-volume account that's the difference between the algorithm flying blind and flying with most of the runway lit.
Minutes 10-12: Advanced matching and deduplication
Two quick switches in the same area, both of which I find left in the wrong state on a surprising number of accounts.
First, automatic advanced matching. In the events manager settings, scroll to advanced matching and make sure it's switched on. This lets Meta use the customer details already present at checkout - hashed email, phone, and so on - to match more events to more people. It's free signal you've already collected. Leaving it off is leaving match quality on the table for no reason.
What good looks like: advanced matching on, pulling in every identifier your checkout already captures.
Second, deduplication. This is the safeguard that stops the browser pixel and the conversions API both claiming the same purchase and Meta counting it twice. It works by matching a shared event ID across the two sources.
What good looks like: deduplication configured to your event setup's best practice, with a shared event ID passed from both pixel and CAPI, and data freshness reading in real time or as close as you can get it.
What it means: without dedup, sending CAPI on top of your pixel can quietly double your reported purchases - you fix one data problem and create a worse one. With dedup working, you get the recovery benefit of server-side events without the double-count. Two minutes, two toggles, and the difference between clean data and a mess.
Minutes 12-15: Custom audience match rate
Last station, and it's the one almost nobody checks. Go to your audiences and look at a custom audience you've uploaded from your customer list - your all-time purchasers, say. Look at how many of the people you uploaded Meta actually matched.
If you uploaded 50,000 customers and Meta matched 11,000, that's a ~23% match rate. I see numbers like that all the time, and most brands have no idea it's happening.
What good looks like: I want that match rate up around 70-80%, not sitting in the twenties. A low match rate means your retention campaigns are reaching a fraction of the people you meant to reach, your exclusions are leaky so prospecting is paying to "acquire" existing customers, and any lookalike built off that list is being seeded from a thin, partial source.
What it means - and how to fix it: the reason match rates sit so low is that you're usually uploading a single identifier, normally just one email per person. That one email might be an old address, or simply not the one Meta has on file for them, so the match fails. The fix is to upload multiple identifiers per customer. Instead of one email, pass every field you hold - email, phone number, first name, last name, city, postcode, and where you have them, secondary emails.
Give Meta more ways to recognise the same person and its odds of matching them climb sharply. That's how a ~23% match rate moves up toward ~70-80%. Same customer list, far more of it actually usable, and every retention, exclusion and lookalike downstream of it gets better at the same time.
Why all five, before any creative
Here's the thing that ties the whole fifteen minutes together. Each of these stations is, on its own, a small fix. Together they decide whether your account can tell the truth.
If your attribution window is borrowing conversions, your pixel is double-firing, your match quality is poor, your dedup is missing and your audiences match at 23%, then your ads manager is not a measurement tool. It's a random number generator with a nice interface. And no amount of creative testing on top of a broken data layer will ever give you a clean read, because you can't tell which result was the ad and which was the tracking.
That's why we won't touch creative until this is done. Not because creative doesn't matter - it matters more than anything else once the foundation is right. But you can't read a test you can't trust. Clean the data layer first, and suddenly your winners and losers are actually your winners and losers, not artefacts of a misfiring pixel.
So that's the audit. Five stations, fifteen minutes, one account. Attribution window, pixel firing, CAPI match quality, advanced matching and dedup, custom audience match rate. Open your events manager and your audiences and walk it yourself this week.
When you run it, which of the five is the one your account has been quietly getting wrong?
.webp)





