Tracking problems · Marketing leaders, marketers and agencies

Why Ad Platforms Claim More Sales Than You Made and What to Check

Ad platforms can claim more sales than your business recorded because several platforms can credit the same purchase under their own rules. Different reporting dates, conversion actions, value definitions and duplicate events can widen the gap. Start with unique completed payment records, keep each platform’s claim separate, and investigate one difference at a time before changing your budget.

Three emerald and ochre spotlights overlap on a single purchase token beside a ledger tray, illustrating several ad reports claiming the same sale.

Why Can Two Ad Platforms Claim the Same Sale?

A customer can interact with several channels before paying once. If that purchase qualifies under more than one platform’s attribution rules, both reports can receive credit. Their values describe their own reporting systems; they are not separate deposits in your bank account.

Consider three completed $100 purchases. Purchase A receives credit in both Google Ads and Meta Ads. Purchase B receives credit only in Google, and Purchase C only in Meta. Each ad platform reports $200, while the payment ledger contains $300. Adding the claims produces $400 because A appears in both reports. In this example the overlap is known from the individual records, not guessed from the totals. For a quick first look at your own accounts, the free ad over-claim calculator puts every platform’s reported sales next to the revenue you received.

Example: purchase A has one $100 payment and a $100 claim in both Google and Meta. Purchases B and C each add one $100 payment. The ledger totals $300; each platform claims $200, so the columns are not additive.
Example: count the three completed payments once. Platform attribution columns can overlap, so they do not form a unique-revenue total.

That situation differs from one purchase event firing twice inside a platform, and from a customer actually being charged twice. Those are three investigations with different evidence. A large aggregate discrepancy alone does not tell you which one occurred.

The same principle applies when Microsoft Advertising or another channel participates. First find out what each report counts. Microsoft documents separate conversion counting choices, including All and Unique; a conversion total is not automatically a count of distinct paid orders.

1. Align the Reporting Scope Before Comparing Totals

Choose one website or store, one currency, one purchase action and one closed date range. Record the timezone, attribution setting, selected columns and export time beside each platform’s figure. Keep an unchanged copy of those exports so a later refresh does not silently change the comparison.

CheckWhat can create a difference
Conversion actionA report can include leads, signups or several purchase actions rather than only completed sales.
Date basisThe date an ad was clicked can differ from the date a payment happened.
Timezone and periodMidnight in an ad account can cut the reporting day differently from the store.
Attribution rulesDifferent eligible interactions, windows and credit rules can qualify the same purchase differently.
Value definitionTax, shipping, discounts, refunds and currencies may be treated differently.
AvailabilityProcessing, failed imports and missing tracking can leave a comparison incomplete.

Google Ads distinguishes its main conversion columns from columns reported by conversion time. For a payment-date comparison, inspect the matching purchase-value column, such as Conv. value (by conv. time), rather than assuming the default column uses payment dates. Also check which conversion actions that column includes. A date-aligned report can still differ in attribution and coverage.

For Meta, inspect the actual attribution categories and settings in your report rather than copying a universal default from an old guide. Meta’s March 2026 measurement update announced a narrower link-click definition and moved other social interactions into an engagement category. A website click report and an engagement-based ad report therefore need different explanations.

A consistent campaign-naming system helps you locate the same activity across exports. It does not force platforms to share attribution rules or make a missing visit reappear.

2. Separate Overlapping Credit From Duplicate Events

Inspect a small set of known purchases before rewriting the whole tracking setup. Keep order and payment references in your authorized records, not in public screenshots or campaign URLs. Check whether each completed purchase produced the intended purchase event, with the correct value and currency.

  1. Check one purchase confirmation and a reload of the confirmation page.
  2. Review active purchase conversion actions and any parallel native, imported or plugin paths.
  3. Ask your developer to verify the platform’s event identifiers and browser/server pairing where both are used.
  4. Compare the event evidence with the payment record before changing tracking or billing.

Google’s transaction-ID guidance explains that repeated conversions for the same conversion action and transaction ID can be recognized as duplicates. The ID must vary between genuine purchases; one hardcoded ID can hide valid sales. This is a control within that conversion setup, not a way to remove Google’s overlap with Meta’s independent attribution.

Changing a count setting to one conversion per ad interaction answers another question. It can suppress additional genuine purchases after that interaction, so it is not a substitute for sending the right purchase identifier. Document intended behavior before changing a setting just to make a total smaller.

If the problem is specifically a Google Analytics purchase record that differs from Stripe, use the GA4 and Stripe reconciliation guide for that event-to-payment check. This article’s cross-platform question remains whether separate ad claims are being mistaken for separate sales.

3. Reconcile Payments and Refunds Separately

Build a payment reference for the selected period from completed transactions in the relevant provider or store records. Decide how to handle unpaid, failed, test, canceled and subscription-renewal records. Do not count an order and its payment as two sales, or assume a provider payout is the same as purchase value.

Then inspect supported refunds. In the three-purchase example, $300 in completed payments and a $20 refund posted in the selected period produce $280 after those refunds. If the ad reports still show their original purchase values, the refund difference is another reason totals will not match. That does not make $280 accounting profit.

An adjustment in a payment system does not establish that the corresponding ad conversion value was adjusted. Google documents a separate conversion-adjustment process for restating or retracting eligible conversion records. Verify the provider and platform paths before assuming a refund flows through every report automatically.

Keep refund-date reporting separate from a cohort question such as what this month’s acquired customers eventually kept. A refund this week can relate to a payment from an earlier period. Negative net revenue can therefore be a valid period result. Missing fees, tax or currency differences also need their own reconciliation.

