When to use this
Order shipped, out for delivery, delayed, delivered. Any status change worth knowing about. The reader has exactly one question, "where is my thing," and they will check this email more than once, often from a phone, sometimes forwarded to whoever is home to receive the package. Answer the question in the first line and put the status in the subject too. Nobody should have to open a shipping email to learn what it says.
Design rules a shipping email should follow
Status first, in plain words. Then the order number, the carrier, and an honest ETA, with a promise to email again if it changes. That promise is what stops the refresh-the-tracking-page anxiety loop. One button, the tracking link. Include the shipping address, because "wait, did I send that to my old flat" is a real and recoverable panic if the reader catches it early.
The delay email deserves special care. Sending "your order is delayed" proactively feels like admitting failure, so most shops don't, and their customers find out from a tracking page instead. Send it anyway. A delay the sender announced reads as honesty; a delay the customer discovered reads as neglect. Same delay, opposite outcomes.
The template
Copy-ready, table-based so it renders everywhere, inline styles only. Swap the {{placeholders}} for your values or your template engine's variables.
<!DOCTYPE html>
<html lang="en">
<body style="margin:0;padding:0;background:#f4f5f7;font-family:Arial,Helvetica,sans-serif;">
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="background:#f4f5f7;padding:24px 0;">
<tr><td align="center">
<table role="presentation" width="480" cellpadding="0" cellspacing="0"
style="background:#ffffff;border-radius:8px;padding:32px;">
<tr><td style="font-size:18px;font-weight:bold;color:#111;padding-bottom:14px;">
{{company_name}}
</td></tr>
<tr><td style="font-size:16px;font-weight:bold;color:#111;padding-bottom:6px;">
Your order is {{status}}.
</td></tr>
<tr><td style="font-size:14px;color:#444;line-height:1.6;padding-bottom:18px;">
Order {{order_number}} shipped with {{carrier}} and should arrive
by {{eta_date}}. We'll email you again if that changes.
</td></tr>
<tr><td align="center" style="padding-bottom:20px;">
<a href="{{tracking_url}}"
style="display:inline-block;background:#111;color:#ffffff;text-decoration:none;
font-size:15px;font-weight:bold;border-radius:6px;padding:13px 28px;">
Track your package
</a>
</td></tr>
<tr><td style="font-size:13px;color:#666;line-height:1.6;padding-bottom:14px;">
Shipping to: {{shipping_address}}
</td></tr>
<tr><td style="font-size:13px;color:#666;line-height:1.6;">
Something look wrong? Reply to this email and a human will sort it out.
</td></tr>
</table>
<table role="presentation" width="480" cellpadding="0" cellspacing="0">
<tr><td style="font-size:11px;color:#999;padding:16px 8px;text-align:center;">
Sent by {{company_name}} · {{company_address}}
</td></tr>
</table>
</td></tr>
</table>
</body>
</html>Deliverability: the half that actually fails
A shipping email that lands in spam generates the exact support ticket it existed to prevent. And shipping mail has a specific failure mode: volume moves with your sales. A big promotion means a spike of shipping notifications right after a spike of marketing sends, from the same brand, in the same week. If both ride the same stream and the campaign drew complaints, your shipping notifications inherit the damage exactly when order volume peaks. Keep them on a separated transactional stream so a loud campaign can never mute your order mail.
Keep SPF, DKIM, and DMARC aligned, and resist stuffing the footer with cross-sell blocks; a shipping email carrying promotions starts earning promotional-tab placement, and then nobody sees the delivery window. If your notifications are already going missing, run the free deliverability check before redesigning anything.
Related
- Order confirmation template: the email that precedes this one
- Payment receipt template: the money side of the same purchase
- Transactional vs Promotional: why stream separation matters
- Transactional Email Service: the sending layer for order mail