linkutm Logo

How to Add UTM Parameters to Klaviyo Email Flows and Campaigns

Bhargav Dhameliya
Bhargav Dhameliya
June 26, 2026
5 min read
klaviyo utm parameters featured

Your abandoned cart flow is quietly printing money. Then you open GA4 and most of that revenue sits under “direct” or “unassigned.”

I see this constantly with ecommerce teams. Klaviyo knows the email worked, because Klaviyo has its own tracking. But GA4 has no idea, so your email channel looks weaker than it is. Budgets get cut based on that bad data.

Klaviyo UTM parameters fix this. They tell GA4 exactly which email or flow sent each click. Set them up once and your Klaviyo revenue shows up in GA4 where it belongs.

This guide is Klaviyo-specific. I’ll skip the generic “what is a UTM” lecture (we cover that in our guide to UTM parameters) and focus on the parts Klaviyo gets weird: the built-in toggle, flows versus campaigns, and the abandoned cart flow.

Anatomy of a Klaviyo UTM link showing utm_source, utm_medium, and utm_campaign appended to a store URL

Here’s the short version before we go deep. Klaviyo tags your links automatically once you flip one switch. The defaults are fine, but a few tweaks make GA4 much cleaner.

Parameter Klaviyo default What I recommend Why
utm_medium email email (keep it) This is what maps clicks to GA4’s Email channel. Do not change it.
utm_source klaviyo klaviyo Identifies the ESP. Keep it consistent across every send.
utm_campaign message name a named convention Stable, readable names stop your reports from fragmenting.
utm_content (empty) link or variant label Useful when one email has several CTAs.

The big idea: keep utm_medium=email, lock down a naming convention for utm_campaign, and you’ve solved 90% of the attribution mess. The rest is detail.

What Klaviyo Tags Automatically

Klaviyo UTM parameters are added to your links automatically once you turn on UTM tracking. You do not hand-write them on every link. Klaviyo appends them to every trackable URL in the email or SMS at send time.

By default, Klaviyo uses three parameters:

  • utm_medium is set to email for email sends and sms for SMS sends.
  • utm_source is set to klaviyo.
  • utm_campaign is set to the name of your campaign or flow message.

So a link to your store becomes something like this:

https://yourstore.com/sale?utm_source=klaviyo&utm_medium=email&utm_campaign=spring_sale

One honest limitation: the default utm_source=klaviyo tells you the tool, not the audience. That’s fine for most ecommerce teams, and I’d keep it. Consistency beats cleverness here. If every email uses klaviyo as the source, your GA4 reports stay clean. The trap is mixing klaviyo, Klaviyo, and newsletter across different sends. Pick one and never touch it.

How to Turn On UTM Tracking in Klaviyo

Turn on UTM tracking at the account level in Klaviyo Settings. This sets your global default, which then applies to every campaign and flow unless you override it.

Here are the steps:

  1. In Klaviyo, click your account name, then go to Settings.
  2. Find the UTM Tracking section.
  3. Toggle on Add tracking parameters to links (the wording covers both email and SMS).
  4. Review the default parameters. You’ll see utm_source, utm_medium, and utm_campaign already filled in.
  5. Edit the values or add custom parameters if you want (more on that below).
  6. Save.

That’s the whole setup. From this point on, Klaviyo tags links in new sends automatically.

Klaviyo UTM Tracking settings showing the master toggle and default utm_source, utm_medium, and utm_campaign fields

One gotcha: turning this on does not retroactively tag links in emails you already sent. It applies to future sends only. So flip it on before your next big campaign, not after.

UTM Parameters for Klaviyo Campaigns

Campaigns are your one-time sends, like a sale announcement or a product launch. Each campaign inherits your account-level UTM settings, but you can override them per campaign.

You’ll find the control inside the campaign builder, usually near the final review step or under the campaign’s settings. There you can:

  • Use the account default UTM values (the simple path).
  • Override the values for this one campaign.
  • Turn UTM tracking off for this campaign entirely.

