← back to field notes
research DISPATCH Nº 113 · · 10 MIN READ

How to fix order confirmation emails not sending on Shopify

The customer paid this morning and by afternoon she is asking if you charged her at all. Here is the community record of Shopify confirmations that never send, the five doors the silence comes through, and the playbook that gets a receipt into her inbox before she thinks to call.

The order lands on a Tuesday at 9:47am: a candle trio, paid in full, a first time customer. At ten past four the phone rings. I placed an order this morning, she says, and I never got a receipt. Did you actually charge me? You pull the order up while she waits. Paid, yes. Address, fine. And in the timeline, where every other order shows a quiet gray line reading Order confirmation email sent, there is nothing. No line, no error, nothing to click.

You check the obvious things in the wrong order, the way everyone does the first time. Her junk folder. Her promotions tab. The spelling of the address on the order. Then you go looking for the resend button and make the discovery that has kept one community thread alive for four years: if the confirmation never went out, Shopify has no way to send one. The resend button you remember exists only on orders that already sent it.

The receipt is the product, for a while

For the customer, the confirmation email is not a nicety. For the first day or two it is the entire purchase: the only proof that money left their card and something is coming back. A merchant in a March 2023 thread described the failure from the receiving end, a lot of customers saying they didn't receive the order confirmation, and named the conclusion those customers jump to: people automatically think they get scammed. Which is the correct instinct on their side of the screen. A charge with no receipt is exactly what fraud looks like.

What follows is predictable and all of it lands on you. The nervous ones write in and join the ticket queue that eats your afternoon. The impatient ones assume the checkout failed and place the same order twice, leaving you a duplicate to catch and refund. The worst case sees an unfamiliar charge, no receipt anywhere, and disputes it, and a cardholder who can say they never received any confirmation is a harder chargeback to win than it should be. Three different costs, one silent minute on day one.

The community record

The reference thread was opened in October 2021 by a merchant who took a phone order, built it as a draft, and added the customer's email a beat after the order went through. Then she went looking for the resend button that was not there. Shopify staff answered plainly, and the answer has aged into the problem's epitaph: at this stage there isn't a way within the Shopify admin natively to resend an order confirmation email if none was sent through in the first place. A feature request would be passed along, staff added, though we're unable to track it. The thread ran to 26 replies and more than two thousand views, and was still collecting posts in July 2025.

Read in order, the replies are a time lapse of patience failing. May 2022: did this ever come through? Still a big issue. May 2023, in capitals: it's been a whole year. In November 2023 a merchant explained what he does now, which is send the customer a regular email with a screenshot of the order page. December 2023 produced the thread's best workaround, dig the order status page URL out of the More actions menu and paste it into a plain email, along with the thread's own review of that workaround: definitely not a solution, and unbelievable that something this simple has not been fixed for years. Days later another merchant hit the adjacent wall: her customer had typo'd the email at checkout, she corrected it on the order, and found there is no way to send the confirmation to the fixed address either. January 2024: it is nothing more than one resend button, could be fixed in five minutes. February 2024 supplied the closing line: other platforms are implementing AI, and here I am not being able to send an order confirmation email.

The missing button is only the loudest door. In July 2025 a developer posted a genuine puzzle: orders placed through checkout links, valid email present, payment complete, Shopify's own checkout page, and no confirmation email, ever. The one visible difference was the order source, reading Direct, Checkout Links & QR, via import. The in-thread answer: Shopify suppresses confirmation emails for orders that arrive through the Storefront API's checkout URL, on purpose, to prevent unintended or duplicate emails, because the order did not originate from the Online Store channel. No setting says so, and nothing warns you. The timeline just misses its line, on every order from that channel, until a customer asks. And running underneath all of it is the plainest question in the genre, asked by a retail merchant in a thread still active in February 2025: is there a place to find emails that weren't delivered? There is not. Shopify records that an email was sent. Whether it arrived, bounced, or died in a spam folder is recorded nowhere a merchant can see.

