Meta Ads Attribution Test Lab — 12 Reproducible CSV Scenarios
Download fictional Meta Ads and CRM payments CSVs, run them through the Attribution Checker, and compare the result with a published answer key. These 12 scenarios show how missing IDs, changed digits, export formats and payment rows affect the match.
On this page16 sections
Choose a scenario and reproduce the result
Each example has two downloadable files. “Run in Checker” opens the normal checker, loads that exact pair and selects the ID columns recorded in the answer key. The comparison runs in your browser.
All IDs and references are fictional. The expected counts describe payment-row matching for these files and their selected columns. Customer counts, revenue and advertising effectiveness need their own calculations.
| Example | Matched | Missing ID | No matching ad |
|---|---|---|---|
| Exact 18-digit IDs | 3 | 0 | 0 |
| Missing IDs | 1 | 2 | 0 |
| IDs outside the export | 1 | 0 | 2 |
| Invalid Meta export | Check stops | — | — |
1. Exact 18-digit ad IDs
Three payment rows carry IDs that appear in the ad export.
Expected result. 3 matched · 0 missing ID · 0 no matching ad. 0 unmatched rows have an invalid ID.
What to check. Use this pair as the baseline before testing a changed export.
Download Meta Ads CSV · CRM payments CSV
2. The ad ID is missing from the payment
Two payment rows have an empty ID field. Their references keep the rows visible.
Expected result. 1 matched · 2 missing ID · 0 no matching ad. 0 unmatched rows have an invalid ID.
What to check. Follow a test lead from the landing page or form to the CRM and then to the payment export.
Download Meta Ads CSV · CRM payments CSV
3. The ad ID is outside this export
Two numeric IDs are present on payments but absent from the selected ad export.
Expected result. 1 matched · 0 missing ID · 2 no matching ad. 0 unmatched rows have an invalid ID.
What to check. Check the ad account and export dates. Include the ads that could have generated the original leads.
A missing match alone cannot tell you whether the account, date range or stored ID is wrong.
Download Meta Ads CSV · CRM payments CSV
4. An ID became scientific notation
One payment ID is written as an exponent instead of the original digits.
Expected result. 1 matched · 0 missing ID · 1 no matching ad. 1 unmatched row has an invalid ID.
What to check. Export the original ID again as text. Expanding a rounded exponent cannot recover the missing digits.
Download Meta Ads CSV · CRM payments CSV
5. An ID was rounded but still looks numeric
One payment contains a different 18-digit value after a simulated spreadsheet conversion.
Expected result. 1 matched · 0 missing ID · 1 no matching ad. 0 unmatched rows have an invalid ID.
What to check. Compare the exact digits with the original export. Import ID columns as text before editing.
The checker can flag nonnumeric IDs. A rounded all-digit ID looks valid and appears as no matching ad.
Download Meta Ads CSV · CRM payments CSV
6. A tracking parameter was never expanded
One payment stores the literal tag {{ad.id}}.
Expected result. 1 matched · 0 missing ID · 1 no matching ad. 1 unmatched row has an invalid ID.
What to check. Check the live ad link and the field passed into your CRM. Save the resolved numeric ID.
Download Meta Ads CSV · CRM payments CSV
7. One lead makes three payments
Three fictional installments carry the same ad ID.
Expected result. 3 matched · 0 missing ID · 0 no matching ad. 0 unmatched rows have an invalid ID.
What to check. Keep one row per payment when checking payment coverage. Use a separate customer identifier to count customers.
The result is three matched payment rows. It does not establish three customers or calculate revenue.
Download Meta Ads CSV · CRM payments CSV
8. The ad export contains duplicate rows
The same ad appears twice in the ad export. Each payment still counts once.
Expected result. 2 matched · 0 missing ID · 1 no matching ad. 0 unmatched rows have an invalid ID.
What to check. Remove duplicated export rows when building a spend report. ID matching alone does not reconcile duplicated spend.
Download Meta Ads CSV · CRM payments CSV
9. The CSV uses semicolons
Both files use a semicolon separator, and an ad name contains a comma.
Expected result. 2 matched · 1 missing ID · 0 no matching ad. 0 unmatched rows have an invalid ID.
What to check. Keep the separator and quoting produced by the CSV exporter. Commas in a name do not identify the separator.
Download Meta Ads CSV · CRM payments CSV
10. The export contains UTF-8, tabs and quoted text
The files have a UTF-8 byte order mark, tab separators and quoted text with a line break.
Expected result. 2 matched · 1 missing ID · 0 no matching ad. 0 unmatched rows have an invalid ID.
What to check. Export as UTF-8 and keep quoted cells intact. A line break inside a quoted cell stays in one record.
Download Meta Ads CSV · CRM payments CSV
11. Two columns look like ad IDs
The payment export contains both Meta Ad ID and utm_content. This fixture stores the original ID in utm_content.
Expected result. 2 matched · 0 missing ID · 0 no matching ad. 0 unmatched rows have an invalid ID.
What to check. Confirm which field contains the original ad ID. For this test choose Column 2 in the payments file.
The lab selects the documented column. Choosing Column 1 would instead produce two unmatched rows.
Download Meta Ads CSV · CRM payments CSV
12. The ad export itself contains an invalid ID
The Meta Ads ID column contains scientific notation. A reliable comparison cannot start.
Expected outcome. The check stops and displays The selected Meta Ads column contains a blank or invalid ID. Choose the Ad ID column or export it as plain text.
What to check. Export the ad IDs again as text. Then load the corrected file and run the check.
Download Meta Ads CSV · CRM payments CSV
Use the fixtures in your own checks
Start with the exact-ID baseline, then change one field or export step at a time. Compare your result with the published counts and keep an unchanged copy of the files.
Download the machine-readable answer key and fixture notes and reuse permission. The answer key names both files, the zero-based ID column indexes and the expected result for every scenario.
For captured Excel and Google Sheets exports, exact-string results and false-match analysis, read the 36-ID spreadsheet integrity study.
To test your own payment export, open the checker with your own CSVs. For the data path before export, follow the HubSpot setup guide.
How we checked
The Variafy team wrote the expected counts for each fictional fixture and checks them against the same browser script used by the live Attribution Checker. The automated checks load the public CSV bytes and apply the ID column indexes in the answer key. The baseline has three payment rows, two missing-ID rows remain visible by their references, and repeated ad rows do not multiply payment matches.
The files isolate data conditions. An unmatched ID by itself does not identify a specific failure in a real CRM integration. The rounded-ID scenario also demonstrates that an all-digit value can look valid while being wrong.
Questions
Are these benchmarks from real businesses?
All IDs, lead references and payment references are fictional. The fixtures demonstrate specific inputs and expected outputs. They do not estimate how often a problem occurs in real businesses.
Can I test another tool with the same CSVs?
Yes. Reuse the files and compare the result for the same ID columns. Check whether the other tool counts payments, customers or revenue before comparing its output.
Does a matched payment prove that the ad caused the sale?
A match means that the same ad ID is present in both selected columns. Establishing the source of an ID, calculating payment value and choosing an attribution policy are separate steps.