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.
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.
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.