◆ NOTE The record, in the merchants' own words: no way within the admin to send a confirmation if none went out the first time, per Shopify staff, October 2021, with a feature request that cannot be tracked. It's been a whole year, May 2023, in capitals. A merchant emailing customers screenshots of the order page, November 2023. No way to resend to a corrected address after a checkout typo, December 2023. Could be fixed in five minutes, January 2024. Checkout link orders suppressed by design, confirmed July 2025. And the question with no answer, active February 2025: is there a place to find emails that weren't delivered?

Five doors to silence

Trace enough of these and the missing receipt turns out to have five distinct causes, each with its own signature. The email was sent and filtered: the sending domain is not authenticated, SPF, DKIM, and DMARC do not line up, and the mailbox provider files your receipt under spam or promotions, which is where whole satellite threads live. The email was never sent because the order had no address at the moment it was created: phone orders, POS sales, drafts where the email arrived one step late, and for that order the admin can never send one. The email went to an address that does not exist, because the customer typed gmial.com at checkout and nothing checked, the same class of silent typo as the bad address that ships anyway. The email was suppressed by channel: checkout links, Storefront API orders, imports, anything wearing via import in the source field. And the email was sent and bounced, which Shopify records nowhere.

Five causes, five different fixes, and from the outside one identical symptom: the order looks routine and the customer is holding nothing. That is why the phone call is the discovery mechanism. The merchant learns about the failure one order at a time, always from the person it embarrassed them in front of, the same shape as the order that never reaches the warehouse: every system says fine, and the proof of the failure lives outside all of them.

The screenshot is the right idea in the wrong tool

Look at what the thread's veterans converged on. One emails a screenshot of the order page. One sends the order status link by hand. One creates a manual invoice and fires that instead, because the invoice email, unlike the confirmation, can always be sent. Each of these is a person doing delivery assurance by hand: notice the silent order, work out why it was silent, and get the customer proof of purchase through whatever door still opens. The instinct is exactly right. The flaw is that every step depends on noticing, and noticing is the step that fails, because the admin surfaces nothing to notice. A missing gray line in one timeline among hundreds is not a signal anyone scans for past Wednesday of the first week. The merchants in the record are not short of fixes. They are short of the alarm.

What the automation actually has to do

As a Dugong playbook, in plain prose:

# trigger
On every new order,
and on a clock for the sweep

# steps
1. Baseline each channel: which
   sources send confirmations,
   and what normal looks like
2. Watch every order for the
   sent event, within minutes
   of creation
3. Diagnose the silent ones:
   no address, suppressed
   channel, email added late
4. Read the address itself:
   the typo'd domain, the
   impossible inbox
5. Send the receipt by another
   door: invoice or status
   link, your template
6. Listen for the echo: bounces
   and never-got-it tickets,
   matched back to orders
7. Report weekly: sends,
   silences, causes, and the
   domain auth health check

Step two is the alarm the record is missing. Every order that reaches ten minutes old without its sent event goes on a list, and the list is short enough to act on because most orders pass. Step three turns the list into causes, and the cause picks the fix. An order with no email address needs a human or a phone number, not a resend. An order from a channel Shopify suppresses needs its receipt sent through the invoice door, every time, as policy. An email added late, the October 2021 case, needs the same. A typo'd domain needs a correction first, because confirming to gmial.com helps nobody.

Step five is where the trust gets saved, and it is the thread's own December 2023 workaround with the noticing automated. Shopify will not resend a confirmation that never sent, but every order has an invoice email that can always go out, and an order status page whose link can be shared. A receipt built on your template, carrying the order contents and that link, lands within minutes of the silence being detected, and the customer never learns there was a failure at all. The one judgment call worth being careful with is step four: gmial.com and hotnail.com are machine-catchable, but jsmith versus jsmyth is not, and a system that guesses at addresses burns more trust than it saves. Flag those, fix the order when the customer answers, and send then. Knowing which case is which is the reading work that runs through every automation worth building: the rule is cheap, knowing when the rule applies is the job.

