How to Track Purchases That Start in Instagram, Facebook and TikTok In-App Browsers on Shopify

|Dan Giura
How to Track Purchases That Start in Instagram, Facebook and TikTok In-App Browsers on Shopify

TL;DR

A tap on a social ad can open your store in the app's own browser instead of the phone's. Some shoppers browse there, then move to Safari or Chrome to pay. We found no Meta or TikTok page that says what that switch carries across, so test it: add to cart inside each app, open the page in the phone's browser, and read the cart and the address bar. What you see decides which click IDs survive, and the UTMs you control decide what GA4 says about the sale.

Key Takeaways

  • Test from each app on an iPhone and an Android phone. An empty cart in the phone's browser means it's a separate browser, and nothing captured in the in-app browser came along.
  • Shopify's cart lives in a cart cookie that lasts 2 weeks [4], so it's the easiest thing to check.
  • If the shopper switches on the landing page and the address still carries fbclid or ttclid, Meta and TikTok can still get the click with the purchase.
  • GA4 has no such recovery. Its only thread is the UTM tags on the same URL.
  • Meta and TikTok server-side purchases need the Plus plan ($39/month); GA4 is on the free plan, up to 100 storefront orders a month [9].
  • Don't add a second browser purchase tag to close the gap.

Start with a test in the Facebook, Instagram and TikTok in-app browsers

This takes about ten minutes. None of the three platforms documents, in anything we could read on October 14, 2026, whether its browser shares cookies with Safari or Chrome, so use your store as the instrument.

  1. Pick a product URL and add test parameters you'll recognize, for example:

    https://<your-domain>/products/<handle>?utm_source=iab_test&utm_medium=social
    
  2. Open that link inside Instagram, for example from a message you send yourself. Do the same in Facebook and in TikTok. A link in a message isn't an ad click, so confirm with a real ad click once a campaign is live.

  3. In each in-app browser, add the product to the cart. Before switching, check the address in the in-app browser still shows both test parameters.

  4. Use the app's menu option that opens the page in your phone's browser.

  5. In Safari or Chrome, check two things: the cart icon, and the full address. Are utm_source=iab_test and utm_medium=social still there?

  6. Repeat on the second phone. Nothing documented says an iPhone and an Android phone behave the same.

Write down two results per app: cart kept or empty, parameters kept or gone. Then try the switch from a second page, a collection page you tapped through to, and read the address again.

TikTok's own help describes web pages "opened within TikTok's in-app browser" [3]. What the menu switch carries across is what your test shows.

What does an empty cart tell you?

The phone's browser is a different browser, with its own cookies. Shopify keeps the cart in a cookie called cart, which "contains information related to the user's cart" [4]. If the cart was full in Instagram and empty in Safari, Safari never saw Instagram's cookies. You may have had a support email about a cart that vanished between Instagram and checkout; this split is one likely reason.

That matters for tracking because WeltPixel Conversion Tracking collects click IDs and browser IDs in the browser the shopper is using and attaches them to that browser's cart and checkout. A shopper who pays in Safari pays with Safari's cart, so the order carries what Safari saw. Anything captured in the in-app browser stays behind with the abandoned cart.

Meta's pixel "automatically saves a unique identifier to an _fbp cookie" [1], so Safari has its own _fbp, unrelated to the one in Instagram, and its own TikTok _ttp. On iPhones there's a separate layer, Apple's App Tracking Transparency, which applies inside the apps themselves; the iOS 14 tracking guide covers it.

If your cart did follow, the two browsers share storage on that phone and app, and most of this article doesn't apply to it. Run the second phone anyway.

Which click IDs can cross into Safari or Chrome?

Only the ones in the address bar. Meta passes its click ID "with the URL of an advertiser's website" when someone clicks an ad on Facebook or Instagram [1], as fbclid. TikTok's click ID is "a tracking parameter appended to a landing page URL when you click on an ad on TikTok" [2], as ttclid. Your UTM tags ride on the same URL.

So the page the shopper switches from decides the click ID. Switch on the landing page, and if your test parameters survived, the phone's browser most likely opens an address that still holds fbclid or ttclid; a real ad click confirms it. The app reads them there: Meta documents building fbc when an fbclid "is in the URL of the current page request" [1]. Shopify also records the first page of each session as its landing page [5], and when the paying browser caught no click ID, the app checks that recorded landing page for fbclid and ttclid before sending the purchase to Meta and TikTok. Switch from a product page two taps later, and the address no longer carries the click ID. Nothing recovers it.

The app doesn't add or strip anything in the address bar, so your test result isn't something the app changed. For the full list of which click IDs each destination keeps and recovers, see how to check whether ad click IDs survive the trip.

Who still gets the purchase?

The app sends the purchase from the Shopify order, server-side, whichever browser paid, so each connected destination gets it unless one of the app's optional, off-by-default skips for declined consent applies. What changes is what comes attached.

Destination What a switched order carries Plan
Meta Hashed email, phone, name and address details from the order, an external ID, Safari's IP and user agent, Safari's _fbp Plus
TikTok Hashed email, phone, name and address details from the order, an external ID, Safari's IP and user agent, Safari's _ttp Plus
GA4 Safari's client ID and session, and that session's campaign values Free

