UTM Parameters for App Campaigns: A Practical Guide
What each UTM tag is for, a naming system that stays clean, values for every app channel, and what really happens to your tags at the App Store and Google Play.
Why app campaigns break UTMs
UTM tags were made for websites. Someone clicks, the page loads, your analytics reads utm_source and the rest from the address bar, and the visit lands in the right row. Nothing in between gets a say.
An app campaign has a store in the middle. The tap goes to the App Store or Google Play, the person installs, and the app opens later from the home screen. Whether your tags survive that trip depends on the store, and on the link you used.
This guide starts with naming, because clean names pay off on every channel, then moves to the stores, where most app campaigns quietly lose their data.
Four numbers worth knowing
- tags Google Analytics says to use on every link: source, medium, campaign
- 3
- days Google Play keeps the install referrer readable for the app
- 90
- hours in which App Store Connect credits a download to a campaign link
- 24
- characters allowed in an Apple campaign token
- 30
tags Google Analytics says to use on every link: source, medium, campaign
days Google Play keeps the install referrer readable for the app
hours in which App Store Connect credits a download to a campaign link
characters allowed in an Apple campaign token
The five parameters, and the question each one answers
Google Analytics reads five standard tags. Three belong on every link, two are optional.
utm_source: where was the link?
The platform, list or object: instagram, tiktok, newsletter, packaging. Name the place, not the type of channel.
utm_medium: what kind of channel?
social, email, sms, qr, audio. GA4 sorts visits into channels mostly from this value, so it needs a short, fixed list.
utm_campaign: which push?
spring_sale_2026_04. One name per campaign, identical on every channel, so the numbers add up.
utm_content: which link or creative?
Optional. story_frame_2 or header_button, when one campaign has several links in the same place.
utm_term: which keyword?
Optional, and mostly for paid search. Most app campaigns leave it empty.
A naming system that stays clean
The rules
- Lowercase only, because values are case sensitive
- No spaces, and one separator: _ or -, never both
- Medium comes from a fixed list
- Campaign: theme first, date last, as in spring_sale_2026_04
- Write the list down where everyone who tags links can find it
A medium list for apps
- social for organic posts, stories and bios
- paid_social for paid placements
- email and sms for your own messages
- qr for print, packaging and screens
- audio for podcasts and radio
- influencer or affiliate for creators
How GA4 reads your medium
Google Analytics 4 sorts every visit into a default channel group with fixed rules. A medium of email lands in Email, sms in SMS, audio in Audio, affiliate in Affiliates and social in Organic Social. A medium that starts with paid or contains cp, such as cpc, counts as paid.
There is no default channel for QR codes or creators. A qr medium lands in Unassigned unless the source is a site GA4 recognises, and a creator link with source instagram counts as Organic Social because of its source. If those channels matter to you, add a custom channel group in GA4 rather than bending your names to fit.
Channel-by-channel examples
The values our free UTM builder fills in, and where GA4 files them by default.
What happens to your tags at each store
The same tagged campaign, and four places a tap can end up.
spring_sale
One campaign, the same UTM tags, four kinds of link.
- App Store linkDropped. The App Store passes no link parameters to the app.
- Google Play linkKept only inside the referrer parameter, readable by the app for 90 days.
- Your websiteRead by your analytics when the page loads.
- Appy smart linkForwarded to the store, the app and the website; installs credited by campaign with the SDK.
Google Play: everything goes through referrer
Google Play has a documented way to hand campaign data to an app. Everything the app should receive goes into one referrer parameter on the store URL, URL-encoded, so utm_source=tiktok travels as referrer=utm_source%3Dtiktok. Only that parameter reaches the app; utm_ tags placed directly on the Play URL do not.
After install, the app reads the string through the Google Play Install Referrer API, along with the time of the click and the time the install began. Google keeps it available for 90 days and asks apps to read it once, on the first launch. Firebase and most attribution SDKs do this for you.
App Store: campaign tokens instead of UTMs
The App Store has no install referrer. Whatever parameters you add to an App Store link, the app that opens after install cannot see them, and App Store Connect ignores UTMs.
Apple’s answer is the campaign link, created in App Store Connect Analytics. It carries a provider token (pt) that identifies your developer account, a campaign token (ct) of up to 30 characters and a media type (mt=8). A download counts for the campaign when it happens within 24 hours of using the link.
The results stay inside App Store Connect, and only in aggregate: a campaign shows up once at least five people have downloaded through it. That is useful for comparing campaigns, but it does not tell your app which person came from which link.
Plain store links or a smart link
How a smart link carries UTMs into the app
Tag the smart link, not the store links
Add utm_source=tiktok, utm_medium=social and utm_campaign=spring_sale to appy.to/spring, then put that one link in the bio, the story or the QR code.
Every phone goes to the right place
The App Store on iPhone, Google Play on Android, AppGallery on Huawei, your website on a computer. With deep links (Pro), people who already have the app open it.
The tags travel on
With parameter forwarding (Business), the UTMs are added to the store link, the deep link and the website, and written into the Google Play referrer.
The install is credited to the campaign
With the Appy SDK (Enterprise), the first launch is connected to the tap and reported with its source, medium and campaign. No advertising IDs involved.
A checklist for every tagged link
Before you publish
- Source, medium and campaign are all set
- Every value is lowercase, with no spaces
- The medium comes from your team’s list
- The campaign name matches every other channel in the push
- Store links sit behind a smart link instead of being tagged directly
- You tapped it once on an iPhone and once on Android
After the first day
- The campaign shows up under the source and medium you expected
- No new spelling of an old source appeared
- Unassigned did not grow; if it did, check the medium
- With the SDK, installs appear under the same campaign name
Build it, then read on
- Free UTM builder for app campaignsClean names, a report preview, and a warning wherever the tags would get lost.
- Parameter Forwarding for Deep Links, Universal Links, App Stores, and WebHow one link hands its parameters to every destination.
- Know Which Link Brought Every InstallInstalls, events and revenue per link with Appy’s SDK.
- How to Track QR Code App Installs Without GuessingThe same problem, for codes on posters and packaging.
- iOS 26 Link Tracking Protection: Which URL Parameters Survive?What Safari strips from links, and why UTMs still pass.
Sources
- Google Analytics Help: URL builders, collect campaign data with custom URLsThe UTM parameters, which ones to always use, and case sensitivity.
- Google Analytics Help: Default channel groupThe rules that turn source and medium into channels.
- Android Developers: Play Install Referrer libraryWhat the app can read after install, and for how long.
- Android Developers: User acquisition for Google Play Games on PCGoogle’s worked example of UTM values encoded into the referrer parameter.
- Apple Developer: Campaign links in App Store Connect AnalyticsProvider and campaign tokens, the 24-hour window and reporting thresholds.
Frequently asked questions
Do UTM parameters survive an app install?
Not on their own. The App Store drops them, and Google Play only passes on what sits inside the referrer parameter. A smart link with parameter forwarding carries them to the store, the app and your website, and Appy’s SDK credits the install to its source, medium and campaign.
Which UTM parameters does an app campaign need?
utm_source, utm_medium and utm_campaign on every link, as Google Analytics recommends. Add utm_content when one campaign has several links in the same place, such as two buttons in a newsletter.
Should creator posts use social or influencer as the medium?
Either works if you stay consistent. GA4 has no influencer channel, so an influencer medium counts as Organic Social only when the source is a social site such as instagram. If you want creators as their own channel, add a custom channel group.
What are pt and ct on App Store links?
Apple’s campaign tokens. pt identifies your developer account and stays the same, ct names the campaign. They come from App Store Connect Analytics and report downloads there, in aggregate. Your app cannot read them.
How long can an Android app read the install referrer?
Google keeps install referrer details available for 90 days after install, and recommends reading them once, on the first launch.
Can I see installs per UTM campaign without an MMP?
Yes, for the links you own. With Appy’s SDK on the Enterprise plan, each install is credited to the link and to the source, medium and campaign of the tap. Paid ads on Meta, Google or TikTok are still better measured with an MMP.
Continue exploring
Custom Domain Short Links for Apps: A Practical Guide
Why a link on your own domain is worth it, how to choose the hostname, the setup in three steps, and what happens to the links and QR codes you have already shared.
Parameter Forwarding for Deep Links, Universal Links, App Stores, and Web
Learn how to preserve campaign and context parameters across app opens, app-store redirects, Universal Links, and website visits without overwriting destination values.
Deferred Deep Linking: How It Works and When to Use It
Understand how deferred deep linking carries the original link intent across install so new users land on the right in-app screen, not a generic home tab.
Looking for something else? Browse all topics on the blog.
Tag once, keep the tags past the store
Build the tagged link with the free UTM builder, then put it on an Appy smart link so every phone lands in the right store. Free plan, no credit card.