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_customertofalsewhen 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:
- In Klaviyo, go to Flows > Create Flow > Metric-triggered flow.
- Choose Fulfilled Order as the trigger metric.
- Add the filter so it skips orders with partial fulfillments already covered elsewhere, if you're running a separate partial-order flow.
- 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.
- 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.
