What are UTM codes (and why they matter for authors)

UTM codes are the tiny tags on the end of your links that tell you which post actually sold the book. Here's the plain-English version, plus a cheat sheet.

·5 min read·Chelle Honiker
Flat illustration of a URL with small labeled tags hanging off the end

When you share your book link on Instagram and on Threads and in your newsletter, and then look at your sales the next day, do you know which post actually drove the reader? Not really, right?

That's what UTMs solve. And they're not hard — just specific.

What a UTM code actually is

A UTM code is a tiny bit of text tacked onto the end of a link that tells the receiving service (Google Analytics, your Amazon KDP dashboard via referrer, your Substack analytics) where the click came from.

A normal link looks like this:

https://www.amazon.com/dp/B0BX1234PP

A UTM'd link looks like this:

https://www.amazon.com/dp/B0BX1234PP?utm_source=instagram&utm_medium=social&utm_campaign=salt-sky-launch

Same destination. Same book. The reader doesn't see anything different. But now when that reader clicks, the analytics on the receiving end can say "this click came from Instagram, as part of a social campaign, specifically the salt-sky-launch campaign."

Multiply that across every post you make, and suddenly you know which platform is actually driving sales.

The five standard UTM parameters

There are five UTM parameters. You don't have to use all of them every time. Here's what each one means and when to use it.

utm_source (required)

The specific platform where the click originated.

Good values: instagram, tiktok, threads, newsletter, bluesky, linkedin, x, pinterest, youtube, substack.

Bad values: social-media (too broad), facebook-instagram (pick one), my-instagram (too specific — just instagram).

utm_medium (required)

The type of traffic — organic social, paid ad, email, referral, direct share.

Good values: social (for any organic social post), paid-social (for boosted posts or ads), email (for newsletter links), referral (for blog or cross-post mentions), qr (for QR-code scans from print or events).

Bad values: internet (uselessly broad), instagram (that's a source, not a medium).

utm_campaign (required for campaigns)

The specific thing you're promoting — a launch, a sale, a series push.

Good values: salt-sky-launch, summer-sale-2026, driftwood- series-reactivation, newsletter-signup-q2.

Bad values: book-launch (which book?), promo (of what?), post-april-15 (dates belong in the timestamp, not the campaign name).

utm_content (optional)

Used when you're A/B testing. Two different posts, same campaign, same platform — utm_content tells them apart.

Example: utm_content=quote-card vs utm_content=carousel-post. Both are for the same campaign on the same source; this tag lets you see which format converted better.

utm_term (optional, rarely used by authors)

Originally for paid-search keywords. If you're not running Google Ads, ignore this one.

The cheat sheet

For most author posts, you only need three parameters. Memorize this template:

?utm_source=[platform]&utm_medium=social&utm_campaign=[campaign-name]

Examples:

  • Instagram post for Salt & Sky launch: ?utm_source=instagram&utm_medium=social&utm_campaign=salt-sky-launch
  • Newsletter promoting the pre-order: ?utm_source=newsletter&utm_medium=email&utm_campaign=salt-sky-preorder
  • QR code on a conference bookmark: ?utm_source=event&utm_medium=qr&utm_campaign=authornation-2026
  • Cross-post on Bluesky: ?utm_source=bluesky&utm_medium=social&utm_campaign=salt-sky-launch

How Author Automations Social handles UTMs for you

You don't have to hand-type these. The UTM Builder at /dashboard/utm takes your book link + a campaign name + the platform, and outputs a ready-to-share short link. It also does two things you can't easily do yourself:

  1. Stores the full UTM'd link so you can see it later (useful when you're trying to remember what campaign name you used on a post three weeks ago).
  2. Shortens it through Switchy so the ugly ?utm_source=instagram&utm_medium=social... string becomes storylink.to/salt-sky-ig. Readers see a clean short link; analytics still get the full UTM on redirect.

Where you actually read the data

UTMs are written on your side. They're read on the receiving platform's analytics side. Depending on where your link points:

  • Google Analytics (if your book landing page is your own site) — shows UTM data in Acquisition → Campaigns. Most authoritative analytics.
  • Substack — shows some UTM-like attribution in its analytics if you link to a Substack URL.
  • Amazon KDP — doesn't expose UTM data to you directly. But if you use a branded short link (like storylink.to/salt-sky) and check Switchy analytics, you see the pre-redirect click source.
  • Your email platform (Mailerlite, Substack) — shows clicks-per-link without needing UTMs, but UTMs still work if you want consistency.

The three rules that keep UTMs useful

1. Consistency beats cleverness. If you call TikTok tiktok this week and tik-tok next week and TikTok the week after, your analytics treats them as three different sources. Pick one spelling per source and stick with it.

2. Lowercase everything. UTMs are case-sensitive. instagramInstagramINSTAGRAM in most analytics platforms. Lowercase prevents annoying fragmentation.

3. No spaces. Use hyphens or underscores. salt-sky-launch or salt_sky_launch, not salt sky launch (spaces URL-encode to %20 and look terrible). Pick one convention (we use hyphens) and keep it.

Common UTM mistakes

Too-specific campaign names. salt-sky-launch-day-1-morning- post is not useful. salt-sky-launch covers the whole push and lets you see cumulative clicks.

Accidentally stripping UTMs. Some platforms (especially email clients) strip or rewrite URL parameters. If you're sending a UTM'd link through a platform that rewrites URLs, you'll lose the UTM. The easiest workaround: use a branded short link that redirects to the full UTM'd URL. The short link stays clean; the UTM survives behind the scenes.

Putting UTMs on internal links. If your Substack newsletter links to your Substack about page, don't UTM it — you're just confusing your own analytics by saying "this came from my-newsletter" when the user never actually left your domain.

What to do next

Read next