MER and store data: how to check whether your ads really make money

Google Ads shows its sales, Meta shows its own, GA4 yet another number. Only the store knows what you really earned. Phanes lines these numbers up, calculates MER and nCAC from store data, and only then tells you whether adding budget is worth it.

Phanes team14 min read
7 days of PRO free · no card

Every ad platform reports sales by its own rules, and every platform has an interest in looking good. As a result, the sum of conversions across ad platforms often exceeds the number of orders that actually reached the store. Doubling a budget on such numbers can cost more than it brings in. That is why Phanes reads sales straight from the store and treats them as the reference point for everything else.

Why ad platforms disagree with your store

Google Ads, Meta Ads and GA4 are not lying. Each of them answers a different question and counts by different rules. There are three common reasons for the gap.

Every platform takes the credit

A customer saw an ad on Instagram, then searched for the store on Google and clicked an ad. Meta and Google may both count the same order, each in its own report. An attribution model only splits credit within a single platform.

View-through conversions

Meta can count a purchase after someone only viewed an ad, without a click, if the ad set's attribution setting includes views. The order lands in the report even if the customer came to the store from a completely different source.

GA4 sees less than happens

When a user declines cookies, part of the data never reaches analytics or is estimated by a model. That is why GA4 often shows fewer orders than the store, and purchases without a transaction ID can distort it further.

The conclusion is simple: no platform is the judge in its own case. The store is the judge, because it issues the invoices and takes the money.

Example: sales in ad platforms and GA4 as a percentage of store sales in the same period.

What is MER

MER (Marketing Efficiency Ratio) tells you how much store revenue each unit of ad spend across all channels brings in. It does not ask which campaign "earned" the sale. It asks whether marketing as a whole makes money.

MER = store net revenue excluding shipping ÷ ad spend across all accounts. A MER of 4 means every euro spent on ads came back as 4 euros of net sales.

MER is also called "blended ROAS". The difference from platform ROAS is fundamental: ROAS counts the revenue a platform attributed to itself, MER counts the revenue the store actually booked.

ROAS from an ad platform
MER from store data
Revenue according to one platform's attribution
Revenue booked in the store
Spend of one account or campaign
Spend of all ad accounts of the business
The same sale can be counted in several platforms
Every order counted once
Usually order value including shipping and tax
Net excluding shipping - what the store really earned on goods
Good for comparing campaigns within one channel
Good for deciding whether to add budget at all

nCAC: the cost of acquiring a new customer

nCAC is ad spend divided by the number of orders from new customers. A returning customer would often buy without an ad, a new one almost always needed a nudge. A store that grows only on returning customers eventually stops growing.

Phanes tells new and returning customers apart using the data in the store file. Guest orders the store cannot assign stay as "type unknown". We never add them to new customers, so nCAC never looks better than it is.

Gross, net and shipping: which number we use

Stores usually report gross amounts, including VAT and shipping. For MER and nCAC we need what the store earned on goods. That is why Phanes shows both numbers.

  • Gross sales, matching what you see in your store's admin.
  • VAT taken from the amounts in each order. We do not guess rates, because one store can sell products at 5, 8 and 23% VAT.
  • Shipping cost including its tax, subtracted from revenue, because shipping is not earnings on goods.
  • Net excluding shipping - the number Phanes uses for MER and nCAC. Discounts and refunds are already subtracted.
Example: MER and nCAC from 28 days of sales. Every number carries its source label.

The store as the source of truth, and the gap bands

Phanes compares store sales with GA4 and with each ad platform separately, in the same time window. With GA4 it matches orders by transaction ID. With ad platforms it compares totals, because Google Ads and Meta Ads do not return order numbers with conversions. A gap of up to 10% counts as consistent, between 10 and 15% the card gets a note about the gap with the store, and above 15% Phanes treats it as a measurement problem: fix conversion tracking first, change budgets after.

The threshold applies to each platform separately: no platform should report more sales than the store, with a tolerance of up to 15%. A platform showing less than the store is not an error, because some customers came from other sources.

