GA4 series / Lesson 2
GA4 setup is complete only when the acceptance record is ready
Do not treat GA4 setup as pasting a code snippet. For an ecommerce store, the real deliverable is a single installation path, test-order evidence, internal traffic boundaries, consent state, and a rollback record.
Lesson output
GA4 setup acceptance record
Core judgment
Realtime users do not prove setup quality
Next lesson
Event naming, parameters, and QA
Start with the deliverable
Account / Property / Data stream
Record the account, property name, primary domain, Measurement ID, timezone, currency, and admins.
Single installation path
Write down the primary path, backup path, publisher, version record, and rollback method.
Ecommerce event chain
Use DebugView, a test order, and next-day reports to prove event order, parameters, and order ID quality.
Privacy, filters, and Ads link
Record customer privacy, internal traffic rules, Google Ads link, and conversion import status; keep Consent Mode as a bridge to the later privacy lesson.
From data roles to setup acceptance
The previous lesson used a $48 order for a 20oz tumbler that began with Google Ads to separate four evidence layers. GA4 explains behavior and paths, Shopify confirms order truth, ad platforms record attribution signals, and the profit sheet shows whether money remained.
That decision tells you where to look for evidence. It does not prove that the current property, web data stream, and installation path receive this order's events and parameters completely and only once. One Realtime user can still come from the wrong property, duplicate installation, or an incomplete event chain.
This lesson therefore starts before report interpretation. Choose one installation path, record the property, stream, Measurement ID, time zone, and responsible lead, then use one test device and one Shopify test order to accept event order, purchase parameters, consent state, and internal traffic boundaries. If the acceptance record fails, pause event analysis, funnels, audiences, and Ads imports.
Setup textbook spine
Map where data comes from before touching a switch
Setup is not a successful Measurement ID paste. One named sender must deliver a defined event set into one named stream, and an order must prove the path. Start with the mechanism and complete case.
Reader, job, and completion ability
This lesson is for someone who has separated the data roles and now needs to prove that GA4 is trustworthy. You do not need to know every Google tag implementation detail, but you must be able to enter GA4 Admin and Shopify Settings and identify who can publish an app, pixel, or GTM version. New terms include Account, Property, Web data stream, Measurement ID, sending path, test device, DebugView, and rollback point.
The decision is not which installation method sounds most advanced. Choose one primary path for this store, then prove that product view, cart, checkout, and purchase reach the target property once. Completion is a reviewable acceptance record containing locations, versions, owners, test order, events and parameters, consent state, filter state, failure action, and rollback method.
Account
Organizes access and management. It answers who can administer, not whether store events enter the correct destination.
Property
Holds the production store analysis settings, time zone, and currency. Realtime can show users even when the team is viewing the wrong property.
Web data stream
Binds the primary domain and Measurement ID to one web input. It is the property entry, not proof of event quality.
Sending path
The Shopify app, app pixel, custom pixel, GTM, or theme code that actually sends data. Multiple purchase senders create duplicates.
Fixed case: turn the prior order into setup acceptance
The store still sells the leakproof 20oz tumbler to the US market, and the GA4 property uses America/New_York. The sampled transaction ID is TMB-1048. In Shopify, the teaching test appears as order #1008, paid at $48 in USD, with item ID TMB-20-OZ. Recording transaction_id separately from the displayed Shopify order number prevents the team from using “order ID” for two fields.
This store chooses the Shopify Google & YouTube app as its primary GA4 path. GTM may retain other approved tags, but it does not send this case's purchase. Old theme code and the custom pixel remain disabled for that event. This is not a universal recommendation. It is the easiest path to accept and roll back under this store's ownership, checkout boundary, and maintenance ability.
| Location | Action | Evidence | Pass | Failure move |
|---|---|---|---|---|
| GA4 Admin | Confirm production property, time zone, currency, and web stream | Property name, primary domain, Measurement ID, and owner record | Everyone uses one production entry | Stop publishing and correct property or stream |
| Shopify Customer events | List app pixel, custom pixel, and old code | Status, version, owner, and purchase duty for each sender | Only one path owns purchase | Pause the duplicate path; do not hide it with a filter |
| Tag Assistant / DebugView | Walk the full purchase on one test device | view_item → add_to_cart → begin_checkout → purchase in time order | Reasonable order and one purchase | Return to the missing or duplicate sender |
| Shopify Orders | Reconcile #1008 with TMB-1048 | Payment, $48, USD, TMB-20-OZ, and GA4 parameters | ID, value, currency, and items agree or are explained | Do not import Ads or interpret revenue |
| Next-day reports | Find purchase under the same date and time zone | Processed purchase and transaction evidence | The test is reviewable outside DebugView | Check delay, filters, and date before calling it missing |
Why one order is still not enough
A test order proves that the path worked for one device, consent state, and release version. It does not prove that every browser, market, payment method, and real shopper will succeed. It also does not prove that standard reports finished processing or authorize an ad platform to bid from purchase. After DebugView passes, perform the next-day report check and watch duplicates, missing events, and order reconciliation through a seven-day stability window.
Consent is only a setup input here. Record rejected and accepted test states and visible events without interpreting legal duties or calling lower visibility a bug. Keep the internal traffic filter in testing first because data excluded after activation cannot be restored to processed reports. If evidence is missing, stop funnels, audiences, and Ads imports. When it is complete, the next lesson evaluates event naming and parameter meaning.
Backend purpose map
Know why you open each backend screen
Do not treat GA4 setup as “find an ID and paste it everywhere.” Each backend screen confirms one thing: where data enters, whether events fire, whether an order reconciles, whether consent behavior is clear, and whether Ads import is safe. This block is interactive. Start with the backend screen where you are stuck.
Do not open every backend in sequence. Choose the screen that owns the missing proof. If property, domain, and Measurement ID do not align, stay in GA4 Admin. If purchase duplicates, inspect Shopify Customer events and GTM senders. More tabs do not repair an undefined problem.
Shopify Customer events / pixels is the default because the case uses the Shopify app as its primary path. Before selecting another location, state why it opens, expected proof, what it cannot prove, and the failure route. Use the panel only to calibrate that reasoning.
The static default conclusion is to record app pixel, custom pixel, old theme code, and GTM status and owners in Shopify Settings → Customer events. Pass when one path owns purchase and every other entry is explicitly non-sending. This proves sender responsibility, not parameter quality.
If no one can name the primary path, pause new releases and build the sender inventory. If ownership is unique, move to DebugView and order reconciliation. Do not begin by deleting old code; retain its version and rollback point first.
Correct the misread
Realtime users only prove that GA4 received some data
Setup is not accepted because one active user appears. It is accepted when a test order and DebugView prove event order, parameters, order ID, and value quality.
Account / Property / Data stream
The account is the company or brand container, the property is the main reporting space, and the data stream is the website or app entry point into GA4.
What breaks
If teams create separate properties casually, journeys, audiences, and Ads imports fragment.
Single installation path
The installation path is where the GA4 tag enters the site: Google tag, GTM, Shopify Google & YouTube app, or Customer events.
What breaks
If the same GA4 setup appears in theme code, GTM, apps, and custom pixels, purchase can duplicate.
Ecommerce event chain
The event chain is the shopper action order: view_item, add_to_cart, begin_checkout, and purchase.
What breaks
Realtime users do not prove purchase, transaction_id, value, currency, and items are correct.
Privacy, filters, and Ads link
This layer decides what can be collected, which internal traffic is labeled, and whether GA4 can pass trusted key events to Google Ads.
What breaks
If consent state, internal testing, and Ads imports are mixed, later report gaps become hard to explain.
Setup evidence lines
Align four evidence lines before calling GA4 installed
These four evidence lines turn setup from a technical action into operating evidence. If they are not aligned, later Ads, funnel, audience, and profit analysis inherit bad data.
Single primary path evidence line
One GA4 ecommerce event set needs one primary sending path. Otherwise Realtime can look active while purchase is duplicated.
Pass standard
The team can name which one owns the main event chain: Google tag, GTM, Shopify app, Customer events, or old theme code.
Stop condition
If no one can explain where page_view or purchase came from, stop at duplicate tracking diagnosis.
Test order evidence line
The core of ecommerce setup is not traffic volume. It is whether one real checkout path creates one trusted purchase event.
Pass standard
A 20oz tumbler test order reconciles across Shopify, DebugView, and next-day reports with transaction_id, value, currency, and items.
Stop condition
If purchase lacks order ID, value, or item array, do not import it into Google Ads or read funnels yet.
Internal traffic evidence line
Launch tests, agency sessions, and development traffic can pollute small samples, especially during a new store's first week.
Pass standard
Internal traffic is identified, filters stay in testing first, and activation happens only after checking real shoppers are not affected.
Stop condition
If test orders, staff visits, and real shoppers are mixed, do not judge conversion rate from same-day data.
Privacy and Ads evidence line
Shopify customer privacy, consent state, and Google Ads import decide which signals can be collected, modeled, or used for bidding.
Pass standard
The record shows pre-consent and post-consent event behavior, Google Ads link status, key event import status, and bidding boundaries.
Stop condition
If consent state and Ads import are not verified, do not blame Ads / GA4 gaps on traffic quality.
Setup acceptance triage
Choose the blocked acceptance point before deciding what to fix
Actively choose the blocker that looks closest to your current state. The right panel shows which backend to open first, what proof is required, where to route the failure, and what move is blocked for now.
A triage input must be an observable failure, not “GA4 feels wrong.” Examples include a test device missing from DebugView, purchase missing parameters, no transaction_id match in Shopify, or an Ads link importing before event acceptance. Specific symptoms keep repair on one surface.
The default blocker starts at stream and tag entry because a wrong entry invalidates every later proof. Predict the failure route and blocked move before selecting, then use the result to check whether the repair scope expanded without evidence.
The static default route is to confirm property, web stream, Measurement ID, and domain in GA4 Admin, then verify the same ID at the actual sender. If they differ, repair the entry and rerun the test device. Until it passes, do not interpret funnels, build audiences, or import Ads purchase.
When switching to parameter, order-reconciliation, or Ads/consent blockers, change only the required proof and failure route. A triage result does not accept the full setup; it chooses the next smallest repair.
Consent Mode boundary
Only flag Consent Mode here: consent state changes data visibility
This lesson does not expand CMP, regional law, or advanced mode. It keeps one setup reminder: when users accept or reject consent, what GA4 and Ads can see changes. The full privacy measurement lesson comes in Lesson 4.
Banner or CMP
Record whether the store uses Shopify customer privacy, a third-party CMP, or a custom banner.
What breaks: No one knows where consent state comes from, so Ads / GA4 gaps become guesses.
Pre-consent events
Reject cookies, then walk product page, cart, and checkout entry to see what GA4 still receives.
What breaks: The team may call the data missing when the real issue is a consent boundary.
Post-consent events
Accept cookies, repeat the same path, and compare DebugView, purchase parameters, and Google Ads import status.
What breaks: The ad system may learn from incomplete or inconsistent conversions.
Bidding boundary
Write which key events can be imported into Google Ads and which are only ready for tracking QA.
What breaks: Unverified purchase events may be used for bidding.
Path selector
Choose one primary path before adding code
Google setup docs show how to create the property and stream. Ecommerce teams also need why this path fits, how it will be accepted, and where it may duplicate.
Path choice is constrained by ownership and checkout boundaries. An app path can simplify standard ecommerce maintenance. GTM fits teams with container governance, event contracts, and release review. A custom pixel belongs only to a defined gap with an owner. Without governance, “more flexible” usually means harder to accept.
The Shopify app path is selected by default. Judge fit by checkout purchase coverage, required parameter access, the ability to disable old senders, and a recoverable prior version, not by installation speed alone.
Start from store state
The Shopify store is starting GA4 and no one maintains GTM yet
Better choice: Prefer Shopify Google & YouTube app or the official app pixel
It changes less code and makes checkout plus order-status acceptance easier inside Shopify’s current pixel model.
Do not send the same purchase again from theme code, GTM, and Customer events.
Start from store state
The team already uses GTM version control for several channel tags
Better choice: GTM can be the primary path after variables, triggers, and publisher are named
GTM is useful for governance, but it is not automatically simpler. More control also creates more duplicate and definition risk.
Do not skip Shopify Customer events and test-order reconciliation just because a GTM container exists.
Start from store state
The store needs custom checkout, Customer events, or a custom pixel
Better choice: Treat Customer events as the acceptance focus and prove sandbox, consent state, and purchase deduplication
Shopify checkout boundaries cannot be guessed from theme code; they need current pixel behavior and order-ID proof.
Do not keep old Additional scripts, old theme pixels, and a new custom pixel active together.
Start from store state
The older site already has Google tag or legacy UA code pasted somewhere
Better choice: Run duplicate tracking diagnosis before choosing the primary path
Old code can make Realtime look fine while purchase, value, or items duplicate.
Do not add another tag before old entry points are checked.
Selected path
Shopify Customer events / pixels
Acceptance proof
Customer events shows the app pixel or custom pixel, the pixel sandbox and customer privacy boundary are clear, and purchase reconciles with the Shopify test order.
Main risk
Sandbox, customer privacy, and old theme-code migration issues can cause missing data, duplicates, or consent mismatch.
The static default is the Shopify Google & YouTube app owning GA4, GTM not sending purchase, and old theme code plus custom pixel disabled for purchase. Acceptance requires one DebugView purchase reconciled to Shopify #1008 / TMB-1048, not an “app connected” badge.
If GTM or a custom pixel is selected, also rewrite the owner, release version, duplicate-entry inventory, acceptance proof, and rollback action. Changing the button alone does not make a valid design.
Installation matrix and migration record
Keep the migration record complete before an authorized person changes one path at a time
Shopify Google & YouTube, GTM, third-party apps, and custom pixels are not four places to paste a Measurement ID in parallel. They are four kinds of possible sender. Record current entries, consent conditions, a test order, and rollback boundaries before deciding the next actual readback.
Local migration preparation
Selections, checks, and fields only form a record in this browser
It does not install an app, publish GTM, change a theme, disable a pixel, alter consent, import an Ads conversion, or create a test order. When an actual account change is needed, use this record for same-target readback with someone who has authority.
Current installation-path hypothesis
Shopify Google & YouTube app
Fits a store maintaining a standard Google integration in Shopify’s current pixel model. First read the exact app or app pixel shown in Customer events instead of assuming a connected app covers every event.
Migration order
First inventory current senders in theme code, GTM, Additional scripts, Customer events, and third-party apps. Preserve a baseline, then have an authorized publisher isolate old paths one at a time.
Duplicate-tracking risk
The main risk is that the app already sends purchase while old theme code, GTM, or a custom pixel still sends the same order. A green connection state does not rule out duplicates.
Consent branch
Record Customer privacy, consent-banner state, and the test device’s consent condition separately. They describe a visibility boundary and do not replace regional compliance review.
Acceptance first
Use one test order to compare Customer events, DebugView, transaction_id, value, currency, items, and one purchase, then review processed reports the next day.
Duplicate-tracking fault practice
Turn a visible symptom into a readback sequence. This does not disable pixels, modify consent, or import a conversion. It helps avoid hiding the cause with several simultaneous changes.
Read first
First compare each event’s source, time, transaction_id, and container or pixel clues, then return to the theme, GTM, Customer events, app, and Additional scripts inventory.
Contain first
Preserve the baseline and duplicate evidence, and pause Ads import or revenue interpretation. Do not disable several paths at once just to “try it.”
Isolated retest
After an authorized publisher isolates one sender, use a new test reference and read back one purchase plus its matching Shopify order again.
Migration review gates
A check means the item is written into the local record. It does not mean an actual tag, pixel, consent setting, Ads setting, or app is approved for change.
Installation-path fault exercise
One test order has two purchase events, and old theme code, GTM, and Customer events all remain in the inventory. Which response preserves evidence without creating a new production change?
Fillable migration record
Use only classroom aliases or authorized test references. Real buyers, payments, addresses, admin screenshots, and access credentials belong only in an authorized working environment.
Migration reference boundaries
Official pages checked: 2026-07-26. They help check current product boundaries and validation order. They do not replace readback for this store’s account, pixel, consent, orders, or Ads.
Backend evidence records
Do not just say it is installed. Leave five reviewable backend records
The useful output is not "GA4 is installed." It is a set of backend paths, fields, and record IDs someone can review next week. Check the records you have collected, then read what each one proves and when it should be rejected.
A check means the evidence was saved and can be reopened, not that someone glanced at the page. Each record needs a backend path, object or ID, test time, release version, owner, and conclusion. Without them, next week cannot separate a new release from an old configuration.
The initial 0/5 state is honest. Complete stream and sender records before test-order and filter/Ads boundaries. Do not check missing evidence simply to make progress look complete.
The static completion standard is 5/5: property/stream, Tag Assistant/DebugView, Shopify Customer events, test-order parameters, and internal traffic plus Ads link are recorded. If any is missing, the record must remain incomplete and name the downstream move on hold.
A 5/5 package proves setup evidence is complete. It still does not prove event naming quality, threshold-free reporting, or incremental Ads value. Later lessons own those questions.
30-minute setup acceptance script
Complete GA4 setup acceptance with a five-part script
These five parts connect account structure, primary path, test order, privacy boundaries, and the release/stop decision. The four-step testOrderSteps below remains the test-order execution path; the two are complementary.
0-6 min
FocusConfirm the account structure first: Account, Property, Web data stream, Measurement ID, primary domain, timezone, currency, and admin access must belong to one primary path.
EvidenceRead back the GA4 Admin account/property/data-stream pages and access record; a Measurement ID alone cannot replace structure evidence.
Action / outputWrite the account structure, owner, and last-check date into the setup evidence record; pause later acceptance if any anchor is missing.
6-12 min
FocusConfirm one primary sender: compare old theme code, GTM, the Shopify Google & YouTube app, Customer events/custom pixels, and third-party scripts, then name who sends GA4.
EvidenceRecord each entry’s enabled state, version, owned events, and disable access; use Tag Assistant/DebugView to prove what sends, not what “should not send.”
Action / outputOutput the primary path, duplicate paths, and isolation action; do not enter event, Ads, or funnel judgment before the path is known.
12-22 min
FocusRun one 20oz tumbler test order end to end, confirming DebugView event order, purchase parameters, and Shopify order ID reconcile.
EvidenceKeep the test device, view_item/add_to_cart/begin_checkout/purchase events, transaction_id, value, currency, items, order ID, and payment state.
Action / outputOutput “one complete purchase / repair event or parameters first / order and GA4 do not reconcile”; do not release without order evidence.
22-27 min
FocusCheck privacy and internal-traffic boundaries: Customer privacy, the Consent reminder, internal-traffic filters, and development/test traffic must not be read as real shoppers.
EvidenceRead back pre/post-consent event differences, Customer privacy/CMP path, filter testing/active state, test order, and release environment.
Action / outputOutput which signals are observable, modeled, or unobservable, and keep the filter in its safe state until verified; pause report interpretation while unclear.
27-30 min
FocusGive setup a clear release/stop conclusion: release, enter event repair only, stay directional, or pause Google Ads import.
EvidenceReview account structure, primary path, test order, privacy/internal-traffic boundaries, owner, rollback method, and next-day/7-day review dates.
Action / outputWrite status, blocked move, and next readback into the setup evidence record; this five-part script complements the four-step testOrderSteps below without renaming or replacing it.
20oz tumbler test order
Validate GA4 with one test order, not a feeling
A test order is not ceremonial. It proves Shopify orders, GA4 DebugView, next-day reports, and future Google Ads imports can point to the same purchase evidence.
Step 1
Prepare the test environment
Open DebugView, confirm the test device enters the debug stream, and record browser, market, currency, and cookie consent state.
The test device is not in DebugView, but the team uses Realtime user count as acceptance proof.
Fix debug parameters, Tag Assistant, GTM preview, or Shopify pixel status first.
Step 2
Walk the full buying path
Use a 20oz tumbler and walk from product page to cart, checkout, and payment success while recording each event.
view_item and add_to_cart work, but begin_checkout or purchase is lost at the Shopify checkout boundary.
Check Customer events / pixels, the Google & YouTube app, checkout extensibility, and old-script migration first.
Step 3
Match order ID and value
purchase appears once, transaction_id matches the Shopify order, and value, currency, and items reasonably match order details.
purchase duplicates, or GA4 value mixes tax, shipping, and discount definitions with no explanation.
Pause the duplicate path, write the revenue definition, then decide whether to fix parameters or leave profit logic to finance lessons.
Step 4
Recheck standard reports next day
The next day, the same test order appears as purchase evidence in standard GA4 reports or Explorations.
DebugView shows events, but standard reports do not; the team immediately assumes data was lost.
Check processing delay, filters, date window, identity thresholds, and report dimensions before calling it missing.
Duplicate tracking guard
Check four entry points before launch, then proceed
This is an active check. Each checked entry means you know where GA4 data comes from and where it will not be sent again.
Duplicate setup is easily mistaken for better performance because purchase rises. The guard must inventory every possible sender and retain positive evidence: which events it owns, whether it is enabled, its version, and who can disable it. “It probably does not send” is not checkable proof.
The initial 0/4 state remains stopped. Inspect the Shopify app, Customer events/custom pixel, GTM, and old theme or checkout code one by one. Even after 4/4, the test order must prove that purchase appears once.
The static rule is simple: at 0–3/4, do not import Ads or optimize media. At 4/4, the setup only earns permission to enter DebugView and the test order. If purchase appears twice, return to the sender inventory, pause the duplicate, and rerun the same order.
Write the guard result into the acceptance record. It cannot live only in browser state. A refresh may clear checks, but the versions, owners, and disabled-sender evidence must remain findable.
Acceptance evidence chain
DebugView is for event order and parameters, not just activity
Test like a real shopper: visit pages, view a product, add to cart, start checkout, place a test order, then check standard reports the next day.
Collection scope and ecommerce boundary
First identify which measurement layer you are seeing
Enhanced Measurement can add page and content behavior, but it is not an ecommerce-order implementation. Select a layer to see what it collects, what it is for, what it cannot replace, and how to verify it.
Enhanced Measurement: page and content behavior
What it collects
The enabled features in a Web data stream can automatically collect page_view, scroll, outbound click, site search, video engagement, file download, and form interaction signals.
What it does not replace
It does not replace view_item, add_to_cart, begin_checkout, purchase, refund, or the items array. A page_view or scroll cannot prove a product view, completed order, or reconciled revenue.
What it is for
Use it to understand how pages and content are used, such as scrolling, outbound clicks, or site search; first confirm the stream toggles and actual events.
How to verify
Read back the Enhanced Measurement toggles and scope in the stream, then use DebugView to see behavior events; this adds page/content evidence but cannot replace test-order acceptance.
Be careful with internal traffic filters. GA4 exclude filters permanently affect processed data; a safer path is to identify internal traffic first, keep the filter in testing, and activate it only after checking for false positives.
Copyable lesson notes
The final deliverable is a GA4 setup acceptance record, not a Measurement ID
GA4 setup will be reused by Ads, funnel, and profit analysis. Clear notes reduce the chance of mistaking tracking issues for business problems.
The copy button summarizes current choices, but dynamic text is not the only deliverable. Without clicking, first record the production property and stream, primary sender, test order #1008 / TMB-1048, $48 USD, one purchase, consent and filter states, owner, and rollback action.
“Copied” proves only a browser feedback state. It does not prove the record reached the task system or that evidence is complete. After copying, the owner reviews empty fields, saves links or captures, and records next-day and seven-day review dates.
Current copyable version
Choose the primary path, then check entry points. The notes below reflect your choices and can move into task tracking, review, or the next event-QA lesson.
Not copied yet: copy feedback is not setup acceptance.
Current pressure: Entry checks are incomplete, so do not import Google Ads conversions or optimize media from this data.
Current blocker: Data stream / Measurement ID is blocked. Current blocker: Data stream / Measurement ID. Fill the main property, stream, Measurement ID, responsible lead, and last verification date before event acceptance.
Four-step test order: put one test device in DebugView, walk product page, add to cart, checkout, and purchase, then reconcile transaction_id, value, currency, and items to the Shopify order.
Primary path: Shopify Customer events / pixels. Acceptance proof: Customer events shows the app pixel or custom pixel, the pixel sandbox and customer privacy boundary are clear, and purchase reconciles with the Shopify test order.
Migration candidate: Shopify Google & YouTube app. Preserve the sender inventory and baseline first, then have an authorized publisher isolate one path at a time.
Evidence records: 0/5. No backend evidence record is checked yet.
Migration review: 0/7. Complete the migration gates and wrong-choice exercise before treating a selector as a live configuration.
Consent Mode: this lesson only flags that consent state changes what GA4 and Ads can see. CMP, regional boundaries, and advanced mode belong in Lesson 4.
Minimum setup go line: unique primary path, DebugView event order, one purchase, complete transaction_id/value/currency/items, Shopify order match, internal filter state, Consent/Ads import boundary, responsible lead, rollback method, and review date are clear.
Checked entries: 0/4. No entry point is checked yet.
This week's action: finish the test order, next-day report review, internal-traffic test filter, and Google Ads link status record.
Blocked move: pause Ads import and funnel judgment until purchase, items, transaction_id, and consent state are verified.
Responsible lead: GA4 setup lead + Shopify / GTM publisher. Review window: next-day reports, 7-day stability window, next event-QA lesson.
Primary path
Shopify Google & YouTube app is the primary GA4 path; GTM does not send purchase.
Duplicate or missing-event debugging starts from the single primary path.
Test order evidence
Order #1008, 2026-06-05 10:42, purchase appeared once in DebugView.
Without order evidence, revenue and Ads imports are only provisional.
Internal traffic rule
Office IP is marked internal, and the filter stays in testing first.
GA4 exclude filters permanently affect processed data, so test before activation.
Rollback method
If purchase duplicates, pause the Customer events custom pixel and keep the app path.
Setup is not one-time work; when it fails, the team needs a safe revert.
Write this in the GA4 setup acceptance record: “The Shopify Google & YouTube app is the primary GA4 path. GTM, old theme code, and the custom pixel do not send purchase. Order #1008 / transaction_id TMB-1048 paid $48 USD; purchase appeared once in DebugView, and value, currency, and items reconciled to Shopify. Keep the internal traffic filter in testing; do not import Ads until event QA is complete.”
If any fact lacks evidence, mark it “not accepted” and keep the related Ads import or report interpretation paused. Once the fields are complete, carry forward the conclusion that the chain is unique and reconcilable, then let the next lesson evaluate event meaning and parameter quality.
Return to the GA4 Hub before routing setup acceptance to the next lesson
This lesson accepts the unique primary path, test order, and event arrival. Return to the introduction when data roles are unclear, or move to event QA when event fields are not accepted.
Minimum setup go line and stop / go rule
The minimum setup go line is: unique primary path, DebugView event order, one purchase, complete transaction_id/value/currency/items, Shopify order match, clear internal filter testing or active state, clear Consent/Ads import boundary, responsible lead, rollback method, and review date. If any item is missing, pause GA4 report interpretation. When those proofs exist, move into event naming, funnels, and Ads import. Consent is only an acceptance reminder here; CMP, regional boundaries, and advanced mode belong in Lesson 4.
Next: event naming and parameter design
If purchase, items, or transaction_id are not verified, do not read funnels yet. The next lesson tightens event QA.