An agency can raise your reported Meta ROAS without selling one extra jar. Change the attribution window, give more purchases to ads that received a view, and the number in the deck rises while the store stays put.

Take one account through the whole explanation. Say you spend $20k in a month selling a $78 moisturizer. Meta reports $82k in attributed sales, or about 4x ROAS. Shopify shows $36k in orders it ties to Meta, or 1.8x against that same spend. Neither figure has to be a lie. Meta and Shopify are answering different questions.

Meta asks which purchases it can credit to an ad under its current rules. Shopify records orders, then applies its own rules when it assigns them to a marketing source. The $36k is not the store’s entire revenue; it is the portion Shopify ties to Meta. Before deciding whether the agency improved performance, I want to know how a purchase entered Meta’s count, how it received ad credit, and whether either rule changed. Start with the purchase itself.

First, make sure one purchase counts as one event

A customer buys the moisturizer. Shopify records an order. Meta only knows about that purchase if the site sends it an event. The pixel can send one from the browser when the thank-you page loads; the Conversions API can send the purchase from the server.

Using both routes can help Meta receive an event, but the two messages must identify the same purchase. Under Meta’s deduplication rule, the browser eventID must match the server event_id, and the event names must match for the same pixel ID within 48 hours. If that matching fails, Meta can see two purchase events where Shopify has one order.

I used to describe the server event as a backup for the pixel. That is too casual. A backup that cannot be matched to the original can inflate the count. Reported purchases and ROAS rise, and the account may optimize using purchase volume that does not reflect distinct orders. Nothing about the moisturizer or the customer changed. The messages did.

This is the first check because every later argument assumes the events are worth counting. If the $82k Meta figure includes duplicate purchases, debating whether a view deserves credit is premature. Open Events Manager and inspect whether browser and server events are matching. Get the purchase count into shape before arguing about who caused it.

Next, ask why Meta credits an ad

A valid purchase event does not, by itself, tell Meta which ad deserves it. Attribution rules make that decision. Meta’s Standard attribution includes 7 days after a link click, 1 day after an engaged view or non-link engagement, and 1 day after a view with no click.

Run two $78 orders through those rules:

  1. A shopper clicks a prospecting video on Monday and buys on Sunday. Meta can credit Monday’s click because the purchase falls within seven days.
  2. Another shopper scrolls past a retargeting carousel on Tuesday night without clicking and buys Wednesday morning. Meta can credit Tuesday’s view because the purchase falls within one day.

Both can appear as attributed purchases. They tell different stories. The first shopper clicked. The second may have noticed the carousel, or may already have been ready to buy. Meta’s rule establishes eligibility for credit; it does not prove the view caused the order.

That distinction matters most when an agency shows me a huge retargeting ROAS. Retargeting reaches people who have already shown interest, so a purchase after a view is easy to mistake for a purchase caused by that view. The Attribution Settings breakdown separates reported results into 1-day click, 2–7-day click, 1-day engagement and 1-day view. Do not treat a view-through sale as equivalent to a click-through sale just because both sit in the ROAS total. Ask for the split before you judge prospecting against retargeting.

A wider window catches more of the same purchases

The window is the period during which an interaction can receive credit. A 7-day click plus 1-day view window includes more eligible interactions than a 1-day click window. Make that switch, and Meta can claim purchases it previously left out. The cited discussion notes that reported ROAS can appear 30–50% lower under a shorter window without a change in spend, creative or orders. The reverse can make a new manager look remarkably effective.

Say the moisturizer account reports 2.1x in March on 1-day click. In April, a new manager switches to 7-day click plus 1-day view and reports 3.4x. The new rule can catch the Sunday buyer and the Tuesday scroller. That does not establish that the ads sold more moisturizer. Before comparing managers or months, compare the attribution windows. Save the setting and the date it changed.

Some reported conversions are estimated

Not every purchase can be observed in the same way. For iOS users who opt out, Aggregated Events Measurement uses prioritized events with reporting delays. Meta also uses modeling where tracking leaves gaps. That means an Ads Manager total is not simply a neat stack of individually confirmed, immediately reported orders.

A modeled conversion is still part of Meta’s reported result. It is not the same kind of evidence as an order in the store, and the reported total can move after the day of purchase. I would be wary of a manager who treats ROAS to the decimal as a final, exact account of what happened. Use the figure as an attributed estimate, not a receipt.

Then compare Meta’s credit with the store’s credit

Now the gap between $82k and $36k has a clearer shape. Some of it may come from event problems or modeling. Much of it can come from assigning the same real order to different channels.

Suppose a shopper clicks your Meta ad on Monday, then clicks a Klaviyo email on Thursday before buying the $78 moisturizer. Shopify can credit the email on last click while Meta claims the sale from Monday’s click, provided that click remains inside Meta’s window. There is one order. The reports disagree about which channel gets to claim it. A view-through purchase can create another mismatch: Meta may give an ad credit for a view while Shopify assigns the order elsewhere.

