Appy

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
Create a free smart link

Build your tagged link

A landing page, an App Store or Google Play link, or an Appy smart link.

Start from a channel

Fills in source, medium and content. The campaign name stays yours.

Required

Where the link sits: the platform, list or object.

Required

The type of channel, from a short fixed list.

Required

The push this link belongs to. Same name on every channel.

Optional

Tells two links in the same campaign apart.

Optional

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.

  1. App Store link + UTMs

    source · medium · campaign
    App Store

    Your app

    source · medium · campaign

    Tags dropped. The app opens without knowing where the person came from.

  2. Google Play link + UTMs

    source · medium · campaign
    Google Play

    Your app

    referrer

    Only the referrer parameter gets through. utm_ tags placed directly on the link don’t.

  3. Appy smart link + UTMs

    source · medium · campaign
    The right store per phone

    Your app

    source · medium · campaign

    Tags forwarded to the store, the app and your website. Installs credited by campaign with the SDK.

Simplified: what reaches the app after a tap on each kind of link.

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.

  1. 01

    Lowercase everything

    Values are case sensitive, so instagram and Instagram never merge later.

  2. 02

    No spaces, one separator

    Spaces turn into %20 or + in the URL. Pick _ or - and stick to it.

  3. 03

    A fixed list for medium

    social, email, sms, qr, audio, influencer. A new medium is a team decision, not a new spelling.

  4. 04

    Campaign names that sort

    Theme first, date last: spring_sale_2026_04. The same name on every channel.

What each parameter answers
utm_sourceAnswersWhere exactly was the link?Examplesinstagram, tiktok, newsletter, packagingRule of thumbThe platform, list or object. Never the type of channel.
utm_mediumAnswersWhat kind of channel?Examplessocial, email, sms, qr, audioRule of thumbFrom your fixed list. GA4 groups channels mostly by this value.
utm_campaignAnswersWhich push?Examplesspring_sale_2026_04, app_launch_v3Rule of thumbOne name per push, shared by every channel.
utm_contentAnswersWhich link or creative?Examplesstory_frame_2, header_button, box_backRule of thumbUse it when one campaign has several links in the same place.
utm_termAnswersWhich keyword?Examplesrunning_shoesRule 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

Ready-made values for app channels
Instagram storysource / medium / contentinstagram / social / storyTipUse a link sticker. If several frames carry links, number them in content.
TikTok biosource / medium / contenttiktok / social / bio_linkTipA bio link stays up for weeks. Give it a long-running campaign such as always_on.
Newslettersource / medium / contentnewsletter / email / header_buttonTipTag each button separately in content: header_button, footer_link.
SMSsource / medium / contentcrm / sms / reminderTipEvery character counts. Put the tags on the destinations inside a smart link and send only the short link.
QR on packagingsource / medium / contentpackaging / qr / box_backTipPrint a smart link, not a store link. The code stays the same while campaigns change.
Podcastsource / medium / contentpodcast / audio / host_readTipSay a short URL on air and put the tagged link in the show notes.
Influencersource / medium / contentinstagram / influencer / creator_nameTipOne 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
    instagram

    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

    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

  1. FreeSmart linksThe right store for every phone, unlimited clicks, no credit card.
  2. ProDeep linksPeople who already have the app land on the right screen.
  3. BusinessParameter forwardingYour UTMs travel on to the store, the app and your website.
  4. 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