The IP address and user agent describe the browser that paid, not the one where the ad was tapped. Meta and TikTok can still match the purchase to a person on the customer details; whether it then counts for the campaign is up to each platform's own attribution. The Meta event match quality guide explains how matching is scored.

GA4 is where the switch shows. Safari is a new browser, so GA4 sees a new client ID, and on websites "the device ID gets its value from the client ID" [8]. With no UTMs and no referrer, GA4's default channel rules put that visit in Direct, the channel for users who arrive "via a saved link or by entering your URL" [7]. Direct can't take credit when another channel is on the path, "unless the path to key event consists entirely of direct visits" [6]. A new browser's path starts with that visit. So GA4 records the purchase in full, with the revenue, under Direct. Shopify's own reports do something similar for orders marked Direct after a browser change.

Tag every social ad URL before Black Friday

UTMs are the one part of this you control, and the only thread GA4 can follow across the switch. With utm_source, utm_medium and utm_campaign on the ad's URL, a test that kept them, and a switch on the landing page, Safari's session starts with them. GA4 then credits the sale to the campaign instead of Direct.

Three checks before the season:

  • Every Meta and TikTok ad URL carries UTMs, set in the ad's URL parameters, in a naming scheme you'll still recognize in December. The UTM tagging rules has one that keeps GA4, Shopify and the ad platforms agreeing.
  • Landing pages keep their query string. A redirect that drops it loses the UTMs and the click ID together.
  • Your test from the first section passes on the actual landing pages your ads use, not just a product page you picked.

There's no fix for the shopper who switches three pages in. Their sale is real, it reaches every destination, and GA4 will call it Direct.

Why will Meta and TikTok credit more social sales than GA4?

Meta and TikTok can match on the customer; GA4 can only follow the browser. After a heavy social weekend it's normal to see Meta and TikTok claim sales that GA4 lists under Direct, and on phones where your test showed an empty cart, the handoff itself produces that gap. Why ROAS differs between ad platforms covers the other reasons the numbers part ways.

The wrong fix is a second browser purchase tag. It doesn't bring the click back, and it can count the same order twice. Read the two side by side instead: on the days Meta or TikTok claim more sales than GA4's social channels show, check whether GA4's Direct rose too.

Your own store's mobile app is a separate case with a separate checkout; the Checkout Kit guide covers it.

FAQ

Do Shopify's pixels work inside the Instagram in-app browser?

Shopify's pixel documentation says nothing about in-app browsers, and we couldn't find a readable Meta page that does. The test above shows what reaches your store from it, and the server-side purchase doesn't depend on the in-app browser at all.

Why did my test parameters disappear in Safari?

Either the switch opened a different address, or a redirect on your store dropped the query string; the check for ad click IDs tests the redirect.

Does the app recover the click if the shopper pays a day later on a laptop?

No. The phone's click stays on the phone. The laptop order carries only what the laptop's browser caught, and Meta and TikTok can still match on the order's customer details. GA4 credits whatever the laptop session's source was.

Send the purchase from the order, whichever browser paid

WeltPixel Conversion Tracking sends storefront purchases server-side from the Shopify order, so a sale that started in Instagram and finished in Safari still reaches Meta and TikTok with the customer details they match on, and reaches GA4 with its revenue. GA4 is on the free plan, up to 100 storefront orders a month; Plus is $39/month with no order limit, adds the other nine integrations, Meta and TikTok among them, and also sends admin, POS and draft orders [9].

Sources

  1. Meta for Developers, Conversions API, "fbp and fbc parameters", developers.facebook.com/docs/marketing-api/conversions-api/parameters/fbp-and-fbc, accessed October 14, 2026
  2. TikTok Ads Manager Help Center, "About TikTok Click ID", last updated September 2025, ads.tiktok.com/help/article/tiktok-click-id, accessed October 14, 2026
  3. TikTok Ads Manager Help Center, "About Autofill on TikTok", last updated October 2025, ads.tiktok.com/help/article/autofill-for-third-party-landing-page, accessed October 14, 2026
  4. Shopify, "Cookies" (storefront cookie cart, duration 2 weeks), shopify.com/legal/cookies, accessed October 14, 2026
  5. Shopify developer documentation, GraphQL Admin API CustomerVisit object (landingPage), shopify.dev/docs/api/admin-graphql/latest/objects/CustomerVisit, accessed October 14, 2026
  6. Google Analytics Help, "[GA4] Get started with attribution", support.google.com/analytics/answer/10596866, accessed October 14, 2026
  7. Google Analytics Help, "[GA4] Default channel group", support.google.com/analytics/answer/9756891, accessed October 14, 2026
  8. Google Analytics Help, "[GA4] Reporting identity", support.google.com/analytics/answer/10976610, accessed October 14, 2026
  9. WeltPixel Conversion Tracking, Shopify App Store listing (free plan GA4 up to 100 orders a month; Plus $39/month), apps.shopify.com/weltpixel-conversion-tracking, accessed October 14, 2026

Ready to upgrade your tracking?

Server-side tracking for Magento and Shopify — accurate data, better attribution, full privacy compliance.