Sometimes a purchase appears in GA4 but not in an ads manager, or an ads manager reports more purchases than the store has orders. Choosing the larger number or averaging the two may simplify the report, but it leaves the problem unresolved.
I start by separating the questions. Use order and payment records to check which orders were actually paid, GA4 to analyze visitor behavior, and the ads manager to assess conversions attributed to advertising. You need to establish how the three data sources connect, rather than assume that similarly named metrics mean the same thing.
Here, we will compare GA4 and Google Ads for an online store. We will exclude app purchases and offline conversions and first select one Google Ads conversion action that measures purchases. The checking sequence can also apply to other ad platforms, but you should not assume they use Google Ads' date and metric settings.
1. Check that the “purchases” you are comparing represent the same action
The word “purchase” can easily mix different units in a report. If someone buys three items in one order, that is one order and a quantity of three items. One purchaser can also place two orders. GA4's ecommerce purchases, items purchased, and purchasers are distinct metrics that reflect these differences. GA4 ecommerce metrics explained
Do not assume that all Google Ads “Conversions” are purchases, either. An account may contain conversion actions for inquiries, signups, and purchases. “All conversions” can include actions excluded from the standard “Conversions” column. Comparing that total with GA4 purchases can therefore start with a mismatch in scope. Google Ads guide to All conversions
When building a comparison table, record the conditions alongside the numbers, as follows.
| What to check | What to record |
|---|---|
| Scope | Whether the data includes website purchases only or also app, phone, and offline conversions |
| Action measured | Whether it measures completed payment, order creation, or a click on the purchase button |
| Report metric | The specific GA4 purchase metric and Google Ads conversion action and column |
| Exclusions | Where test orders, unpaid orders, and canceled orders are excluded |
Also check the Google Ads counting setting that determines whether to count one or multiple conversions after an ad interaction. This is different from correcting duplicate purchase tag submissions. Instead of changing the counting method to make totals match, first decide how you intend to count repeat purchases. Using Analytics events as Google Ads conversions
2. Matching calendar dates can still represent different reporting times
As an illustration, suppose a customer clicks a search ad on August 31 and pays on September 2. GA4 records the purchase on September 2, while the standard Google Ads conversion column may report it in August, based on the date of the ad click that received credit. The same order can appear in different months in monthly reports.
To compare the dates when purchases actually occurred, check columns based on conversion time in Google Ads, such as “Conversions (by conv. time).” Keep the conversion action being compared unchanged. If you switch to “All conversions” and include other actions, you broaden the scope while trying to align the dates. Reading Google Ads conversion data
Record the account time zones as well. A payment just after midnight in Korea may fall on the previous day in a report using another time zone. Align the time basis of the comparison before changing settings in an account that is already operating.
It is also important not to treat today's numbers as final. GA4 says processing can take 24–48 hours and reports may change during processing. Record when you exported the report and revisit the same period later. Do not interpret that processing guidance as a promise that every attribution figure becomes permanently fixed once that time has elapsed. GA4 data freshness
3. Separate “Where did the visit come from?” from “Which ad received purchase credit?”
Someone may arrive through a search ad, then return through a newsletter a few days later and buy. How you describe that purchase by channel depends on which visit you examine and how you assign credit for the purchase.
In GA4, “First user source / medium” describes how the user was first acquired, while “Session source / medium” describes what brought about the session. When you view key event credit using event-scoped source / medium dimensions without a prefix, the selected attribution model applies. Selecting the google / cpc row in the Traffic acquisition report therefore does not produce exactly the same set of purchases as Google Ads. Scopes of GA4 acquisition dimensions
When comparing channel credit, check whether you are using GA4's advertising or attribution reports, and record each tool's attribution model and conversion window. Also examine whether view-through and cross-device conversions are included. Differences can remain even after settings are aligned because the platforms observe and process different sets of data. Checking Google Ads data discrepancies
The purpose of this step is not to force the numbers to match. It is to identify whether you compared all website purchases with purchases attributed to ads, or interpreted a session-based analysis as conversion attribution.
4. Investigate unexplained differences at the order level
If a difference remains after you align the period and scope, select a sample of orders from your order and payment records. Comparing payment time, payment status, payment method, and whether data was sent to GA4 can reveal patterns hidden in the totals. You do not need to copy customer names or email addresses into the analysis.
For example, if payment was approved but the customer did not return to the confirmation page, check whether an implementation that sends purchase events only from that page missed the purchase. Conversely, check whether reopening the confirmation page sends the event again, or whether two integrations send the same order. These are hypotheses to investigate, not confirmed causes before you inspect the records.
In a GA4 web stream, sending a unique transaction_id for each order can reduce duplicate purchases. A repeated submission of the same order needs the same ID, and different orders need different IDs. Sending an empty string or a fixed ID for every order can cause purchases to be undercounted. GA4 transaction IDs and purchase deduplication
Also check whether Google Ads reports purchases from its own tag and purchases imported from GA4 as separate conversion actions. If the sum of those actions exceeds actual orders, it does not mean the orders occurred twice. Distinguish missing measurement from the summing of overlapping actions, then clarify the role of each action you need.
5. Once purchase counts align, review amounts and refunds separately
Revenue can differ even when purchase counts match. Check how shipping, taxes, and discounts are reflected in the item amounts, whether Korean won and other currencies are mixed, and whether the transmitted amount matches the actual order value. Giving both columns the same “Revenue” heading can make these differences easy to miss.
Do not assume that refunds flow through every system automatically. Measuring a refund in GA4 requires an implementation that sends a refund event with the relevant transaction ID. Purchase count, refund amount, and purchase revenue after refunds are separate metrics; they are not all reduced in the same way. Measuring ecommerce and refunds in GA4
Google Ads also supports retracting conversions and adjusting their value, but you must check whether your conversion type and integration support the feature. Sending a refund to GA4 alone does not establish that the ad report was adjusted in the same way. Google Ads conversion adjustments
I would show paid orders, cancellations and refunds, and conversions attributed to advertising separately in the report. Assessing order performance and evaluating ad operations require different answers. If this month's discrepancy is larger than last month's, the next step is to look for changes to settings, payment flows, and tag deployments, rather than invent an acceptable margin of error.