The honest limits, stated plainly. None of this adds the resend button Shopify has declined to build since 2021; the native email stays unsent, and what the customer gets is a replacement receipt through a door that opens. No tool can see inside Gmail's classifier or force an inbox placement, and a wrong-but-plausible address stays wrong until a human confirms the right one. Domain authentication is your DNS to fix, not the watcher's, though the watcher can tell you the day your DMARC alignment breaks instead of the month your open rate quietly halves. What changes is discovery. In the documented cases, discovery is the customer: the 4pm phone call, the second order, the dispute. On a watched store the silent order is a line item at 9:57am with the cause attached and the replacement already sent.

Why this is a compiler problem, not an app problem

Email apps exist on both sides of this. Marketing platforms will happily take over your transactional sending, and deliverability suites will score your domain. But the replacement sender does not watch the orders that skipped sending, and the deliverability score does not know that your checkout link channel is suppressed by design. What this failure wants is a witness with your store's definition of silence, and that definition is specific in ways no settings page survives. Which channels are supposed to send receipts at all? Do POS orders get one, or is the paper slip the receipt? Do wholesale drafts on net terms get a retail-looking confirmation, or would that confuse the bookkeeper on the other end? How long is too long for a store that batches imports overnight? Who gets woken when an entire channel goes quiet at once, the way it does when a template edit breaks or an app hijacks the notification? Those are sentences about your operation. They should compile into the watcher as written, instead of being shaved down to whatever a checkbox happens to offer.

Run Tuesday's candle order again with the sentences compiled. The order lands at 9:47 through the Instagram bio's checkout link, and the source says via import, a channel the watcher knows never sends. At 9:49 the replacement receipt goes out through the invoice door, on your template, with the order status link inside. At 9:50 the order timeline gets a note saying so, with the cause. The 4:10pm phone call never happens, and the weekly report counts one silence, caught, channel known, alongside the two bounced Yahoo addresses and the one gmial.com the customer thanked you for catching.


The workflow worth building this week

Start by measuring the silence you already have. Pull the last 90 days of orders and check each for the confirmation sent event; the count of orders missing it is a number most merchants have never seen, and the sources those orders share will name your suppressed channels immediately. Place a test order through every door you sell through, the store, the checkout links, the POS, a draft, and watch which ones produce the gray line. Then open Settings and confirm your sending domain actually authenticates, because if SPF or DKIM fails, your confirmations are landing in spam at scale and no thread workaround fixes that.

Then write the policy in plain language: which channels should send a receipt, what the replacement receipt looks like and which template it uses, when to ask for a corrected address instead of sending, and who hears about it when a whole channel goes silent. This list is the spec. Run the watcher in observe mode for a week and read what it flags; the innocents, a wholesale draft that was never meant to get a receipt, tune the policy, and what remains is your store's true silence rate, pre-diagnosed.

Then say the brief the way you would hand it to a new hire. Watch every order that lands in the store. If the confirmation email has not gone out within ten minutes, find out why, and unless the order is wholesale or POS, send the customer a receipt through the invoice door on our template, with the order status link inside. If the email address looks like a typo, ask for the right one instead of sending. If a whole channel goes quiet, or the domain stops authenticating, tell me the same hour. Note everything on the order timeline, and every Monday tell me how many receipts went out, how many orders went silent, and which door the silence came through. That is the whole paragraph. The compiler turns it into the workflow, and the next time a confirmation fails to send, your customer is reading the replacement before the kettle boils.

◆ READING Two companion pieces if this one landed: the gift card that never arrives, on Shopify's other one-shot email with no delivery check, and the order your customer placed twice, on the most expensive thing a missing receipt causes next.

If you are a Shopify merchant with a receipt ghost story, the channel you discovered was suppressed all along, the typo you caught a week too late, the customer who called the bank before they called you, the inbox is open: field-notes@dugong.live. We are collecting case studies for the next issue.

research essay
share · copy link · ✦
◆ COMMON QUESTIONS

Why are my Shopify order confirmation emails not sending?