Refunds, canceled orders and time-zone differences can also complicate a period-to-period comparison. None is a reason to throw out either report. They are reasons to stop asking which dashboard has the one true ROAS and start asking what changed between reports. When I see 4x in Meta and 1.8x tied to Meta in the store, my first question is whether that gap is familiar for this account or whether it widened right when someone announced a win.

A tracking change can widen it without changing sales. A report on on-device conversion measurement describes another way Meta’s reported purchases could rise without a budget or creative change. If a measurement setting changes, record when it changed and watch Meta-attributed purchases against Shopify orders over time. A sudden reporting jump is a reason to inspect the ruler before praising the runner.

Lead ads have the same problem with a different unit

A purchase at least has an order behind it. With lead ads, the event can be a form submission: a tap, a prefilled phone number, a submit. Under Maximize number of leads, Meta optimizes for those submissions. It does not make a fake number useful to your sales team, or turn a person who never answers into a booked job.

The CRM may count a narrower result: an enquiry that passed your filters, booked a call or showed up. If a manager says cost per lead fell from $18 to $9, I want the next sentence before I congratulate anyone. Did cost per form fill fall, or did cost per qualified enquiry fall? Those are not interchangeable outcomes.

The alternative described in the qualified-leads guidance is to send post-submit outcomes back through the Conversions API and optimize for qualified leads. That gives Meta feedback about what happened after the easy form fill. It also requires the connection to work; changing the label in a report cannot supply missing CRM outcomes. Cheap leads are expensive when sales has to sort them.

This is the same first principle as the moisturizer purchase. Define the event before celebrating the trend. For ecommerce, check whether a reported purchase corresponds to one order and why an ad received credit. For lead generation, check whether a reported lead corresponds to the kind of enquiry the business can use.

A settings change can impersonate an improvement

Put the layers back together. The moisturizer account spends $20k, and the manager changes its Attribution Setting from 1-day click to 7-day click plus 1-day view. Reported ROAS moves from 2.1x to 3.4x because more interactions are eligible for credit. If the store still ties the same $36k in orders to Meta, the report alone cannot support a claim that more jars sold.

The reverse can happen when you repair measurement. Match pixel and Conversions API events properly, and reported purchases may fall because duplicates disappear. Change a lead campaign from buying raw fills to seeking qualified leads, and cost per reported lead may rise even while the sales team receives better enquiries. A worse-looking dashboard can accompany better information or a better business outcome.

That is why I separate the ROAS equation and what a manager can actually change from the rules used to count results. One question is whether advertising performance improved. Another is whether the measurement changed. Answer the measurement question first, or the performance answer has no stable meaning.

Five questions that expose a ROAS claim

I would put these to any Meta manager presenting a before-and-after result. They are not a request for a prettier dashboard. They establish whether the comparison uses the same definitions.

  1. What attribution window produced each number? Ask for the setting in both periods and the date of any change. A manager should be able to name the rule behind the headline.
  2. Where did the attributed results come from? Ask for the 1-day click, later-click, engagement and 1-day view split. A gain concentrated in view-through retargeting credit needs a different explanation from a gain in click-attributed purchases.
  3. Are browser and server events deduplicated? Ask to see the event matching in Events Manager. Two messages for one moisturizer order should not become two purchases in the performance story.
  4. How did Meta-attributed purchases move against Shopify orders? Track the relationship over time and mark measurement changes on that timeline. A jump in one count, without a corresponding change in the other, deserves investigation.
  5. For leads, what happened after the submit? Ask for qualified enquiries or booked jobs from the CRM, not only form fills. If the campaign optimizes for qualified leads, ask what feedback reaches Meta through the API.

A clear answer does not guarantee the agency caused every sale. It does give you a comparison worth discussing. A vague answer means you still do not know whether the campaign improved or the counting rule got more generous.

Try the model on a new claim

A new manager says he cut CPL from $31 to $14 for a home services account in three weeks. Do not accept or reject the claim on instinct. Work from the event outward.

First, ask what Meta counts as a lead. If the campaign still optimizes for raw form fills, $14 describes submissions, not booked jobs. Next, check the window. If it moved from 1-day click to 7-day click plus 1-day view during week one, the two CPL figures do not use the same credit rule. Finally, open the CRM. It shows 42 raw leads last month and 61 this month, while qualified jobs moved from 11 to 12.

That is not enough to declare failure. Qualified jobs did rise, and you still need comparable spend and a consistent definition to judge cost per qualified job. It is enough to reject the simple story that a drop from $31 to $14 means the business suddenly got twice as good at winning work. The form count rose much faster than the count the sales team cares about.

At groas, I would put store orders or qualified jobs first, Ads Manager second, and the attribution window beside the comparison. If the current report cannot show those pieces together, you do not yet have a sound performance verdict. Fix the count. Then decide whether the work got better.