Text version of this lessonExpand
Many accounts do not fail because ads cannot work. They fail because the system starts learning from dirty signals on day one. You think Google Ads is learning from purchases, but it may be learning from page visits, duplicate Purchase events, test orders, the wrong primary conversion, or a conversion with no order ID and value.
Boundary: tracking is training data, not technical cleanup
Last reviewed: June 6, 2026. This lesson is for ecommerce beginners before the first Search campaign. It covers Google Ads account readiness, Google tag, GA4 / Shopify comparison, primary / secondary conversion, enhanced conversions, and transaction ID. Admin paths can change, but the rule stays stable: prove that the system is learning from a real business action before spend starts.
This lesson answers three questions
- What: setup includes access, billing, tags, conversion actions, value, dedupe, and first-week review.
- Why: if the primary conversion is wrong, keywords, budget, bidding, and PMax learning move in the wrong direction.
- How: use one real test order or real lead to reconcile Google Ads, GA4, and Shopify.
Plain terms first
| Term | Plain meaning | Where you see it | What breaks |
|---|---|---|---|
| Google tag | Google's measurement tag on your site; it sends events and conversions to Google Ads or GA4 | Google Ads conversion setup, GA4 data streams, GTM, Shopify integrations | Duplicate, missing, or misplaced tags can miss or double-count Purchase |
| primary conversion | The main action Google Ads uses for bidding and optimization | Google Ads conversion action settings | If page view or test order is primary, the system learns the wrong goal |
| secondary conversion | An observation-only action, not the main bidding signal | AddToCart, BeginCheckout, supporting lead, or page engagement settings | If used as the main target for too long, low-quality visits may look successful |
| enhanced conversions | Hashed first-party customer data that improves conversion matching | Google Ads conversion settings, tag diagnostics, purchase or form path | It cannot fix broken baseline tracking; Purchase, value, currency, and transaction ID must work first |
| transaction ID | The unique order identifier used to detect duplicate purchases | Shopify orders, GA4 purchase, Google Ads conversion details, tag debugging | Missing or repeated IDs can inflate or distort ROAS and smart bidding |
Main artifact: Google Ads conversion launch acceptance sheet
This sheet is not paperwork. It blocks bad learning. Before every row has evidence, do not move into budget, bidding, scaling, or PMax decisions.
| Layer | Pass standard | Evidence | Responsible role / timing |
|---|---|---|---|
| Account basics | Billing, time zone, currency, permissions, and operators are auditable | Google Ads account setting screenshots and permission list | Ads lead, before launch |
| Tag source | Google tag, GTM, Shopify integration, or GA4 import source is documented | Tag diagnostics, trigger page, and implementation path notes | Data lead, before launch |
| Primary conversion | Only Purchase or qualified Lead participates in bidding | Primary / secondary setting screenshots | Ads lead, before launch |
| Deduplication evidence | One order counts once, and transaction ID is stable | Test order ID plus Ads / GA4 / Shopify reconciliation | Data lead, before launch |
| Value and currency | Value, currency, discount, tax, and shipping definitions are explainable | Sample sheet for the latest 10-20 orders | Finance / data, first week |
| First-week review | Google Ads, GA4, and Shopify gaps have daily explanations | Daily reconciliation notes and issue handling | Growth lead, first 7 days |
Decide what bids and what only observes
Google defines primary conversion actions as actions used in the `Conversions` column and for bidding optimization. Secondary conversion actions are mainly for observation. A common beginner mistake is importing every GA4 event into Google Ads and then not knowing what is training the system.
| Event | Role | Primary? | Risk |
|---|---|---|---|
| Purchase / qualified Lead | Real business value action | Can be primary | Must verify value, currency, dedupe, and test-order exclusion |
| AddToCart / BeginCheckout | High-intent observation signal | Usually not long-term primary | Useful for funnel reading, but should not replace revenue for long |
| Page view / Session | Visit quality observation | Should not be primary | Can optimize toward cheap visits instead of purchases or qualified leads |
| Test order | QA evidence | Should not pollute reports long term | Unmarked test orders inflate early performance |
Google Ads, GA4, and Shopify are not the same report
These systems will not always show the same number because they do different jobs. The goal is not perfect equality. The goal is explainable difference.
| System | Job | Read first | Do not use it for |
|---|---|---|---|
| Google Ads | Bidding and delivery learning system | Primary conversions, conversion value, bid strategy, ad attribution | Do not use alone as the finance revenue baseline |
| GA4 | Site behavior, source path, and funnel analysis system | Event quality, source / medium, page path, funnel drop-off | Do not import every event into Ads bidding without review |
| Shopify | Order and revenue baseline | Order ID, net sales, refunds, discounts, tax, shipping | Do not expect it to explain ad attribution windows |
Test-order evidence pack: tracking is not done without proof
Run at least one real-path QA. Do not stop at a success message. Write down order ID, value, currency, transaction ID, and how the three systems match.
The pack needs four lines
- Test order ID / lead ID: for example, Shopify #1008, paid and then refunded or marked as test.
- value / currency / transaction ID: for example, 59.00 USD, transaction_id = 1008.
- Ads / GA4 / Shopify match: Shopify 1 order; GA4 purchase 1; Ads conversion pending or recorded 1.
- Deduplication and test-order handling: thank-you page refresh does not refire; test order is marked in first-week reconciliation.
Signal source responsibility router: decide whether Ads, GA4, or Shopify owns the next check
Tracking QA cannot stop at one successful test order. When these mismatches appear, assign the first explanation to the right system before you keep spending.
| Symptom | Likely cause | Responsible source | Do not do |
|---|---|---|---|
| Ads shows conversions, Shopify has no order | Thank-you page view, test event, or duplicate trigger counted as purchase | Google Ads conversion action and tag trigger point | Do not let smart bidding keep learning from this conversion |
| Shopify has orders, Ads has no conversions | Google tag missing, conversion action unfinished, consent limited, or attribution window misunderstood | Google tag / GA4 event chain and Ads conversion status | Do not raise budget or swap keywords immediately |
| Order count is close, but value / currency is unclear | Tax-included revenue, amount paid, merchandise subtotal, or discounted value mixed together | Shopify revenue definition, GA4 purchase parameters, Ads conversion value | Do not use value-based bidding while value is unclear |
| All GA4 events are imported, bidding responsibility unclear | Primary / secondary was not decided; GA4 import and native Ads conversion are blended | Google Ads conversion goals and each conversion action status | Do not set every GA4 event as primary |
20oz conversion signal lab: choose the dirty signal, then choose the repair
Use a 20oz tumbler test order as the working case. The most dangerous tracking problems look like good news. Two extra purchases in Ads may not mean the ad worked; the thank-you page may have fired twice. Many AddToCart conversions may not mean better buyers; the system may be learning cheap engagement. Order count can look close while the wrong currency still makes value-based bidding learn from bad value.
| Dirty signal | Surface read | Correct repair action | Write back to the acceptance sheet |
|---|---|---|---|
| Shopify #1008 has 1 order, but GA4 purchase and Ads conversions both show 2 | ROAS looks inflated | Fix duplicate firing first by checking thank-you page refresh, GTM triggers, Google tag, and transaction ID | One order maps to GA4 purchase 1 and Ads conversion 1; thank-you page refresh does not refire |
| Purchase is not primary, while AddToCart / BeginCheckout are primary | Funnel events are high and learning looks fast | Make Purchase the only primary action; keep funnel events as observation | Primary conversion: Purchase; observation events: AddToCart and BeginCheckout; budget actions return to order quality |
| Shopify order is 59 USD, but GA4 / Ads pass 59 CAD | Order count is close, but value is not trustworthy | Define value and currency before Maximize conversion value or tROAS | Purchase value, currency, tax, shipping, discount, and refund definitions are documented |
| view_item, add_to_cart, begin_checkout, and purchase are all imported into Ads and set as primary | Conversions are high, but the bidding target is unclear | Keep funnel events secondary; let Purchase train bidding | Conversion goals: Purchase primary; funnel events secondary; use them weekly to diagnose page and checkout paths |
The goal of this lab is decision practice before money starts moving. Tracking repair is not about making reports look tidy. It protects the system from learning the wrong action. Only after primary conversion, transaction ID, value, currency, and test-order handling are explainable should the next Search campaign lesson start making keyword and budget decisions.
First-week reconciliation: confirm the system is learning the right action
30-minute conversion launch review
Before launch, use 30 minutes to make tracking acceptance explicit. Spend the first 5 minutes on account basics: billing, time zone, currency, permissions, and who can edit conversion goals. Spend the next 10 minutes on signal sources: Google tag, GTM, Shopify integration, GA4 import, which source trains bidding, and which source only observes. Spend another 10 minutes on the test-order evidence pack: order ID, value, currency, transaction ID, Ads / GA4 / Shopify match, and whether thank-you page refresh fires again. Use the final 5 minutes to write the first-week review rule: who checks the gap daily, which gaps are explainable, and which gaps pause budget actions.
The output is not the sentence tracking is done. The output is a reviewable acceptance sheet. When the next lesson builds a Search campaign, the ads lead should see exactly which real business action Google Ads is learning from, which events only observe, and which value definitions are not ready for value-based bidding.
Three counter-signals beginners often miss
The acceptance sheet should not only mark pass. It should also record counter-signals. The first counter-signal is time lag: Google Ads, GA4, and Shopify do not always update in the same hour, so no Ads conversion on day one does not automatically mean tracking is broken. Several days with no explainable record is different and should pause judgment. The second counter-signal is the test order: a test order proves the path can run, but it is not a real ad-driven sale. Mark it in the first-week reconciliation so it does not inflate early performance. The third counter-signal is refund and discount logic: if the 20oz tumbler test order is paid and then refunded, Shopify net sales, GA4 purchase value, and Ads conversion value may differ for valid reasons. The review should explain the gap instead of forcing three reports to match perfectly.
These counter-signals keep beginners from changing the account too early. Right after tracking launch, the best action is usually not more budget, new keywords, or a bid change. The best action is explaining the gaps. If one order still cannot be explained across Ads, GA4, and Shopify, that signal should not be used for scaling decisions yet.
When acceptance passes, write one operating sentence: this account uses Purchase as the only primary action for this round, while AddToCart and BeginCheckout only observe; test order #1008 proves value, currency, transaction ID, and dedupe are explainable; the responsible person checks Ads, GA4, and Shopify daily in week one and pauses budget actions if duplicate purchases, currency mismatch, or conversions with no store order appear.
If the team cannot write that sentence, tracking has not truly passed acceptance and should not enter scaling or bidding changes.
Stop / Go rules
| Stop | Go | Proof |
|---|---|---|
| Page view / session is primary | Primary keeps only real purchases or qualified leads | Conversion action setting screenshot |
| One order is learned by two primary conversions | One bids, the other observes only | Test order ID and dedupe notes |
| No value / currency / transaction ID evidence | Value, currency, and order ID reconcile across systems | Ads / GA4 / Shopify sample match |
| Test orders pollute reports long term | Test orders are marked, excluded, or explained | First-week daily reconciliation notes |
Copyable lesson notes: bring the acceptance sheet into the next lesson
Before building the Search campaign, write four lines
- Primary conversion: which action is primary, and why it represents real business value.
- Observation events: which AddToCart / BeginCheckout / page engagement events are observation only.
- Test-order evidence: order ID, value, currency, transaction ID, and three-system match.
- First-week responsibility: responsible person, daily difference checks, and the signal that pauses budget actions.
How to use this output: treat these four lines as the copyable lesson notes for this lesson. Do not write only "conversion tracking is installed." Write which action trains the system, which events only observe, which order proves value / currency / transaction ID, and who pauses budget actions if week-one data goes wrong.
Tracking is not technical cleanup. It is ad-system training data. The next Search campaign build only makes sense after this acceptance sheet passes.