GA4 Ecommerce Purchase & Order Reconciliation
Pricing
$0.25 / completed report
GA4 Ecommerce Purchase & Order Reconciliation
Reconcile supplied GA4 purchase exports with store orders by transaction ID. Flag duplicate IDs, missing counterparts and comparable revenue differences. Export JSON, CSV and HTML. Prepared CSV/JSON only; no Google login or automatic tracking repair. $0.25 per completed report.
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
5 days ago
Last modified
Categories
Share
Find purchase and order disagreements before your next tracking review
GA4 Purchase & Order Evidence Report compares the transaction IDs, currencies and comparable values in two exports you supply. Ecommerce analysts and agencies can use the source-linked report for a daily or weekly check, or after a tracking release. It flags duplicate IDs, absent counterparts in the supplied window and decimal value differences that deserve investigation.
$0.25 per completed report, with platform usage included. Start with the synthetic example in Apify Console; no Google login or local programming setup is needed for that example. For your real data, prepare the two exports and explicitly state their scope, timezone, completeness and value basis. This Actor does not fetch exports or automatically fix tracking.
Try the worked example in Apify Console
- Open this Actor in Console and inspect its prefilled synthetic input. The supplied example declares one property, one comparison window and matching value bases.
- Check the displayed price and start the run. A completed run produces one report.
- Open the run's Output and download
report.htmlandfindings.csv. The sample has 8 purchase rows and 5 order rows: 1 matched transaction group and 5 flagged groups. Its missing-ID and outside-window rows keep the overall outcome incomplete. - Inspect transaction
00002: purchase value15.20versus order value15.00. The same-currency difference0.20exceeds the stated0.01tolerance, and source references identify the rows to investigate.
Get the preparation templates, local assembler and synthetic worked report. The kit includes a short walkthrough and a repeat-period workflow. The example is invented demonstration data, not customer activity, a measured conversion rate or proof of tracking failures.
Prepare your real GA4 and backend exports
Use one property and one export scope per report. The kit's two CSV templates have explicit column mappings and a config file. Delete every synthetic data row before adding your own records. Keep IDs as text so leading zeros, case and whitespace survive; the Actor compares IDs exactly and does not match by customer name, amount or email.
Each source needs transaction ID, timestamp, currency and comparable value. Supply normalized JSON rows, or CSV text with an explicit mapping to distinct existing columns. Unknown fields can be null in JSON or blank in CSV; they remain unknown rather than becoming zero, USD or an invented date. Monetary values must be nonnegative decimal strings with at most 18 integer and 6 fractional digits. Numbers, exponents, grouping separators, signed values and refunds are not accepted in this purchase-value workflow. Currency codes must be uppercase three-letter strings.
Google's report export guide explains CSV downloads. A report export is not automatically an event-level input for this Actor. Aggregated rows, daily dates or missing per-row currency/value fields need preparation and may not support this comparison. No native GA4, BigQuery or Shopify CSV preset is promised. Unzip the kit and open prepare.html locally: choose your two prepared CSV files, review the configuration and download input JSON. No installation is needed. The page reads files locally and makes no network requests. An optional Node.js assembler supports scripted preparation without packages or account access.
Declare the comparison policy explicitly
See the Input tab for every field. Set propertyScope, exportScope and a start-inclusive, end-exclusive window. Window and known row timestamps must be real RFC3339 timestamps with seconds and the same explicitly declared fixed offset, such as Z or +05:30. Normalize local dates and daylight-saving transitions yourself; no timezone is inferred.
Declare purchaseCoverage and orderCoverage separately as complete, partial or unknown. Use complete only when that source includes every relevant record for your scope/window. Partial or unknown coverage keeps absent counterparts unresolved. A matched supplied pair does not certify full tracking coverage.
State purchaseValueBasis and orderValueBasis, for example “merchandise net of discounts; excludes tax and shipping.” Values are compared only when these labels agree exactly and both currencies match. Prepare any tax, shipping or discount adjustments yourself. tolerance is an absolute allowed decimal difference for each compatible pair; equality at the tolerance boundary is accepted. There is no currency conversion or mixed-currency total.
Download a reviewable exception report
| Output | Use |
|---|---|
report.html | Standalone summary and source-linked evidence for a reviewer. |
findings.csv | Flagged and unresolved evidence to investigate. |
evidence.csv | All evidence, including accepted matches and outside-window rows. |
OUTPUT | Full JSON report, scope, policy, input fingerprint and summary. |
The dataset contains one complete report with a rows array. Each finding includes an evidence ID, transaction ID, code/reason and positional purchase/order references, with optional source-row labels. Groups may be both flagged and unresolved, so those counts are not mutually exclusive. Repeated backend IDs, unknown times and IDs reused outside the window cannot become unique accepted matches. CSV exports neutralize spreadsheet formula prefixes; HTML escapes supplied content and uses no external resources. Import CSV identifiers as text when opening them in a spreadsheet.
Repeat the check through the API or a saved workflow
Save the mappings and comparable-value policy after verifying your first real period. For each new day/week, replace both exports, change the window, recheck completeness and save the report with the input fingerprint and run ID. The preparation kit explains this recipe. The API tab provides the account-specific request example for passing the same JSON programmatically, including use through an Apify integration. This Actor does not schedule runs or retain a cross-run business history for you.
Each new run is a new billable report, even if it repeats the same period. Check an existing run's status before starting another one. Recovery within the same run preserves one report item and one report event; interrupted export writes are repaired before charging when recovery is possible. Invalid input, an insufficient report-event budget and output that exceeds the size limits are rejected before charging the report event.
Pricing and limits
The price is $0.25 per completed report with platform usage included and no startup or per-dataset-item fee. Combined purchase/order rows must not exceed 5,000, and the entire JSON input must not exceed 4 MB. Full JSON output must be below 8 MB and each export below 9 MB. Split larger comparisons into explicit, nonoverlapping scopes/windows if you reach a limit.
Questions, limitations and support
Does an absent purchase row prove GA4 is broken?
No. It describes absence in these supplied exports/window, with the declared coverage. It does not diagnose consent, adblock, attribution or event-collection failures. Google's ecommerce validation guide explains how to check live collection. Events discarded or deduplicated by GA4 cannot be reconstructed by this report.
Can I upload a standard order CSV unchanged?
Only if its mapped fields already meet the normalized contract. Per-row identity, real timestamps, currencies and comparable values must be available. The Actor does not guess tax/shipping inclusion or supply missing fields from account credentials. Upload only the opaque IDs and data needed for this comparison; inputs and results are retained in Apify run storage.
What should I share when asking for help?
Use this Actor's Issues tab and describe the input shape and finding code with a small anonymized example. Keep the original exports locally for your own review. The report is bounded evidence for human investigation, not accounting advice or a tracking certification.
Download the synthetic worked HTML report. Open it locally to inspect the sample before starting a paid run.