Send an order confirmation email the moment a purchase goes through. Include the order number, each item with quantity and price, the total, the delivery address and method, when to expect it, and how to get help. Keep promotions out so it stays a transactional message. Build yours below and copy the HTML.
| Include | Why |
|---|---|
| Order number | The first thing customers quote when they contact you |
| Items, quantity, price | Lets the buyer spot a wrong size or count straight away |
| Subtotal, shipping, tax, total | Matches what their card statement will show |
| Delivery address and method | Catches address mistakes before the parcel leaves |
| Help contact | A reply address or phone number saves a support ticket |
Updated
Customers open this email to check one thing: did it work, and what did I buy? Clarity beats design here. Fill in your store details and items, watch the preview update, then copy the HTML into your store or email platform's order notification template.
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="background:#f4f4f4">
<tr><td align="center" style="padding:16px">
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="max-width:560px;background:#ffffff;font-family:Arial,sans-serif;color:#222;font-size:14px">
<tr><td style="padding:24px 24px 0"><b style="font-size:18px">Rosa's Bakery</b></td></tr>
<tr><td style="padding:16px 24px">
<h1 style="margin:0 0 8px;font-size:20px">Thanks for your order, Sam!</h1>
<p style="margin:0">Order #1042 is confirmed. We'll email you again when it ships.</p>
</td></tr>
<tr><td style="padding:0 24px">
<table role="presentation" width="100%" cellpadding="0" cellspacing="0">
<tr><td style="padding:8px 0;color:#777">Item</td><td align="center" style="padding:8px 0;color:#777">Qty</td><td align="right" style="padding:8px 0;color:#777">Price</td></tr>
<tr><td style="padding:8px 0;border-bottom:1px solid #eee">Sourdough loaf</td><td style="padding:8px 0;border-bottom:1px solid #eee" align="center">2</td><td style="padding:8px 0;border-bottom:1px solid #eee" align="right">$13.00</td></tr>
<tr><td style="padding:8px 0;border-bottom:1px solid #eee">Cinnamon buns (box of 4)</td><td style="padding:8px 0;border-bottom:1px solid #eee" align="center">1</td><td style="padding:8px 0;border-bottom:1px solid #eee" align="right">$9.00</td></tr>
<tr><td colspan="2" style="padding:8px 0">Subtotal</td><td align="right">$22.00</td></tr>
<tr><td colspan="2" style="padding:4px 0">Shipping</td><td align="right">$4.95</td></tr>
<tr><td colspan="2" style="padding:8px 0"><b>Total</b></td><td align="right"><b>$26.95</b></td></tr>
</table>
</td></tr>
<tr><td style="padding:16px 24px 24px;color:#555">Questions? Just reply to this email.</td></tr>
</table>
</td></tr>
</table>Reuse the same frame and change the middle block when the parcel leaves.
Swap in the carrier, tracking address and date your store provides.
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="font-family:Arial,sans-serif;color:#222;font-size:14px">
<tr><td style="padding:16px">
<h1 style="margin:0 0 8px;font-size:20px">Your order #1042 is on its way</h1>
<p style="margin:0 0 12px">Shipped with Example Post. Expected delivery: Friday.</p>
<a href="https://example.com/track/1042" style="background:#4F98FB;color:#fff;padding:10px 18px;border-radius:6px;text-decoration:none">Track your parcel</a>
</td></tr>
</table>Google documents an Order type for email. These are the required properties from its reference; place the script in the email's HTML.
Validate it with Google's Email Markup Tester before relying on it.
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Order",
"merchant": { "@type": "Organization", "name": "Rosa's Bakery" },
"orderNumber": "1042",
"priceCurrency": "USD",
"price": "26.95",
"acceptedOffer": [{
"@type": "Offer",
"itemOffered": { "@type": "Product", "name": "Sourdough loaf" },
"price": "6.50",
"priceCurrency": "USD",
"eligibleQuantity": { "@type": "QuantitativeValue", "value": "2" }
}]
}
</script>
Plain and specific wins: Order #1042 confirmed, or Thanks for your order from Rosa's Bakery. Customers search their inbox for these weeks later, so include the number.
Keep the shipping confirmation subject distinct, for example Your order #1042 is on its way, so the two never look like duplicates.
Store platforms let you edit the order notification template in their settings. They use their own placeholder tags for the order number, items and totals, so keep the layout from this page and swap our sample values for those tags.
Send a test order to yourself and check the email on a phone and in at least two mail apps before going live.
Yes, when its main job is to confirm a purchase. The FTC lists messages that facilitate, complete or confirm a transaction the recipient already agreed to as transactional, and those are exempt from most CAN-SPAM rules apart from honest routing information.
Gmail says one-click unsubscribe is required only for marketing and promotional messages, not transactional ones. If you add promotions, the email may count as marketing and need an opt-out.
Many email apps support less CSS than web browsers do, and simple table layouts tend to hold together across them. Adding role="presentation" tells screen readers the tables are for layout, not data.
The order number, which items shipped (and which have not, for split orders), the carrier, the tracking link and the expected delivery date.
Gmail documents an Order markup using schema.org, with required fields including merchant, orderNumber, price, priceCurrency and acceptedOffer. Google also provides a tester to validate it. Whether a card appears is up to Gmail.
Related: HTML email templates, HTML email template builder, Receipt generator, Abandoned cart email examples, Welcome email templates.
Start for free or see all free tools. We.Inc is free to start, with no card needed. AI building is on paid plans from $20 a month.
We.Inc is an AI-powered website builder you can resell under your own brand. Launch a branded client dashboard, bill on Stripe Connect, and deliver AI-generated websites in minutes. White-label plans start at $99 a month for 25 client sites, with a 7-day free trial and no per-site fees.