How to Track the Source of Traffic and Installs for Your Shopify App
To track Shopify app installs by source, you have to solve one specific problem. A merchant clicks Add app and leaves your listing. They pass through Shopify's OAuth flow, which breaks the referrer chain. The install then arrives with no memory of where it came from.
This is why so many developers open GA4 and find every install labelled directly. The paid campaign, the blog post, the partner referral: all of it collapses into one bucket. Shopify's own forums carry unresolved threads on exactly this.
The fix is not one setting. It is a chain. Analytics on the listing, UTM discipline on inbound links, event tracking on the Add app button, and a join between session data and installs. This guide covers each step and compares six attribution methods.
TL;DR: How to Track Shopify App Installs
|
Question |
Quick answer |
|---|---|
|
Why do installs show as direct in GA4? |
The Add app button routes through Shopify OAuth, which drops the referrer before the install lands on your side. |
|
First step |
Connect Google Analytics to your app listing using a separate property, not the one for your marketing site. |
|
Second step |
Add UTM parameters to every inbound link pointing at your listing. |
|
Third step |
Track Add app button clicks as a GA event so you can measure listing conversion. |
|
The missing link |
Joining session data to actual install events, which needs a BigQuery export rather than the GA4 interface. |
|
Can you separate paid from organic App Store installs? |
Not through Shopify Ads directly. You separate what you control by tagging your own inbound links. |
|
What good looks like |
A funnel showing page views, Add app clicks, and completed installs, broken down by source and search term. |
Why Install Attribution Breaks on Shopify
Understanding the break point makes every fix downstream obvious. Here is the actual journey a merchant takes.
|
Stage |
Where it happens |
What is tracked |
|---|---|---|
|
Merchant sees your ad or blog post |
Your channel |
UTM parameters, if you set them |
|
Lands on your App Store listing |
apps.shopify.com |
GA4 session, if analytics is connected |
|
Clicks Add app |
apps.shopify.com |
A GA event, if you configured one |
|
Passes through Shopify OAuth |
Shopify |
Nothing you control |
|
Install completes on your app |
Your app |
The install event, with no referrer |
[Image alt text: diagram showing where install attribution breaks when merchants track Shopify app installs]
What Shopify Already Gives You Natively
Shopify lets you connect Google Analytics directly to your App Store listing, and Shopify's Partner documentation recommends doing so as a baseline. It is free and takes minutes.
Two setup details matter more than the rest.
|
Setting |
Why it matters |
|---|---|
|
Use a separate GA property |
Your listing sits on a different domain to your marketing site, so a shared property muddies both views |
|
Tag every inbound link |
UTM parameters are the only way to distinguish your own channels once traffic reaches the listing |
|
Track Add app clicks |
Page views alone tell you about interest, not intent to install |
|
Check Partner dashboard referrers |
Shopify surfaces some referrer data, though at lower granularity than GA |
This baseline answers half the question well. You will see which channels drive listing traffic and Add app clicks. It will not tell you which clicks became paying merchants. That data lives on the far side of the OAuth break.
The Install Funnel Metrics That Matter
Attribution is only useful if you measure the full path. These are the stages worth tracking when you track Shopify app installs at a channel level.
|
Metric |
What it tells you |
|---|---|
|
Listing page views by source |
Which channels create awareness and drive traffic at all |
|
Add app click rate |
Whether your listing copy and screenshots convert interest into intent |
|
Click-to-install completion |
How many merchants abandon during OAuth, which is often higher than expected |
|
Installs by traffic source |
The number most teams want and most cannot produce |
|
Installs by App Store search term |
Which keywords bring merchants who actually install |
|
Source-level retention |
Whether a channel produces merchants who stay, not just merchants who install |
|
Cost per install by channel |
Acquisition spend joined to attributed installs |
The last two separate serious teams from the rest. A channel producing a high volume of installs that churn within three weeks may look efficient at first, but it loses badly to a channel bringing merchants who stay for two years. Without source-level retention, you optimise toward the wrong one.
6 Ways to Track Shopify App Installs Compared
Each method solves a different part of the chain. Most teams combine three or four.
|
Method |
What it captures |
Limitation |
|---|---|---|
|
GA on the listing |
Page views and traffic sources reaching your listing |
Stops at the listing, no install data |
|
UTM parameters |
Which of your own channels drove the visit |
Cannot tag Shopify Ads or organic App Store search |
|
Add app click events |
Intent to install and listing conversion rate |
Click is not a completed install |
|
Partner dashboard referrers |
Broad referrer categories from Shopify |
Low granularity, no campaign detail |
|
Custom OAuth state parameter |
Passes limited data through the redirect |
Engineering work, fragile, easy to break |
|
GA4 to BigQuery join |
Session source joined to completed install events |
Requires BigQuery setup or a tool that handles it |
The first four are standard practice and worth doing regardless. They tell you what happens up to the click. Only the last two get past the OAuth break. Of those, one avoids ongoing engineering maintenance.
Closing the Loop with BigQuery
BigQuery is the practical answer because GA4's interface cannot do the join you need, but its raw export can.
When GA4 exports to BigQuery, you get event-level session data rather than aggregated reports. Each listing visit exists as a queryable row with its source, medium, campaign, and search term. Join that against your install records and the gap closes.
|
What BigQuery unlocks |
Why the GA4 interface cannot do it |
|---|---|
|
Session source joined to install events |
GA4 reports aggregate sessions, and installs happen off-platform |
|
Full install funnel with stage conversion |
Requires combining listing events with your own install data |
|
Search term to install mapping |
GA4 groups search data and does not connect it to downstream outcomes |
|
Source-level retention and revenue |
Needs install source joined to subscription history |
|
Custom attribution windows |
GA4 attribution models are fixed and cannot be redefined |
Setting this up yourself means a GA4 export, a BigQuery project, and SQL to maintain as your schema changes. Elevate handles the join instead. Connect your Google Analytics and BigQuery data alongside your Shopify Partner account, and two views appear without any query writing.
The real advantage is what Elevate does with that data next. Shopify app teams can finally connect acquisition to the full merchant journey, so a traffic source or search term is no longer judged only by clicks or installs, but by the retention, churn, upgrades, and revenue it eventually produces. That closes a visibility gap most app teams have had to live with until now.
|
View |
What it shows |
|---|---|
|
Install Funnel |
How merchants move from page views to Add app clicks to completed installs, with conversion at every stage |
|
Traffic Source Insights |
Where installs originate across traffic sources and search terms, so you know which channels bring your best merchants |
[Image alt text: install funnel view showing how to track Shopify app installs from page views through to completion]
Because install source sits alongside subscription data in the same system, you can go further than attribution. Pair it with merchant lifetime value to see which channels produce high-LTV merchants, or with customer health scoring to spot sources that deliver installs which never activate. For teams running several apps, multi store analytics rolls attribution up across the whole portfolio.
Setting Up Install Tracking in 7 Steps
1. Add GA4 to your Shopify App Store listing
In your Shopify Partner Dashboard, open your app listing and add the GA4 Measurement ID under Tracking information. This connects your Shopify App Store listing traffic to Google Analytics 4 and is the starting point for Shopify app install tracking.
2. Create a GA4 Measurement Protocol API secret
In GA4, go to Admin → Data Streams, open the same stream used for your Shopify app listing, and create a Measurement Protocol API secret. Shopify uses this to send completed app install events directly to Google Analytics.
3. Add the API secret to your Shopify app listing
Return to the Tracking information section of your Shopify App Store listing and add the API secret. Once configured, Shopify can send the shopify_app_install event when a merchant completes an install, giving you full-fledged Shopify App Store install attribution.
4. Create a Google Cloud project and enable BigQuery
Create a new Google Cloud project or select an existing one, then enable the BigQuery API. This gives you a destination for exporting the raw GA4 event data used to analyse Shopify app installs, traffic sources, and attribution.
5. Link Google Analytics 4 to BigQuery
In GA4, go to Admin → Product Links → BigQuery Links and connect the Google Cloud project you created. Choose your data location and configure the BigQuery export so GA4 event-level data is available outside the standard Analytics reports.
6. Verify your Shopify app install data in BigQuery
Once the GA4 BigQuery export begins, check that event data is appearing in your BigQuery project. Your export can include Shopify App Store activity such as listing views, Install button interactions, App Store ad clicks, and the completed shopify_app_install event.
7. Connect BigQuery with Elevate
Connect the same BigQuery data to Elevate so your Shopify app install data can be analysed alongside the rest of your app analytics. Instead of reading raw GA4 and BigQuery events separately, you can use the combined data for Shopify app install source tracking and understand which channels, campaigns, and discovery sources are driving installs.
For Shopify app teams that want more than basic GA4 reporting, Elevate turns GA4 and BigQuery data into Shopify app analytics built around acquisition performance. With Shopify App Store traffic, install attribution, search terms, and downstream merchant behaviour in one place, teams can understand which acquisition channels are actually worth investing in and make growth decisions from data they previously had to piece together themselves.
Frequently Asked Questions
How do I track Shopify app installs by source?
Connect a dedicated GA4 property to your listing and tag every inbound link with UTM parameters. Track Add app clicks as an event. Then join that session data to your install records through a BigQuery export.
Why do all my installs show as direct in GA4?
The Add app button routes merchants through Shopify's OAuth flow. That drops the referrer before the install completes. GA4 sees a new session with no source, so it labels it directly.
Can I track Shopify Ads installs separately from organic?
Not directly. Shopify Ads placements cannot carry your own UTM parameters. Paid and organic App Store traffic arrive looking the same. You can only cleanly attribute channels you drive yourself.
Do I need a separate Google Analytics property for my app listing?
Yes, it is strongly recommended. Your listing sits on a different domain to your marketing site. A shared property mixes two very different visitor behavior's into one view.
What is the install funnel for a Shopify app?
The path from listing page view to Add app click to completed install, with a conversion rate at each stage. Measuring all three stages shows whether you have a traffic problem, a listing problem, or an onboarding problem.
Why use BigQuery to track Shopify app installs?
GA4's interface reports aggregated sessions. It cannot join them to install events that happen off-platform. The BigQuery export gives you event-level rows, which join to install records and close the gap.
Can I see which App Store search terms drive installs?
Yes, but only with session data joined to install events. Search term data in GA4 stops at the listing. Connecting it to downstream installs needs BigQuery, or a tool that handles the join.
How far back does listing tracking go once I set it up?
Data collection is not retroactive. GA4 records traffic only from the moment the property is connected. Enable it before your next campaign, not after.