Shipping Confirmation Emails: The Shopify + Klaviyo Setup That Converts

2026-10-19 · JetFlow

Shipping Confirmation Emails: The Shopify + Klaviyo Setup That Converts

Quick answer

A shipping confirmation email tells the customer their order shipped and gives them a tracking link. Shopify sends a free, plain version of this automatically the moment you mark an order fulfilled (Settings > Notifications > Shipping confirmation). If you want it on-brand, with a real tracking button and a cross-sell block, build it as a Klaviyo flow triggered off the Fulfilled Order metric instead and turn off Shopify's version so customers don't get two emails.

A shipping confirmation email tells a customer their order is on the way and gives them a tracking link. Shopify already sends one for free, automatically, the moment you mark an order fulfilled. The only real decision is whether that free default is good enough, or whether you build a branded version in Klaviyo instead. This guide covers both paths: how to check and edit Shopify's native email, and how to set up the Klaviyo version correctly, including the trigger mechanics most guides skip.

Why bother with this email at all

Shipping confirmation emails get opened more than almost anything else you send. In Omnisend's 2025 benchmark report (27,000+ brands, 470 million automated sends), shipping confirmation had the highest open rate of any automated email type at 62.67%, with a 16.01% click-through rate and $3.08 in revenue per email sent. Customers are waiting for this specific piece of information, so they open it. That makes it worth a few minutes of setup even if you never touch another transactional email.

Shopify's free version: what it is and where to find it

Go to Settings > Notifications > Order notifications in your Shopify admin. "Shipping confirmation" is one of the templates listed there. It sends automatically the moment you fulfill an order, as long as "Send notification to customer" stays checked on the fulfillment screen. It's included on every Shopify plan, and you can edit the copy and basic styling with Liquid in the template editor.

What you can't do easily is turn it off store-wide. Shopify treats it as important enough that there's no single toggle for it. Your options if you want it gone:

  • Uncheck the notification box on each fulfillment manually (fine for low order volume, not realistic past a handful of orders a day).
  • Set notify_customer to false when fulfilling orders through the Fulfillment API, if your fulfillment app or 3PL supports that flag.
  • Leave it on but rewrite the template to say less, and let a separate, better email carry the weight.

Should you replace it with a Klaviyo flow?

Keep Shopify's default if you're early-stage, your order volume is low, or on-brand design isn't worth the setup time yet. It works, it's free, and it tells the customer what they need to know.

Move it to Klaviyo if any of these are true:

  • You want it to look like the rest of your emails instead of Shopify's plain HTML.
  • You want a real tracking button, not a tracking number customers have to copy into the carrier's site.
  • You want to add one soft cross-sell or review-request nudge below the tracking details.
  • You're already running other Klaviyo flows and want this one to share the same header, footer, and brand voice.

If you do move it, disable or rewrite Shopify's version so customers don't get both. Two "your order shipped" emails for the same order reads as broken, not thorough.

Setting up the Klaviyo flow correctly

This is the part most guides skip, because most of them aren't written for Shopify stores specifically. Klaviyo's Shopify integration syncs two metrics that matter here:

  • Fulfilled Order, which fires once every item on an order has been marked fulfilled. Use this as the trigger for a standard, single-package shipping confirmation flow.
  • Fulfilled Partial Order, which fires when only some of the items on an order are fulfilled. If you regularly ship multi-item orders in more than one package, you need this for the first shipment.