4. Check Recorded Paid-Source Revenue in Attriboo

Open Dashboard, choose the website and dates, and confirm its reporting timezone. Open Credit to record the credit rule and look-back window. A consistent rule helps you compare recorded sources; changing it does not create additional payments or establish advertising lift.

In Money, find Follow the money. Start with All traffic to inspect recorded sales, refunds and net together. Then choose Paid ads, and use Source when you need one recorded service. Read the Chart only scope label: these controls narrow the timeline and its strip, while other dashboard cards retain their own scope.

Where to find itDashboard → Money → Follow the money → Paid ads

The overview shows the whole Money section: the chart controls, the summary strip, the chart and Subscription activity. The controls and totals are enlarged below.

Select the overview to open the full screenshot.

Enlarged detail of the outlined area

Example: this paid-source chart shows $897 in sales credit, $49 in refund deductions and $848 net. It shows Attriboo credit for recorded activity, not purchases claimed by Google or Meta.
  1. Narrow the recorded chart

    Paid ads shows credit for recorded paid sources under the Credit setting. Use All traffic for the first payment total.

  2. Keep sales and refunds together

    The strip shows sales, refund deductions and net for this chart only. These amounts are not ad-platform conversion claims.

Start tracking your revenue free

A paid-source selection shows revenue credit assigned to recorded paid touchpoints under the chosen rule. It is not a copy of the purchase value Google or Meta claims in its own ads interface. Unrecorded impressions, missing visits and unmatched payments are not recovered by selecting a different source.

For cost comparison, open Where customers come from → Revenue sources → Ad ROAS. The Google Ads, Meta Ads and Microsoft Advertising connections import campaign spend; Attriboo combines that cost with its separate website activity and payment records. These imports do not provide a universal deduplication of those platforms’ purchase claims.

An owner or admin can open Setup → Import ad spend to check selected accounts and the recent sync. If a connection is not enabled, use a documented manual spend workflow. Match campaign labels on recorded visits to imported names or IDs, and verify currency before reading ROAS. Costs in another account currency are not automatically converted.

A campaign can have imported cost and no matched recorded revenue. Investigate labels, tracking, payments and dates instead of treating that row as proof that the ads generated no sales. Attriboo’s ROAS report helps review a defined observed relationship; it does not prove a channel’s incremental return.

5. Keep Each Platform’s Claim in Its Own Column

Use the worksheet to record a payment reference and compare each supplied platform value separately. Review dates, currency, purchase action, value basis and attribution settings first. Leave an unavailable platform blank; entering zero would claim that the platform reported no value.

One ledger, separate claims

Compare Ad Claims With Recorded Payments

Use aggregate values in one currency. Leave an unavailable platform blank. The worksheet keeps claims separate and cannot infer which purchases overlap. Your entries stay here; no account is connected.

Download the Offline Ad Claims Worksheet ↓

The initial example uses $300 of completed payments, a $20 selected-period refund, and $200 reported by each of Google and Meta. Comparing each claim with payments before refunds gives a difference of −$100; comparing with the $280 reference gives −$80. Neither difference identifies overlapping orders, missing revenue or a duplicate charge.

Aggregate totals cannot reveal the amount of overlap. Even matching totals do not prove that the same purchases are present in each report. Use a small, authorized sample of records and the platform’s diagnostics to investigate the discrepancy. The worksheet does not fetch accounts, merge identities or resolve individual matches.

6. Choose the Next Fix Before Changing Your Budget

Turn the review into one action with an owner. If a purchase event fires twice, repair and retest the implementation. If dates differ, rerun a consistent report. If the payment reference is missing refunds or includes unpaid orders, correct its definition. If claims overlap under valid rules, explain that overlap rather than adding the claims.

Keep a short comparison log: selected period, export time, conversion action, attribution settings, currency, payment definition, observed difference and next check. Use the same definitions on the next review. A marketing report template can keep this evidence beside the budget discussion.

For a decision about whether additional ad spend causes additional sales, use an appropriate incrementality test and account for costs. Attribution credit and causal lift answer different questions. A larger platform-reported revenue number, or closer agreement between dashboards, is not enough to establish which channel deserves the next dollar.

Common questions

Does a larger ad conversion total mean customers were charged twice?

No. Several reports can credit one completed purchase, and a measurement event can also be duplicated without creating a second payment. Check the provider’s actual transaction records to investigate duplicate charges; use event diagnostics to investigate duplicate measurement.

Can Attriboo automatically remove every overlapping Google, Meta and Microsoft purchase claim?

No. The current Google Ads, Meta Ads and Microsoft Advertising connections import campaign costs. Attriboo uses separate recorded website activity and supported payments for its revenue attribution. It does not ingest every platform’s purchase-claim record and automatically reconcile all overlaps.

Will adding UTM parameters make the ad platforms agree?

No. UTMs help label incoming campaign visits and support campaign matching. They do not change each platform’s eligible interactions, reporting window, conversion action or value definition. Check that labels survive redirects, then compare reports using documented scope.

What if an ad report has no purchase-value metric?

Treat it as unavailable until you confirm whether the metric exists for that report and the retrieval succeeded. A missing value or failed import is not a measured zero. Keep that platform blank in the worksheet and document the gap rather than assuming no sales.

Why can a previously exported conversion value change?

Later processing or eligible conversion adjustments can change reported values. Keep the export time and original scope with your comparison, and check which records changed. A refreshed figure should not silently replace the original evidence in a client report.

Jay Kang, founder of Attriboo
Written by Jay Kang

Ten years in SEO, building products and helping clients connect marketing work to business results. Founder of Attriboo.

Get to know Jay · Follow on LinkedIn