Appy
← Back to Blog
Guide

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.

October 1, 2026•7 min read

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

tags Google Analytics says to use on every link: source, medium, campaign

days Google Play keeps the install referrer readable for the app
90

days Google Play keeps the install referrer readable for the app

hours in which App Store Connect credits a download to a campaign link
24

hours in which App Store Connect credits a download to a campaign link

characters allowed in an Apple campaign token
30

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.

01

utm_source: where was the link?

The platform, list or object: instagram, tiktok, newsletter, packaging. Name the place, not the type of channel.

02

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.

03

utm_campaign: which push?

spring_sale_2026_04. One name per campaign, identical on every channel, so the numbers add up.

04

utm_content: which link or creative?

Optional. story_frame_2 or header_button, when one campaign has several links in the same place.

05

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.

Instagram story
source / medium (content)instagram / social (story)
GA4 default channelOrganic Social
TikTok bio
source / medium (content)tiktok / social (bio_link)
GA4 default channelOrganic Social
Paid social post
source / medium (content)instagram / paid_social (carousel_a)
GA4 default channelPaid Social
Newsletter
source / medium (content)newsletter / email (header_button)
GA4 default channelEmail
SMS
source / medium (content)crm / sms (reminder)
GA4 default channelSMS
QR code on packaging
source / medium (content)packaging / qr (box_back)
GA4 default channelUnassigned, unless you add a custom channel group
Podcast
source / medium (content)podcast / audio (host_read)
GA4 default channelAudio
Creator post
source / medium (content)instagram / influencer (creator handle)
GA4 default channelOrganic Social, because of the source
GA4 default channel rules as documented by Google. A custom channel group changes the right-hand column.

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.
Plain store links decide for you. A smart link keeps one tagged URL and carries the tags past the store.

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

One link for every phone
Plain store linksTwo links, one per store
Appy smart linkOne link, each phone to its store
Tags reach your website
Plain store linksOnly when the website is the destination
Appy smart linkYes, with parameter forwarding (Business)
Tags reach the app on Android
Plain store linksOnly if you build the referrer by hand
Appy smart linkYes, written into the referrer for you (Business)
Tags reach the app on iPhone
Plain store linksNo
Appy smart linkThrough the deep link (Business), or after install with the SDK (Enterprise)
Installs per source, medium and campaign
Plain store linksNot from the link
Appy smart linkYes, with the SDK (Enterprise)
Plans as listed on the pricing page: smart links are free, deep links start on Pro, parameter forwarding comes with Business, the SDK with Enterprise.

How a smart link carries UTMs into the app

01

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.

02

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.

03

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.

04

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

Sources

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

Guide
Oct 1, 2026
6 min read

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.

custom domain
branded short links
url shortener
qr codes
Read article
Guide
Jul 16, 2026
8 min read

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.

parameter forwarding
deep linking
universal links
app stores
Read article
Guide
May 14, 2026
9 min read

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.

deferred deep linking
install referrer
deep linking
mobile attribution
Read article

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.