The key idea
Google Ads and Meta can both credit the same order. Adding their conversion totals therefore does not give you unique sales. Count eligible orders once in your order or CRM system, keep each platform’s attributed results separate, and investigate overlapping credit and duplicate tracking as two different questions.

A combined dashboard should help you make a decision, not make incompatible totals look identical. Start with the question the business needs answered: how many eligible orders did we receive, what did the advertising platforms credit, and what can we actually reconcile?
Is this overlapping credit or a duplicate event?
A buyer might interact with a Meta ad, later click a Google ad and place one order. Each platform may credit that order under its own rules. That is overlapping attribution: two claims about one purchase. It can happen even when both tracking implementations send the purchase correctly.
A duplicate event is a different problem. A confirmation page might fire the same purchase again, or browser and server tracking might send two copies without working deduplication. Inspect event delivery and the documented integration settings before blaming attribution.
Google’s transaction ID helps recognise repeated conversions for the same conversion action. It does not remove Meta’s credit for that purchase. Nor does adding that ID create a standard order-by-order Google Ads attribution export. Keep your own permitted first-party evidence when order-level reconciliation matters.
Make the comparison fair before explaining the gap
Freeze copies of the reports and note when you retrieved them. Check the settings that were actually used rather than assuming that the same column label means the same thing.
Google offers conversion-time columns to help compare with the date orders happened; the usual conversion columns follow the ad interaction’s date. That choice can move results between periods. It does not make two attribution systems equivalent.
Meta announced a change in March 2026: website and in-store click-through attribution would use link clicks, with other social interactions moving to engage-through attribution. Rollout timing differed by advertiser. Check the definitions present in your account and historical exports, especially across a change.
- Period and date basis: identical boundaries, time zone, and interaction date versus order/conversion date.
- Outcome: the same purchase or lead stage, with the selected conversion actions and counting rules recorded.
- Attribution: actual windows, model and click, view or engagement categories; keep incompatible categories separate.
- Value: one currency and a stated treatment of tax, shipping, cancellations and refunds.
- Completeness: export time, reporting lag, modeled figures and missing matching evidence.
A six-order example you can check line by line
The fictional ledger below contains six paid orders worth €700. We deliberately supply order-level credit flags for this example. They are not a claim that a standard advertising export reveals every matched order. Each flag describes supplied credit, not proof that advertising caused the sale.
Google credits four orders worth €570. Meta credits three worth €300. Adding them gives seven credits and €870, but orders A100 and A103 appear in both sets: two orders worth €220.
Subtract that known overlap and the platforms cover five distinct orders worth €650. A104, worth €50, has no supplied credit from either platform. Add it back to obtain all six business orders: €570 + €300 − €220 + €50 = €700.
The tempting shortcut is wrong: seven platform credits minus six business orders gives one, yet the actual overlap is two. The uncredited order changes the gap. You can only calculate the overlap here because compatible, complete order-level flags were supplied; aggregate or fractional modeled totals do not provide those flags.
Illustrative example · fictional data
Follow all six orders
Six paid orders on 1 September 2026, UTC, in EUR. Eligible values exclude tax and shipping; refunds are zero. The credit flags are supplied solely for this example.
| Order | Eligible value | Google Ads credit | Meta credit |
|---|---|---|---|
| A100 | €100 | Yes | Yes |
| A101 | €150 | Yes | No |
| A102 | €80 | No | Yes |
| A103 | €120 | Yes | Yes |
| A104 | €50 | No | No |
| A105 | €200 | Yes | No |
For credit flags: 1 = credit confirmed in reviewed evidence, 0 = confirmed absence of credit within those records, blank = unknown or insufficient evidence. Real reconciliation needs permitted first-party evidence; platform totals alone cannot fill these cells.
Edit the downloads locally. This page does not upload or receive your order data. Keep customer details out of your working sheet.
Which number belongs in the management report?
Use distinct eligible order IDs from the order or CRM ledger for the business total. Define eligible first: paid orders, qualified leads or another agreed stage, with a clear cancellation and refund policy. A CRM count is only as sound as its scope and duplicate handling.
Keep Google Ads and Meta attributed counts and values in their own columns, with their definitions beside them. A platform view supports work within that platform. The business total answers a different question. Neither alone measures incremental sales that would not have happened without advertising.
Where permitted first-party records support matching, retain the order ID and evidence reference, then mark matched, overlapping and unresolved records. Where the data is aggregated, modeled or incomplete, report the unresolved remainder. Do not invent a cross-platform allocation or label missing evidence as proof of no advertising influence.
Can AI reconcile the report for you?
AI can suggest column mappings, highlight a missing time zone, or draft commentary from checked figures. Use fixed calculations for totals and tests, then have the report owner verify the underlying definitions and consequential claims.
A language model cannot recover order identities that an export never supplied. It cannot infer the exact overlap from two totals or decide which ad truly caused a sale. Ask it to distinguish observed records, proposed explanations and unknowns rather than force the numbers to agree.
For a first reporting pilot, test the six-order example, a deliberately repeated order, an unknown credit flag and a refund case. These are proposed acceptance tests, not results from a live client system. Keep customer names and email addresses out of the worksheet and any AI input; use the minimum approved data.
Start with one report and one accountable owner
Download the worked CSV to inspect the arithmetic, then use the blank CSV for your own approved local records. A blank credit cell means unknown; it must not silently become zero. Keep the source extracts and evidence references with the working file.
Agree who owns the business total, who checks tracking and who approves the final commentary. A useful reporting pilot leaves a repeatable method and an honest exception list. Its success is a report someone can check, not a perfectly aligned pair of platform totals.
Official sources
Google Ads · Transaction IDs and duplicate conversionsMeta · Official WooCommerce event implementationGoogle Ads · Data discrepanciesGoogle Ads · Conversion tracking dataMeta · Ad measurement update (2026-03-03)MindVerve
Marketing automation
Bring an anonymised report, its source definitions and the business decision it should support. A scoped MindVerve reporting pilot can agree the inputs, calculations, exception checks and human review for one workflow, with documentation and handover.
Discuss your reporting pilotRead the guide · AI Workflow Launch