The mistake to avoid: if you build flows off both metrics without a filter, a multi-package order can trigger two "shipped" emails close together, which looks like a glitch. Add a filter to your main Fulfilled Order flow so it only fires when HasPartialFulfillments is false (or equivalent logic if you're also running the partial flow) so a multi-shipment order doesn't double-send.

Basic setup:

  1. In Klaviyo, go to Flows > Create Flow > Metric-triggered flow.
  2. Choose Fulfilled Order as the trigger metric.
  3. Add the filter so it skips orders with partial fulfillments already covered elsewhere, if you're running a separate partial-order flow.
  4. Add your email. If you also send SMS, split opted-in SMS subscribers from everyone else first so non-subscribers don't get a text they never agreed to.
  5. No delay needed. Fulfillment already happens when the carrier has the package, so send immediately.

What the email should actually say

Keep the structure simple and lead with the thing the customer wants most: the tracking link.

Subject: Your order is on the way, [First Name]
Preview: Track it here, arriving around [estimated date]

Hi [First Name],

Good news: your order #[Order Number] just shipped.

[TRACK MY ORDER, button linking to carrier tracking]

Shipping to:
[Delivery Address]

What's in this shipment:
- [Product Name] x[Quantity]
- [Product Name] x[Quantity]

Estimated delivery: [Date, if your carrier provides one]

Questions about your order? [Reply to this email / Contact support link]

[Optional: one row of 2-3 related products, labeled "While you wait" or similar. Skip this if the order already contains everything you sell]

Subject line options, if the default feels flat:

  • "Your order is on the way"
  • "[Order #] has shipped"
  • "On its way: track your order"
  • "Good news, [First Name], your package shipped"

Resist the urge to add a discount code or a second hard CTA here. The customer opened this to find their tracking link. Make that easy, and let the one small cross-sell block (if you include one at all) stay secondary.

Timing: when to actually send it

Trigger the send off the carrier scanning the package into their system, not off the moment a label gets printed. A printed label can sit on a counter for hours before a courier picks it up. If your email fires on label creation, the tracking link will show nothing for half a day, and customers will message support asking if their order really shipped. Shopify's "Fulfilled Order" status and Klaviyo's matching metric both fire off fulfillment, which should line up with an actual carrier handoff if you fulfill orders when you hand them off, not when you print paperwork in advance.

Getting the design right without building it by hand

If you're moving this off Shopify's default and into Klaviyo, the fastest path to something that looks like your brand (instead of a generic template) is either Klaviyo's own drag-and-drop editor or a tool that builds from your store's actual products and styling. We cover how JetFlow's generation compares to Klaviyo's built-in templates if you'd rather not design the tracking button and cross-sell block from scratch.

A shipping confirmation email is a small piece of the customer experience, but it's one of the few emails nearly everyone opens. Get the trigger right, keep the copy out of the way of the tracking link, and it does its job without you thinking about it again.

Frequently asked questions

Does Shopify send a shipping confirmation email automatically?
Yes. The moment you mark an order fulfilled (and leave 'Send notification to customer' checked), Shopify sends its built-in Shipping confirmation email for free. You can edit the wording in Settings > Notifications, but you can't fully turn it off store-wide through the standard settings, only per order or via the Fulfillment API's notify_customer flag.
Should I use Shopify's shipping email or build one in Klaviyo?
Use Shopify's if the plain default is fine and you don't want to touch it. Build it in Klaviyo if you want it to look like your other emails, carry a real tracking button instead of a link buried in text, or include a cross-sell block. If you move it to Klaviyo, disable Shopify's version so customers only get one.
What triggers a shipping confirmation flow in Klaviyo?
The Fulfilled Order metric, which fires once every item on the order has been marked fulfilled. If you ship orders in multiple packages, use the separate Fulfilled Partial Order metric for the first package and add a HasPartialFulfillments is false filter to your full Fulfilled Order flow so it only fires once, on the last shipment.
How soon after shipping should the email go out?
Trigger it off the carrier scanning the package into their system, not off the moment you print the label. A label can sit on your counter for hours. If the email goes out on print and the tracking link shows nothing for half a day, customers assume something's wrong and message support.
What should a shipping confirmation email include?
The order number, a tracking button (not a raw tracking number to copy-paste), what shipped and in what quantity, the delivery address, and an estimated delivery date if your carrier gives you one. Keep marketing content light. One cross-sell block at the bottom is fine; a second CTA competing with the tracking button is not.