For most campaigns, I leave the defaults alone and only customize utm_campaign. A clear campaign name is the single most useful thing you can set. spring_sale_2026 beats Campaign - April 14 copy 2 every time.

The honest trade-off: per-campaign overrides are powerful but easy to fumble. If three people on your team each name the same sale differently, GA4 splits the revenue across three rows. That’s why I push naming conventions hard. A shared UTM naming convention is worth more than any single setting.

UTM Parameters for Klaviyo Flows

Flows are where Klaviyo UTM tracking gets interesting. A flow is an automated, triggered sequence, like a welcome series or an abandoned cart reminder. Unlike campaigns, flows send continuously, sometimes for years.

Each message inside a flow has its own UTM settings. You set them per message, not per flow. Open a flow, click an email action, and look for the UTM tracking settings on that message. You can use the account default, override it, or disable tracking for that one message.

Because flows run on autopilot, stable naming matters even more than with campaigns. You set the name once and it labels thousands of sends. Get it right and your GA4 data stays clean for years.

Here’s how the two differ:

Campaigns Flows
Send type One-time Automated, triggered
UTM control Per campaign Per message inside the flow
Naming priority Important Critical (runs for years)
Best utm_campaign The promotion name The flow plus step (like abandoned_cart_1)
Klaviyo campaign versus flow UTM control, comparing per-campaign settings with per-message settings inside a flow

The Abandoned Cart Flow Example

The abandoned cart flow is the one I always check first, because it drives real revenue and it’s the one most often misattributed.

Say your abandoned cart flow has three emails. Tag each message so you can see which reminder recovers the sale:

Email 1: utm_source=klaviyo&utm_medium=email&utm_campaign=abandoned_cart_1
Email 2: utm_source=klaviyo&utm_medium=email&utm_campaign=abandoned_cart_2
Email 3: utm_source=klaviyo&utm_medium=email&utm_campaign=abandoned_cart_3

Now GA4 shows recovered revenue under email, split by which reminder did the work. Most teams find the second email pulls more weight than they expected. You can’t act on that insight if all three sit under klaviyo.

A Naming Structure That Keeps GA4 Clean

A consistent naming structure is the difference between GA4 reports you trust and reports you ignore. The parameters are easy. The discipline is hard.

My rules for Klaviyo:

  • Lowercase only. GA4 treats Email and email as two different mediums. Same for campaign names.
  • Underscores, not spaces. Use welcome_series, never welcome series.
  • Describe the flow, then the step. welcome_1, welcome_2, abandoned_cart_1.
  • Keep utm_medium as email. Resist the urge to get fancy. email is what GA4’s channel grouping expects.

Klaviyo also supports dynamic tags, which insert a variable into a UTM value automatically. For example, you can set utm_campaign to pull the message name so each send self-labels without manual entry. This is handy, but only if your message names already follow a convention. Dynamic tags amplify whatever naming habits you have, good or bad.

If you’d rather not hand-build these, our free Klaviyo UTM builder generates correctly formatted values you can drop straight into Klaviyo’s settings.

Klaviyo UTM naming convention cheat sheet with good and bad utm_campaign examples using lowercase and underscores

How to Verify Klaviyo UTM Data in GA4

Always verify before you trust the data. After your first tagged send, check GA4 to confirm the parameters are flowing through.

Do this:

  1. Send yourself a test email from Klaviyo (or wait for a real send).
  2. Click a link and confirm the URL contains utm_source=klaviyo in your browser bar.
  3. In GA4, go to Reports, then Acquisition, then Traffic acquisition.
  4. Set the dimension to Session source / medium.
  5. Look for klaviyo / email.

Give it 24 to 48 hours for full data to populate. Realtime reports show clicks faster if you’re impatient, but the standard reports lag.

GA4 Traffic acquisition report filtered by Session source / medium with the klaviyo / email row highlighted

