To track Facebook ad performance, send your purchase events to Meta with both the Meta Pixel and the Conversions API, tag every ad link with UTMs, and read Ads Manager with columns built for the decision you need to make. Then, once a week, compare what Meta reports with the orders in your store. Most "bad ads" turn out to be tracking gaps, and most tracking gaps show up in that weekly comparison.
What do you need before you can trust the numbers?
Ads Manager can only report what it receives. If a purchase event is missing, counted twice or sent with the wrong value, every report and every automatic bid built on it is wrong too. So set up measurement first and reports second.
You need four pieces:
| Piece | What it does | How to check it |
|---|---|---|
| Meta Pixel | Sends events from the shopper's browser | Meta Ads Data Advisor (the old Pixel Helper) in Chrome or Edge |
| Conversions API | Sends the same events from your server | Events Manager: server events arrive for each event name |
| Deduplication | Makes sure one purchase counts once | Same event name and event ID in browser and server events |
| UTMs | Label each click for your store and analytics | Open an ad link and look at the URL |
Meta recommends running the Conversions API next to the Pixel. To avoid double counts, the Pixel's event ID must match the server's event_id, and the event names must match. Meta removes duplicates that arrive within 48 hours of the first event.
On Shopify, the Facebook & Instagram app does most of this for you. Shopify's help page lists three data-sharing levels (Standard, Enhanced and Maximum) and says Maximum uses both the Conversions API and the Meta Pixel. Check your privacy settings and local law before you choose a level.
How to set up tracking, step by step
- Decide which event you optimise for. For a store, it is the standard Purchase event, with its value and currency. Add to cart and Initiate checkout are useful for diagnosis, not for judging profit.
- Install the Pixel and the Conversions API. Use your platform's official integration when you can. A custom setup through Google Tag Manager works too; our guide to conversion tracking with Google Tag Manager walks through it.
- Check every event once. Place a real test order. With Meta Ads Data Advisor, confirm that the Purchase event fires on the thank-you page with a value and a currency. In Events Manager, confirm that the same purchase also arrives as a server event and is counted once.
- Tag your links. In Ads Manager, UTM parameters are set per ad, in the Tracking section. Use Meta's dynamic parameters, such as
{{campaign.name}}and{{ad.name}}, so the names fill in by themselves. - Save your column presets. Build one view for the daily check, one for creative tests and one for the weekly profit review (see below).
- Write down your attribution setting. Put it in the name of each saved report, so nobody compares numbers measured in two different ways.
A UTM pattern that stays clean
Pick one pattern, write it down and never improvise. For example:
| Parameter | Value | Why |
|---|---|---|
| utm_source | One spelling, always lowercase | |
| utm_medium | paid_social | Keeps paid and organic traffic apart |
| utm_campaign | {{campaign.name}} | Matches the campaign in Ads Manager |
| utm_content | {{ad.name}} | Shows which creative brought the click |
| utm_term | {{adset.name}} | Shows which audience or ad set |
Don't tag links in your organic posts with paid tags, and keep campaign and ad names short and readable, because they become your report labels.
Which metrics should you track?
Each metric answers a different question. Reading them in funnel order tells you where the problem is.
| Metric | Formula | It tells you about |
|---|---|---|
| CPM | Spend ÷ impressions × 1,000 | The cost of reaching people (auction, audience, season) |
| CTR (link) | Link clicks ÷ impressions | Whether the creative earns the click |
| CPC (link) | Spend ÷ link clicks | CPM and CTR combined |
| Conversion rate | Purchases ÷ landing page views | Whether the page and the offer convert |
| Cost per purchase | Spend ÷ purchases | What one order costs you in ads |
| Purchase ROAS | Purchase value ÷ spend | Revenue per $1 of ads (Meta's definition) |
Then compare cost per purchase and ROAS with your own limits. A ROAS of 2 can be a profit or a loss depending on your margin; our break-even ROAS calculator shows how to find your number.
How to read them together
- CTR low, CPM normal: the creative or the hook isn't working. Test new angles before touching the audience.
- CTR good, conversion rate low: the ad promises something the page doesn't deliver, or the price or offer is the problem.
- CPM rising, CTR falling, same creative: the audience has seen it too often. Plan new creatives.
- Cost per purchase fine, ROAS low: orders are small. Look at bundles or the average order value.
- Everything fine in Meta, store sales flat: check tracking before you scale (next section).
How do attribution settings change your results?
The attribution setting decides how long after a click or a view Meta gives a sale to your ad. It is set per ad set. Meta's help page lists options such as 1-day click, 7-day click and 7-day click or 1-day view; the options you see depend on the campaign. A longer window, or one that includes views, credits more sales to the same ads.
In March 2026 Meta announced two changes for website and in-store conversions. Click-through attribution now counts only link clicks; sales after a share, save or other click move to engaged-view attribution, which Meta is renaming "engage-through". For video ads, an engaged view now starts at 5 seconds instead of 10. If your numbers moved this spring with no other change, this may be why.
Three rules keep you safe:
- Keep the same attribution setting when you compare two periods or two ad sets.
- Don't change the setting in the middle of a test.
- Don't compare Meta's attributed sales with another tool's model as if they were the same thing.
For the bigger picture of models, holdout tests and what each one can prove, read our guide to attribution modeling.
Why don't Meta and your store match?
They never match exactly, and that's normal. Your store counts every order, from any source, on the day it happens. Meta counts the orders it can link to your ads within the attribution window, and it reports them on the day of the click or view. The goal is not a perfect match. The goal is to know why they differ and whether the gap is stable.
Work through the gap in this order:
| Gap | Compare | Likely cause | First fix |
|---|---|---|---|
| Traffic | Link clicks vs sessions with your UTMs | Slow page, redirects, missing tags | Check page speed and UTMs |
| Events | Meta purchases vs store orders | Pixel not firing, server events missing, double counts | Test a real order, check deduplication |
| Revenue | Meta purchase value vs money you received | Refunds, discounts, tax or shipping counted differently, attribution window | Compare the same period and the same definition |
Fix the biggest gap first, then compare again. If event counts suddenly drop while orders don't, treat it as a tracking problem until you prove otherwise.
A simple review routine
- Daily (5 minutes): spend, cost per purchase and purchases against yesterday, plus any ad set with spend and no purchases. Don't change much on one day of data.
- Weekly: creative health (CTR, CPM and frequency per ad), new tests, and the store-versus-Meta comparison above.
- Monthly: total store revenue divided by total ad spend, and profit after ads per product. This is the number that shows whether ads make you money.
Keep each review in the same saved preset, so this week reads like last week.
How to do this with SearchTheTrend
Your account shows how your ads perform, not what the rest of the market runs. SearchTheTrend fills that side; it can't see your conversions or anyone's ROAS.
- When an ad stops working, search your niche in Ads and sort by days running or Ad Rank to find formats and hooks other stores keep live. Filter by format (UGC, demo, talking head and more).
- Check whether a dip is only yours: open a competitor's store and see whether its number of active ads and its estimated spend in Europe also changed.
- Follow your main competitors with Radar, which adds their new ads every day, and save test ideas to Boards.
See how media buyers use it before a test. The free plan needs no card.
FAQ
What is the best way to track Facebook ad performance?
Send purchase events with both the Meta Pixel and the Conversions API, tag every ad link with UTMs, and read Ads Manager with columns that match your decision. Then compare Meta's numbers with your store's orders once a week.
Why do Ads Manager and Shopify show different sales?
They count differently. Meta credits sales to ads inside an attribution window and can count a sale on the day of the click, while your store counts every order on the day it happens, from any source. Lost or double-counted events and refunds widen the gap.
Do I need the Conversions API if I have the Meta Pixel?
Meta recommends running both. The server event still arrives when the browser blocks the Pixel, and Meta removes the duplicate when both events share the same event name and event ID.
Which attribution setting should I use?
Use one that fits how fast your customers buy, and keep it the same when you compare periods or ad sets. From March 2026 Meta began counting only link clicks as click-through conversions for website sales; other clicks move to engage-through attribution.
Which metrics matter most for an online store?
Cost per purchase and purchase ROAS for profit, conversion rate for the landing page, and CTR and CPM for the creative and the auction. Read them together, because each one points to a different part of the funnel.
