Free tool
UTM builder for app campaigns
Tag a link for Instagram, TikTok, email, SMS, QR codes or podcasts in seconds. The builder cleans up your names as you type, shows how the visit will read in your reports, and warns you where the tags get lost on the way to the app.
- Free, no sign-up
- Runs in your browser
- Nothing you type is stored
Build your tagged link
A landing page, an App Store or Google Play link, or an Appy smart link.
Where the link sits: the platform, list or object.
The type of channel, from a short fixed list.
The push this link belongs to. Same name on every channel.
Tells two links in the same campaign apart.
Mostly for paid keywords.
Your tagged link
Add a destination and your link appears here.
How it will look in your reports
Web analytics, such as GA4
- Source / medium
- (not set) / (not set)
- Campaign
- (not set)
- Content
- (not set)
- Term
- (not set)
App installs in Appy
Enterprise with the SDK(not set) / (not set) / (not set)
Printing it?Turn a link into a QR code
Why tags vanish
UTMs stop at the store, unless the link carries them
On the web, a UTM tag rides along to the page and your analytics reads it. App campaigns put a store in the middle, and the store decides what reaches the app.
The App Store passes nothing on. Google Play passes on only what sits inside its referrer parameter. A smart link keeps one tagged URL for every phone and carries the tags past the store.
App Store link + UTMs
source · medium · campaignApp StoreYour app
source · medium · campaignTags dropped. The app opens without knowing where the person came from.
Google Play link + UTMs
source · medium · campaignGoogle PlayYour app
referrerOnly the referrer parameter gets through. utm_ tags placed directly on the link don’t.
Appy smart link + UTMs
source · medium · campaignThe right store per phoneYour app
source · medium · campaignTags forwarded to the store, the app and your website. Installs credited by campaign with the SDK.
Naming system
Five tags, one set of rules
Google Analytics treats Instagram and instagram as two different sources. Three people tagging links for one launch can turn one channel into five rows. A short convention, written down once, prevents that for good.
- 01
Lowercase everything
Values are case sensitive, so instagram and Instagram never merge later.
- 02
No spaces, one separator
Spaces turn into %20 or + in the URL. Pick _ or - and stick to it.
- 03
A fixed list for medium
social, email, sms, qr, audio, influencer. A new medium is a team decision, not a new spelling.
- 04
Campaign names that sort
Theme first, date last: spring_sale_2026_04. The same name on every channel.
| Parameter | Answers | Examples | Rule of thumb |
|---|---|---|---|
| utm_source | AnswersWhere exactly was the link? | Examplesinstagram, tiktok, newsletter, packaging | Rule of thumbThe platform, list or object. Never the type of channel. |
| utm_medium | AnswersWhat kind of channel? | Examplessocial, email, sms, qr, audio | Rule of thumbFrom your fixed list. GA4 groups channels mostly by this value. |
| utm_campaign | AnswersWhich push? | Examplesspring_sale_2026_04, app_launch_v3 | Rule of thumbOne name per push, shared by every channel. |
| utm_content | AnswersWhich link or creative? | Examplesstory_frame_2, header_button, box_back | Rule of thumbUse it when one campaign has several links in the same place. |
| utm_term | AnswersWhich keyword? | Examplesrunning_shoes | Rule of thumbPaid search, mostly. Leave it empty elsewhere. |
Channel cheat sheet
Ready-made values for app channels
These are the values the presets fill in. Change the campaign for every push and keep the rest identical, so the numbers stack up month after month.
More examples, and what each store does to your tags, in our guide: UTM Parameters for App Campaigns: A Practical Guide
| Channel | source / medium / content | Tip |
|---|---|---|
| Instagram story | source / medium / contentinstagram / social / story | TipUse a link sticker. If several frames carry links, number them in content. |
| TikTok bio | source / medium / contenttiktok / social / bio_link | TipA bio link stays up for weeks. Give it a long-running campaign such as always_on. |
| Newsletter | source / medium / contentnewsletter / email / header_button | TipTag each button separately in content: header_button, footer_link. |
| SMS | source / medium / contentcrm / sms / reminder | TipEvery character counts. Put the tags on the destinations inside a smart link and send only the short link. |
| QR on packaging | source / medium / contentpackaging / qr / box_back | TipPrint a smart link, not a store link. The code stays the same while campaigns change. |
| Podcast | source / medium / contentpodcast / audio / host_read | TipSay a short URL on air and put the tagged link in the show notes. |
| Influencer | source / medium / contentinstagram / influencer / creator_name | TipOne link per creator, with their handle in content. That’s the row you pay them from. |
GA4 has no default channel for QR codes or influencers. A qr medium lands in Unassigned, and an influencer link from instagram counts as Organic Social because of its source, unless you add a custom channel group.
Common mistakes
Six ways tagged links go wrong
Most broken campaign reports come from a handful of habits. Each one is cheap to avoid before launch and painful to fix afterwards, because collected data keeps the values it arrived with.
Mixed capitals
- Instead of
- Instagram, instagram, IG
- Use
Three rows for one channel. Values are case sensitive.
Tagging the store link
- Instead of
- apps.apple.com/…?utm_source=tiktok
- Use
- appy.to/spring?utm_source=tiktok
The App Store drops the tags. A smart link carries them past the store.
A missing medium
- Instead of
- ?utm_source=newsletter&utm_campaign=oct
- Use
- …&utm_medium=email
Without a medium, GA4 usually can’t place the visit in a channel and files it under Unassigned.
Spaces and symbols
- Instead of
- Spring Sale #2
- Use
- spring_sale_2
Spaces become %20 or +, and a bare # cuts off everything after it.
A new medium every campaign
- Instead of
- insta_story, social-ig, smm
- Use
- social
Channel reports group by medium. Invented values fall out of every group.
Personal data in a tag
- Instead of
- [email protected]
- Use
- utm_content=vip_segment
URLs end up in logs, screenshots and analytics, and Google’s policies forbid sending personal data to Analytics.
Keep your tags past the store
One tagged link that works on every phone
Put your UTMs on an Appy smart link instead of a store link. Each phone goes to its store, your tags keep travelling, and you can see which campaign brought the install.
- Free plan, no credit card
- Unlimited clicks on every plan
- Links keep working if you cancel
Need install numbers per campaign? How the SDK works
- FreeSmart linksThe right store for every phone, unlimited clicks, no credit card.
- ProDeep linksPeople who already have the app land on the right screen.
- BusinessParameter forwardingYour UTMs travel on to the store, the app and your website.
- EnterpriseInstalls by campaignWith the SDK, every install is credited to its source, medium and campaign.
Frequently asked questions
What does a UTM builder do?
It adds utm_source, utm_medium, utm_campaign and, when you need them, utm_content and utm_term to a URL, so your analytics can tell which campaign a visit came from. This one also cleans up the names and warns you when the destination will drop the tags.
Which UTM parameters are required?
Google Analytics recommends always using utm_source, utm_medium and utm_campaign. utm_content and utm_term are optional: content separates links or creatives within a campaign, term is mostly for paid keywords.
Are UTM parameters case sensitive?
Yes. Google Analytics treats utm_source=Instagram and utm_source=instagram as two different sources, which is why the builder lowercases everything by default. GA4’s channel rules ignore case, but your source, medium and campaign reports don’t.
Do UTM parameters work on App Store links?
No. The App Store doesn’t pass link parameters to your app, and App Store Connect only reads Apple’s own campaign links, which use a provider token (pt) and a campaign token (ct). Those report downloads per campaign inside App Store Connect, in aggregate.
Do UTM parameters work on Google Play links?
Only inside the referrer parameter. Google Play passes that value to your app, which can read it through the Play Install Referrer for 90 days after install. Paste a Google Play link and the builder moves your tags into referrer for you.
How do I keep UTMs when people install my app?
Tag an Appy smart link instead of the store links. With parameter forwarding on the Business plan, the tags travel on to the store, the app and your website. On Enterprise, the SDK credits each install to the source, medium and campaign of the tap.
Underscores or hyphens?
Either works. What matters is picking one and never mixing them, because spring_sale and spring-sale show up as two campaigns.
Can I put a tagged link on a QR code?
Yes, but print a smart link rather than a long tagged URL. The code stays small and easy to scan, and you can change where it points without reprinting. Our free QR code generator turns any link into a code.
Does Safari remove UTM parameters?
Not so far. Safari’s link tracking protection removes identifiers that point at a person, such as click IDs, and has left campaign-level UTMs alone.
Does this tool store my links?
No. The link is built in your browser, and nothing you type is sent anywhere.
Guides and tools
- GuideUTM Parameters for App Campaigns: A Practical GuideWhat 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.
- GuideParameter Forwarding for Deep Links, Universal Links, App Stores, and WebLearn how to preserve campaign and context parameters across app opens, app-store redirects, Universal Links, and website visits without overwriting destination values.
- GuideKnow Which Link Brought Every Install: Appy’s iOS and Android SDKAppy now follows your links past the app store: installs, in-app events and revenue for every link, QR code and campaign, and new users who open on the right screen.
- GuideHow to Track QR Code App Installs Without GuessingA practical measurement setup for QR code app install campaigns, including redirects, UTMs, first-open events, and reporting.
- GuideInstagram & TikTok Deep Links for App Installs: Route to App, Store, or WebLearn how to route Instagram Stories, profile links, and paid ads plus TikTok bio and ad traffic to deeplinks, app stores, or your website with one smart link.
- GuideiOS 26 Link Tracking Protection: Which URL Parameters Survive?Safari now strips click identifiers like gclid and fbclid from campaign links while UTMs pass through. What that means for app install measurement, and how first-party links keep attribution working.
- Free toolFree QR code generatorTurn your smart link or tagged link into a QR code for print.
- Free toolUniversal link validatorFind out why a link opens the browser instead of your app.