In the US, shoppers can now check out inside Copilot, Gemini and Google AI Mode.

Track AI checkouts in GA4, without rebuilding your tracking

Orders placed inside AI assistants never load your store, so your GA4 tag can’t record them. GapFill: GA4 Server Tracking compares your Shopify orders with GA4 and sends the missing purchases via the Measurement Protocol, along with everything else your tag missed. Your existing tag stays in place.

AI Assistant

Recovered AI orders are sent with the assistant as the source and ai-assistant as the medium, so they’re attributed to GA4’s AI Assistant default channel.

  • Free GA4 vs. Shopify gap report
  • Nothing is sent until you approve
  • Your existing tag stays in place
Illustration of the GA4 gap report. Orders are examples.

AI assistants are becoming a sales channel. Your GA4 reports don’t show it yet.

In the US, shoppers can already ask Microsoft Copilot, Google AI Mode or Gemini for a product and pay without leaving the chat. These agentic checkouts never load your store, so your GA4 tag never fires and the revenue never shows up in your reports.

GapFill sends those orders to GA4 with the assistant as the source and ai-assistant as the medium, so they’re attributed to the AI Assistant default channel. You can see how much revenue AI is driving and compare it with search, social and the rest of your mix.

AI checkouts aren’t the only gap

GA4 records a purchase only when its tag fires in the buyer’s browser. When it doesn’t, the order exists in Shopify but not in GA4, and your revenue and channel performance are under-reported.

How a purchase gets into GA4

  1. 1Order placed
  2. 2Thank-you page loads
  3. 3GA4 tag fires
  4. 4Tracked in GA4
In every case the order exists in Shopify but never reaches GA4, and fixing the tag alone won’t close the gap.

GapFill sends only what GA4 is missing

Your existing tag stays in place. GapFill waits for GA4 to finish processing, reconciles Shopify orders against GA4 purchases by transaction_id, and sends only the missing purchases server-side.

  1. 1

    Wait 26 hours

    GA4 finishes processing the purchases your tag tracked

    Shopify orders

    • #1001
    • #1002
    • #1003
    • #1004
    • #1005
    • #1006
  2. 2

    Reconcile by transaction_id

    Shopify orders are matched against GA4 purchases

    GA4 purchases (tag-tracked)

    • #1001
    • #1002
    • Missing
    • #1004
    • Missing
    • #1006
  3. 3

    Send only missing purchases

    Server-side, via the Measurement Protocol

    Sent by GapFill

    • #1003gapfill=1
    • #1005gapfill=1
  4. 4

    No duplicate purchases

    Orders already in GA4 are skipped. Sent purchases are tagged gapfill=1

    GA4 after GapFill

    • #1001
    • #1002
    • #1003GapFill
    • #1004
    • #1005GapFill
    • #1006

GapFill in 90 seconds

Client-side tag vs. server-side GTM vs. GapFill

The usual advice for these gaps is to move tracking to server-side GTM. For most of the merchants we work with, rebuilding the whole setup wasn’t worth it. GapFill leaves your tag alone and adds only what GA4 missed.

TopicClient-side tagThe Google & YouTube app or gtag. Tracks a purchase only when the tag fires in the browserServer-side GTMRoutes browser events through your own tagging server to GA4GapFillKeeps your existing tag. Sends only the purchases GA4 missed, server-side
Recovers missing purchases NoIf the tag doesn’t fire, the purchase isn’t trackedPartialRecovers some purchases lost to ad blockers. In a typical setup, off-site payment drop-offs are still missedBestSends every purchase GA4 missed, except buyers who declined analytics cookies
Agentic checkouts NoNo storefront page loads, so nothing is trackedNoIn a typical setup there’s no browser event, so nothing is trackedBestSent with the AI assistant as the source, e.g. copilot.microsoft.com
Setup effort BestNothing to changeNoA full migration of your tracking setupBestInstall, sign in with Google, done
Cost BestNo extra costPartialServer costs plus setup and maintenance timeYesFree report. Sending from $19/month
Before you commit NoNo visibility into how much is missingPartialYou see the impact only after migratingBestThe free report shows what’s missing first
Recovers missing purchases Client-side tag:NoServer-side GTM:PartialGapFill:Best
Client-side tag
If the tag doesn’t fire, the purchase isn’t tracked
Server-side GTM
Recovers some purchases lost to ad blockers. In a typical setup, off-site payment drop-offs are still missed
GapFill
Sends every purchase GA4 missed, except buyers who declined analytics cookies
Agentic checkouts Client-side tag:NoServer-side GTM:NoGapFill:Best
Client-side tag
No storefront page loads, so nothing is tracked
Server-side GTM
In a typical setup there’s no browser event, so nothing is tracked
GapFill
Sent with the AI assistant as the source, e.g. copilot.microsoft.com
Setup effort Client-side tag:BestServer-side GTM:NoGapFill:Best
Client-side tag
Nothing to change
Server-side GTM
A full migration of your tracking setup
GapFill
Install, sign in with Google, done
Cost Client-side tag:BestServer-side GTM:PartialGapFill:Yes
Client-side tag
No extra cost
Server-side GTM
Server costs plus setup and maintenance time
GapFill
Free report. Sending from $19/month
Before you commit Client-side tag:NoServer-side GTM:PartialGapFill:Best
Client-side tag
No visibility into how much is missing
Server-side GTM
You see the impact only after migrating
GapFill
The free report shows what’s missing first