If klaviyo / email shows up, you’re done. If your email clicks still land under (direct) / (none), the UTM toggle is probably off, or that specific message had tracking disabled. For the platform basics behind these reports, see our GA4 overview. Google’s own Analytics Help documents the traffic acquisition report in detail.

Limitations of Klaviyo’s Built-In UTM Tracking

Klaviyo’s built-in tracking is good, but it isn’t complete. Knowing the gaps saves you from bad assumptions about what Klaviyo UTM parameters can and cannot do.

  • No naming enforcement. Klaviyo lets anyone type any campaign name. There’s no guardrail stopping spring_sale and Spring-Sale from coexisting. Klaviyo’s own help docs explain the settings, but not the discipline.
  • Klaviyo revenue is not GA4 revenue. Klaviyo attributes revenue with its own cookie and a default attribution window. GA4 uses UTMs and its own model. The two numbers will rarely match exactly. That’s normal, not a bug.
  • It only covers Klaviyo sends. Your social, paid, and SMS-from-other-tools links need their own tagging.
  • No cross-channel view. Klaviyo shows you email. It can’t tell you how email stacks up against your other channels in one place.

That last gap is the reason a dedicated UTM tool exists. linkutm enforces one naming convention across email, social, and paid, so your Klaviyo data sits cleanly next to everything else in GA4. If you want the broader picture beyond Klaviyo, our guide to tracking email campaigns with UTM covers the cross-channel setup.

Frequently Asked Questions

What UTM parameters does Klaviyo add by default?

Klaviyo adds three by default once UTM tracking is on: utm_medium=email (or sms for SMS), utm_source=klaviyo, and utm_campaign set to your campaign or flow message name. You can edit these values or add custom parameters in Klaviyo’s UTM Tracking settings.

Why is my Klaviyo traffic showing as direct or unassigned in GA4?

Your Klaviyo traffic shows as direct when UTM tracking is off, or when a specific campaign or flow message has tracking disabled. GA4 needs utm_medium=email to classify a click as email. Turn on UTM tracking in Klaviyo Settings, confirm the message-level toggle is on, then check the link in your browser for utm_source=klaviyo.

How do I add UTM parameters to a Klaviyo abandoned cart flow?

Open the abandoned cart flow, click each email message, and set its UTM values in the message’s tracking settings. Give each message a distinct utm_campaign value like abandoned_cart_1, abandoned_cart_2, and abandoned_cart_3. This lets GA4 show which reminder recovered the sale.

Do Klaviyo flows and campaigns use the same UTM settings?

They share the same account-level default, but you control them differently. Campaigns set UTM values per campaign. Flows set UTM values per message inside the flow. Flows need more naming care because they send automatically for a long time.

Should I change Klaviyo’s default utm_source=klaviyo?

For most ecommerce teams, no. Keep utm_source=klaviyo so your reports stay consistent. The value that actually matters for GA4 channel grouping is utm_medium=email, which you should never change. Consistency across every send matters more than the exact source word you pick.

Do I still need UTMs if Klaviyo already tracks revenue?

Yes, if you use GA4. Klaviyo’s internal attribution lives inside Klaviyo only. UTM parameters are what carry your email data into GA4, where you compare email against social, paid, and organic in one place.

Start Tagging Your Klaviyo Sends Correctly

Klaviyo UTM parameters turn invisible email revenue into data you can defend in GA4. Flip on UTM tracking, lock utm_medium=email, name your campaigns consistently, and tag every flow message, especially abandoned cart.

Do these three things this week:

  1. Turn on UTM tracking in Klaviyo Settings.
  2. Tag your abandoned cart flow messages with distinct campaign names.
  3. Verify klaviyo / email in GA4 after your next send.

To generate correctly formatted values fast, use our free Klaviyo UTM builder and paste them straight into Klaviyo. Clean data, clear decisions, no more guessing where your revenue came from.

Bhargav Dhameliya

About Bhargav Dhameliya

Share this article

Ready to track your campaigns better?

Join thousands of marketers who use linkutm to build, track, and manage their marketing campaigns with ease.

Get Started for Free