Abandoned cart email for restaurants

A guest built a pickup order, chose a time slot, then closed the tab. This email brings them back before that held bag goes cold and the pickup window closes.

Open the full email ↗ Get this on your brand
Live preview View HTML ↗

What makes this abandoned cart work for restaurant / hospitality

Restaurant carts are not ecommerce carts. A guest who abandons a $30 pickup order at 5:50pm is not comparison shopping. They got distracted, the phone rang, or the kids walked in. The window to win them back is minutes, not days. Here is how a restaurant abandoned cart earns its keep.

Trigger. Fire the flow when a guest starts checkout on your online ordering platform (Olo, ChowNow, Toast Online Ordering, OrderUp, or a Shopify headless build) but never reaches the confirmation page in the session. For reservations, fire when a hold is created in OpenTable, SevenRooms, or Resy but never confirmed. Exclude catering inquiries above your threshold and route those to a human sales reply.

Timing. Send the first email 30 to 45 minutes after the guest leaves, for pickup and delivery. For reservations, 15 to 20 minutes, before the guest books a competing table. Most restaurants stop at one email. The food decision is live for an hour, not a week. A second message 24 hours later with a small perk is optional, and works best for higher ticket catering or large party holds.

Offer. Lead with the held bag and the pickup time, not a discount. Hunger is the offer. If you do discount, use a free item (free garlic knots, a free cookie, a free drip coffee with the order) instead of a percent off. A 15 percent coupon cheapens a $28 check and trains guests to wait. A free add-on protects menu pricing and lifts average order value by $4 to $6.

Copy angle. Name the dishes left behind. Show the pickup time. Skip the generic "you left something in your cart." A restaurant can say: Your two Brassica bowls, pickup at 6:30pm, are on hold until 6:45. One photo of the actual dish outperforms a cart icon every time. Keep the tone warm and quick. You are the host, not a coupon engine.

CTA. One button, one verb. "Complete your order" or "Confirm my pickup." Cut the secondary links (menu, locations, loyalty). Every extra link leaks clicks away from the only action that recovers the sale.

Numbers to expect. Restaurant abandoned cart open rates run 40 to 55 percent. Of those who click, 8 to 12 percent finish the order. Average recovered ticket sits between $28 and $34. That is why one well timed email, not a three message cascade, carries this flow.

Why it renders in every inbox

Restaurant guests read email on phones between tasks, often with one hand, in poor lighting, sometimes in dark mode. The template has to survive that.

Nested tables, not divs. The layout is built from nested HTML tables with fixed pixel widths. No flexbox, no CSS grid, no floated divs. Gmail strips anything fancier, and Outlook ignores it outright. Tables render the same in 2009 and 2026.

Inline CSS. Every style lives on its element as an inline style attribute. Webmail clients (Gmail, Yahoo) drop your style block, so a class based layout arrives unstyled. Inline styles survive the trip.

Bulletproof VML button for Outlook. Outlook 2007 through 2021 render mail in Microsoft Word, not a browser. Word cannot draw CSS rounded corners or padding on anchor tags, so buttons collapse into plain text links. A VML rectangle drawn inside conditional Outlook-only code keeps the button a real, clickable, padded button. The result is the same orange "Complete your order" tile in Outlook as in Gmail.

Live text over images. The dish names, the pickup time, the price, and the button label are all live text. Guests with images off still see the offer. Screen readers read it. Dark mode inverts it cleanly. Burn the headline into a JPG and you lose all three.

Dark mode color-scheme meta. A color-scheme meta tag plus supported dark mode CSS hands Apple Mail and Outlook the right background and text colors when the device flips to dark. Your cream card does not get inverted into a washed out gray.

One mobile media query. A single max-width 600px media query stacks columns, enlarges tap targets, and sets body text to 18px on phones. One rule set, not a thicket of breakpoints.

Web font fallbacks. Headings can call a brand display font, but the stack falls back to system fonts (Helvetica, Arial, Segoe UI) when the web font does not load. Layout never depends on the custom face.

How to use it in Klaviyo or Mailchimp

Five minutes from paste to send.

1. Copy the HTML. Use the export from this page. It is one self contained file with no external stylesheet.

2. Paste it in. In Klaviyo, open your flow email, drag an HTML block into the canvas, and paste the code (or switch the whole template to Source HTML). In Mailchimp, create a campaign, choose Code your own, then Paste in code, and drop the HTML in.

3. Swap the brand. Replace the Sycamore Kitchen name, logo image URL, dish names, prices, and the order finish link with your client's. The four colors to change: the primary button (#B4451C here), the dark header bar, the white held-order card background, and the body text color. Keep the button text contrast above 4.5:1 or the tap target fails accessibility.

4. Wire the merge tags. This is where restaurant flows break. The held items, the pickup time, and the order total must come from your ordering platform, not be typed by hand. In Klaviyo, map the event from your ordering integration: {{ event|lookup:'pickup_time' }} for the slot, an {{ event|lookup:'items' }} loop for line items, {{ event|lookup:'order_total' }} for the price, and {{ event|lookup:'order_url' }} on the button href. In Mailchimp, use the connected site or your integration merge tags: *|PICKUP_TIME|*, *|ORDER_TOTAL|*, *|ORDER_URL|*. For reservations, swap in {{ event|lookup:'party_size' }} and {{ event|lookup:'reservation_time' }}, or *|RESERVATION_TIME|*.

5. Test before it goes live. Send a real test to Gmail (web and Android app), Apple Mail (iPhone, dark mode on), and Outlook (Windows, 2019 or 365). Confirm the button is a button in Outlook, the pickup time merge tag resolved (not a literal {{ event|lookup:'pickup_time' }}), and the dark mode card still reads. Then trigger the flow with a real abandoned test order and watch the recovery.

Questions

Is this restaurant abandoned cart template free to use? +

Free. Copy the HTML or MJML, rebrand it for any restaurant or hospitality client, and send it. No attribution, no license fee. You pay only your ESP for the send.

Will the button actually work in Outlook? +

Yes. The CTA is a bulletproof VML button. Outlook 2007 through 2021 render mail in Microsoft Word, which ignores CSS button padding. The VML rectangle forces a real padded, clickable tile in Outlook, the same as it shows in Gmail and Apple Mail.

How do I match my restaurant's brand colors? +

Change four hex values: the button, the header bar, the held-order card background, and the body text. Find them at the top of the MJML inside mj-attributes. Keep button text contrast above 4.5:1. Warm neutrals like cream, terracotta, and espresso read as food friendly. Avoid pure black on white, which looks like a receipt.

Do I need to know HTML to use this? +

No. Paste the rendered HTML into your ESP and you only touch text, links, and a few color values. If you want to restructure columns or change spacing, the MJML source is easier to edit than raw HTML, and you can rebuild it for free in the MJML online editor.

Want this on your client's brand?

Paste a client's site and we build a real, on-brand sample in clean, ESP-safe HTML you can paste into Klaviyo.

Get a free sample

More templates