Tap a row for details

For a detailed comparison, see GA4 Not Tracking All Shopify Purchases? How to Find and Recover Missing Transactions.

Guardrails

Deduplicated by transaction_id
An order is never sent if GA4 already has its transaction_id, and GapFill checks again after sending.
Auto-pause on anomalies
If the gap suddenly spikes, GapFill assumes your tag broke and pauses, so it never masks a tracking problem.
Consent-aware
GapFill follows Shopify’s Customer Privacy settings. Orders from buyers who declined analytics cookies are never sent, and where consent is required, only orders with confirmed consent are.
Fully labeled
Every recovered purchase carries gapfill=1, so you can segment it from tag-tracked purchases in GA4.

How it works

  1. 01

    Install and connect GA4

    Sign in with Google and pick your store’s GA4 property. Nothing about your current tag changes.

  2. 02

    Run the free gap report

    See which of the last 30 days’ orders GA4 never recorded and the revenue at stake, broken down by channel, source / medium and payment method.

  3. 03

    Approve, and GapFill backfills hourly

    Every hour, orders still missing from GA4 26 hours after purchase are sent. You can review each one before you approve.

Pricing

The gap report is free. Sending to GA4 is on the Standard plan, with a 14-day free trial. Each purchase, refund or cancellation sent counts as one event.

Free

$0

See what GA4 is missing

  • GA4 vs. Shopify gap report (last 30 days)
  • Breakdown by channel, source and payment method

Standard

$19/month

Recover missing purchases in GA4

  • Everything in Free
  • 200 events/month included
  • $0.02–$0.05 per event after that
  • AI and social app checkouts, sent by default
  • Subscription renewals, refunds and cancellations, if you turn them on

FAQ

Does GapFill replace my GA4 tag?

No. Keep your current setup. GapFill only sends purchases that GA4 didn’t track.

Could a purchase be counted twice?

An order is not sent if GA4 already has the same transaction ID. GapFill waits at least 26 hours for GA4 to finish processing before it decides.

How do AI checkouts show up in GA4?

The source is the AI assistant (gemini.google.com, copilot.microsoft.com and so on) and the medium is ai-assistant, so in event-scoped reports they’re attributed to GA4’s AI Assistant default channel.

Which orders does GapFill send?

By default, online store orders that GA4 didn’t track, and in-app checkouts in AI assistants and social apps. Subscription renewals, refunds and the rest are sent only if you turn them on in Settings.

How is customer consent handled?

GapFill follows Shopify’s customer privacy settings. Orders from buyers who declined analytics cookies are not sent, so GA4 and Shopify won’t match exactly.

How many orders do I need?

GapFill needs at least 20 purchases in GA4 to match them against your orders. Below that, the report says it can’t match yet.

Will my Google Ads conversions go up too?

GapFill sends purchases to GA4. Whether they count in Google Ads depends on whether your ads account imports GA4 conversions.

What happens if I uninstall?

Sending stops. Purchases already sent stay in GA4.

See all questions

Ryushi Nagata, CEO of ULTRO Inc.

Why I built GapFill

I’ve worked in ecommerce marketing since 2010: at an ad agency, at an on-site personalization vendor, running a DTC brand of my own, and at a Shopify app developer. Today my company, ULTRO, helps Shopify brands with everything from store builds to ads and CRM. The question I hear more than any other is a simple one: why doesn’t GA4 match Shopify?

It’s rarely a broken tag. Buyers pay off-site and never come back to the thank-you page. Ad blockers stop the tag. And now that checkout is moving inside AI assistants, some buyers never visit the store at all. Server-side tagging can fix part of this, but it’s a real project, and most merchants I worked with decided it wasn’t worth it.

So I built the tool I wanted to hand them: keep your tag, and send only what GA4 missed. As more shopping moves into AI assistants, I expect this gap to grow. Start with the free report and see what your own store is missing.

Ryushi NagataCEO, ULTRO Inc. (Tokyo)Profile

The help pages cover setup and common problems. For anything else, email gapfill-support@ultro.co.jp. See the privacy policy for how GapFill handles data.

See what GA4 is missing from your store

The gap report is free. Decide whether to send anything after you’ve seen the numbers.

Run your free gap report
  • Free GA4 vs. Shopify gap report
  • Nothing is sent until you approve
  • Your existing tag stays in place