The sum of platforms is different. If Google and Meta together show 140% of store sales while each one stays within tolerance, that is the effect "platforms claim the same sale". Phanes shows and explains it, but does not treat it as an error and does not block recommendations because of it.

Two decisions, two kinds of evidence

Store data does not replace attribution. It separates two decisions that are often confused.

Whether to scale at all

The store decides: revenue and new customers against total spend, and how MER changed after the previous budget change, within the horizon where the effect of the change is already visible.

Which campaign to scale

Platform and GA4 attribution shows it, checked against the store. A platform outside the tolerance band gets a note or a measurement-gap verdict.

MER and incrementality

Incrementality answers the hardest question: how many sales would not have happened at all without the ad. Attribution shows correlation, meaning which ads were present at the purchase. Incrementality is causation. MER does not measure it directly either: it rises with the season or a promotion, even when ads add nothing.

The only direct measurement is a test with a control group: Conversion Lift in Google Ads or Meta, where part of the audience does not see the ads, or a geo test, where ads are switched off in some regions. Such tests need budget and several weeks, so they cannot check every change.

So Phanes does what can be done every day: it compares MER and the number of new customers before and after a budget change, within the horizon where the effect is already visible, and across several time windows, so one good week does not decide the verdict. That is not proof of cause, but it catches the case where a platform reports growth the store does not see. For large budget shifts between channels, Phanes points to a control-group test as the right evidence.

How to connect your store data

The store is one more data source of the business, next to Google Ads and Meta Ads accounts, GA4 and Search Console. You see it on the Your business tab, in the Data sources card.

The Data sources card on the Your business tab: ad accounts, analytics and the store in one business.
  1. Export a report from your store

    An order export or a sales report as a CSV file. An XLSX file just needs to be saved as CSV.

  2. Upload it on the Your business tab

    Phanes recognises the format of popular platforms on its own. For other systems you map the columns once and Phanes remembers the mapping.

  3. Check how Phanes understood the file

    Before saving you see the order count, date range, gross, VAT, shipping, net excluding shipping and new customers. If something is off, you fix the mapping.

  4. Upload a new file every week

    Phanes reminds you about the next file and tells you which days are missing. A new file replaces the days in its range, and you see the differences before replacing.

Uploading a file and the "This is how I understood your file" screen, on sample data.

We recognise exports from WooCommerce, Shopify, PrestaShop, Shoper, IdoSell and Base (formerly BaseLinker), and any other system works through manual column mapping. Every file passes deterministic checks, with no guessing by an AI model:

  • Numbers must match the column names: gross cannot be lower than net, and gross minus net must equal tax.
  • An unclear decimal separator, day and month order or currency becomes a question to you, never a guess.
  • Cancelled and unpaid orders, a totals row and repeated rows are skipped and listed on screen.
  • The first and last day of the file count as complete only after you confirm it. Today is always incomplete.
  • Each currency is stored separately. Amounts in different currencies are never summed or converted at an exchange rate.

Privacy: the file never leaves your computer

An order export contains the store's customer data. Phanes does not need it, so it does not accept it.

  • Your browser reads the file. Only daily totals and your column mapping settings reach the Phanes server.
  • Columns with names, emails, addresses and phone numbers cannot even be mapped. Phanes skips them and shows how many it skipped.
  • The database holds no order numbers or customer IDs, only order counts and amounts for each day.
  • Store data is visible only to the team with access to that business. Other accounts benefit only from anonymised aggregates.

Enterprise: direct store integration

On the Enterprise plan we connect the store directly through the API of platforms that allow it, including Shopify and WooCommerce. Sales then flow in every night on their own, without exporting files, and Phanes re-reads the last days as refunds and late orders come in.

The rules are the same as for files: read-only, daily totals only, zero customer personal data in the database and encrypted access keys. The PRO plan and the trial use file uploads.

How store data changes recommendations

