Offline Conversion Upload History Evidence
Pricing
$0.25 / completed report
Offline Conversion Upload History Evidence
Compare current GCLID conversion rows with explicit prior upload outcomes. Preserve duplicate identity/payload conflicts, accepted-history collisions, rejected-only evidence and scoped opaque order drift. JSON or mapped CSV; no Google access or upload.
Pricing
$0.25 / completed report
Rating
0.0
(0)
Developer
Gilad Ronen
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
21 days ago
Last modified
Categories
Share
Compare a current Google Ads GCLID conversion batch with your authorized previous upload-result records. The report preserves exact identity repeats, differing value or currency payloads, earlier accepted-history collisions, and changed timestamps or click IDs for the same opaque order reference.
This workflow is useful when you upload recurring CRM exports, revisit a backfill, or investigate which submitted rows overlap a previous batch. It operates on the records you supply. It does not connect to Google Ads or upload conversions, and it cannot explain every difference between submitted rows and Ads reporting.
What to supply
Provide a snapshotId, explicit historyCoverage, a nonempty current array, and a history array. Empty history is allowed. Each current row contains string rowId, accountId, conversionName, gclid, conversionTime, value, and currency. orderId is optional. History rows require those same fields plus an explicit outcome: accepted, rejected, pending, or unknown.
Use stable account and conversion-action names consistently across the comparison. IDs remain exact strings, including leading zeros, case, and whitespace. Do not provide email addresses, phone numbers, names, or enhanced-conversion contact data. Submit only synthetic or authorized opaque references.
Times must use strict ISO seconds with an explicit Z or known UTC offset, such as 2026-10-01T10:00:00+02:00. Up to three fractional digits are accepted. Equivalent instants compare together while the original time is retained. Values must be decimal strings, not JSON numbers, exponent notation, or locale-formatted amounts. Up to 24 integral and six fractional digits are accepted. Negative values are syntactically supported without asserting that Google will accept them. Currency must contain three uppercase letters; the report checks this syntax, not platform currency support.
For CSV, remove the corresponding array and provide currentCsv or historyCsv. Canonical headers match the field names. Exact configurable mappings are available through currentColumns and historyColumns; orderId may be absent, and a blank CSV order reference means omitted. BOM and quoted fields are supported. Duplicate, unknown, or missing required headers and irregular rows are rejected. History-only header CSV represents explicit empty history.
How to read the evidence
The identity comparison is exact account, conversion name, GCLID, and canonical conversion-time instant. Google documents a GCLID/name/time tuple for legacy file deduplication; this report adds your account scope to avoid cross-account merging. It does not model the Google Ads API's separate order_id behavior.
Only a supplied accepted history label establishes evidence of a previously accepted identity. Rejected-only, pending, unknown, or missing history does not establish acceptance or prove that a conversion is new. historyCoverage describes this submitted comparison only, even when set to complete. Outcomes are your labels and are never verified against live Google state.
Repeated current identities retain every source reference. Payload values are compared exactly after decimal normalization, without floating-point rounding. A same-order reference with a changed GCLID or time in the same account and conversion name is an order-drift review signal, not proof of a duplicate sale. Different accounts and actions remain separate. The report does not infer click age, GCLID ownership, attribution, delivery, consent, platform acceptance, or adjustment eligibility.
Results and limits
One dataset item contains the complete report, summary, supplied rows, and evidence rows. Download full JSON, all-evidence CSV, review/unresolved CSV, and escaped standalone HTML. CSV cells beginning with spreadsheet formula markers are neutralized. Use the HTML download link and open the file locally.
The maximum is 2,000 combined current and history rows and 4 MB total input JSON. Identifiers are limited to 160 characters. Full JSON must remain below 8 MB and each export below 9 MB; highly repetitive or long data may require smaller batches. There are no external calls or automatic corrective writes. Inputs and outputs are stored in your Apify run storage, so apply your own access and retention settings.
Pricing
The intended Store configuration is $0.25 per completed report with platform usage included. One completed report uses one report-completed event. Invalid input, insufficient budget, or output-cap rejection is stopped before that report event. Resuming the same run restores its saved report and exports without a second report item or charge. A fresh run is another report and is billable again. Check the Store's current pricing panel before running.
References
Google's offline-import FAQ explains the legacy tuple and use of upload-result records. Google Ads API offline conversions documents the separate API workflow. This Actor produces supplied-data evidence for human review and does not certify a Google account or conversion process.