There are five distinct causes, and the first job is telling them apart. The email may be sending and landing in spam, which happens at scale when your sending domain is not authenticated with SPF, DKIM, and DMARC. It may never have been sent because the order had no email address at the moment it was created, which covers phone orders, POS sales, and draft orders where the address was added a step late; Shopify permanently cannot send a confirmation for those orders. It may have gone to a typo'd address the customer entered at checkout. It may be suppressed by design: orders arriving through checkout links or the Storefront API's checkout URL show a source like via import, and Shopify deliberately withholds the confirmation because the order did not originate from the Online Store channel, a behavior confirmed in a July 2025 community thread. Or it was sent and bounced, which the admin records nowhere. Check the order timeline first: if the Order confirmation email sent line is missing, the email never went out, and the order source and the moment the address was added will usually tell you which door the silence came through.

How do I resend a Shopify order confirmation that was never sent?

You cannot, natively. If the confirmation was sent, the timeline offers a resend; if it never sent, there is no button, and Shopify staff confirmed as much in an October 2021 community thread: there is no way within the admin to send an order confirmation if none went out the first time, including after you add or correct the email address on the order. The thread collected workarounds for four years. Send the customer the order status page link, found under More actions on the order, which any customer can open. Create and send an invoice from the order, since the invoice email can always be sent and carries the order contents. Or, as one merchant settled on, email a screenshot of the order page. Shopify Flow on Plus plans and the Admin API can trigger emails programmatically for channels that suppress them. The durable fix is not any single workaround but the noticing: a watcher that flags every order still missing its sent event a few minutes after creation, so the replacement receipt goes out the same morning instead of after the customer calls.

Why do Shopify order confirmation emails go to spam?

Because mailbox providers do not trust the sending setup, and transactional templates are not exempt from filtering. The biggest lever is domain authentication: if SPF, DKIM, and DMARC are not configured and aligned for your sending domain, Gmail and Outlook have every reason to file your receipts as spam or promotions, and community threads on confirmations landing in junk folders come back to authentication again and again. Verify your domain in Shopify's settings, check the three records, and test with a fresh mailbox before assuming delivery. Content matters at the margin, spammy subject lines and heavy images hurt, but authentication decides most cases. The deeper operational problem is that you get no signal either way: Shopify's timeline records that an email was sent and says nothing about placement, and when a merchant asked in a thread active in February 2025 whether there is a place to find emails that were not delivered, the answer was that no such log exists. Treat silence from customers as data. A cluster of never-got-it tickets from one mailbox provider in one week is your deliverability alarm, and a watcher can correlate that faster than an inbox can.

Do Shopify checkout links and Storefront API orders send confirmation emails?

No. Orders created through the Storefront API's checkout URL, which includes direct checkout links and QR code flows, arrive with a source like Direct, Checkout Links and QR, via import, and Shopify suppresses the order confirmation email for them by design, to prevent what it considers unintended or duplicate emails from orders that did not originate on the Online Store channel. A July 2025 community thread confirmed the behavior after a developer noticed the Order confirmation email sent line missing from the timeline on every such order despite valid emails and completed payments. Nothing in the admin warns you this is happening, and no setting turns it back on. The options are to send each confirmation manually from the order page, to use Shopify Flow on Plus plans, to trigger the notification through the Admin API, or to route the receipt through the invoice email, which can be sent for any order. If you sell through bio links, QR codes, or a headless storefront, assume the channel is silent until a test order proves otherwise, and give every order from it a receipt through a door that opens.

Can AI catch Shopify orders where the confirmation email never went out?

Yes, because the failure has a reliable signature: an order that reaches a few minutes old with no Order confirmation email sent event in its timeline. An automation like Dugong watches every new order for that event, and diagnoses the silent ones by cause: no email address on the order at creation, a suppressed source like via import, an address added after the fact, a domain that looks like a typo. The cause picks the response. Suppressed channels get a replacement receipt through the invoice door on your template, with the order status link inside, minutes after the order lands. Obvious typos like gmial.com get a correction request instead of a wasted send, while plausible addresses are flagged for a human rather than guessed at. Bounce reports and never-got-it tickets get matched back to their orders, so a one-off becomes a pattern you can see. The honest limits: nothing adds Shopify's missing resend button, fixes your DMARC records for you, or reaches inside a spam filter. What changes is discovery. The silent order is found at minute ten with the cause attached and the replacement sent, instead of at 4pm by the customer who thought she had been scammed.