A new data source only makes sense when all of Phanes understands it, not just one screen. Store data is read by the recommendation engine, the Advisor, the chat and reports, always from the same place, so you see the same number everywhere.

The engine will not raise budget against the store

If a platform reports growth while store MER fell after the previous increase, Phanes declines the next increase and gives the reason. The refusal is a verdict with a justification, not silence.

Two numbers on the card

A card based on revenue shows the platform number next to the store number, with the source of each.

Advisor with a source label

Advice based on the store is labelled "Based on your store's data" or "Based on the sales file you uploaded", with the data period.

The chat starts with the store

When you ask "how much did I earn" or "should I scale", the Phanes chat reads store sales first and explains where the differences with ad platforms come from.

The store in the PDF report

You select the store as a source next to Google Ads, Meta and GA4. The report shows gross, net excluding shipping, MER, nCAC and the gaps.

Gaps in Analytics

Analytics compares store, Google Ads, Meta and GA4 sales in one time window, with the difference in percent and the band verdict.

Missing store data is never a zero. When there is no file or the period is incomplete, Phanes says "I don't know" and works as it would without a store. Days with gaps do not enter MER, and a store currency different from the ad accounts' means no comparison, with a sentence saying why.

Branded search and Meta ads: a hypothesis, not a verdict

Many stores see great results from branded search on Google, meaning campaigns on searches for the store's name. Some of those searches may have been triggered by a Meta ad: the customer saw a product on Instagram, then typed the store's name into the search engine. Phanes shows weekly Meta spend next to branded search conversions. It calls this a hypothesis outright, with no button and no effect on engine decisions, because coincidence in time does not prove cause.

Why this is an advantage

Ad platforms and most tools built on their APIs see only what the platform reports. Phanes also sees the other side: the money in the store.

  • Budget recommendations checked against real sales, not only against platform attribution.
  • A measurement problem surfaces before you move budget to a campaign that only looks good in the report.
  • One number for the conversation with management and the agency: how much the store earned on each unit spent on ads.
  • nCAC shows whether ads bring in new customers or only serve those who would have come back anyway.

Attribution says which campaign was present at the purchase. The store says whether the purchase happened at all. Phanes makes money decisions only when both sides agree.

What is MER in marketing?

MER (Marketing Efficiency Ratio) is store revenue divided by total ad spend across all channels. In Phanes, revenue means net sales excluding shipping, with discounts and refunds subtracted. MER shows whether marketing as a whole makes money, regardless of which platform claims the sale.

How is MER different from ROAS?

ROAS counts the revenue one platform attributed to its own ads. MER counts the revenue booked in the store against the spend of all accounts. ROAS is useful for comparing campaigns within one channel, MER for deciding whether to add budget.

Why do Google Ads and Meta Ads together show more sales than the store?

Because each platform counts an order its ad was present for. A customer who saw a Meta ad and clicked a Google ad can be counted in both. On top of that come view-through conversions. Phanes treats the excess of the platform sum as an effect and flags an error only when a single platform reports more sales than the store, beyond the 15% tolerance.

Do I have to connect my store through an API?

No. On the PRO plan and during the trial, uploading a CSV file with an order export or a sales report is enough. On the Enterprise plan we connect the store directly through the API of platforms that allow it.

Does Phanes see my customers' data?

No. Your browser reads the file, and only daily totals reach Phanes: amounts, order counts and the numbers of new and returning customers. Columns with personal data cannot be mapped, and order numbers are not stored.

What if my store uses a different currency than my ad accounts?

Phanes does not convert currencies at an exchange rate. When the store currency differs from the accounts' currency, MER is not calculated for that pair and the screen says why. Each store currency is stored separately.

Does MER measure ad incrementality?

Not directly. MER shows how much the store earns on total ad spend, but it also rises with seasons and promotions. Incrementality is measured with a control-group test, such as Conversion Lift or a geo test. Day to day, Phanes compares MER and new customers before and after a budget change, and for large budget shifts it points to a control-group test.

Sources (6)