Flow's Send internal email action does what the name says: it emails people inside your business. Store staff, a fulfilment partner, a shared ops inbox. It's excellent for alerts — an order over a threshold, a product dropping below reorder point, a high-risk order waiting for review.
It is not designed to message customers, and Shopify has good reasons for that. Customer email carries consent obligations, unsubscribe requirements, sender reputation and deliverability concerns that an internal alert tool isn't built to handle. Putting {{order.email}} in the recipient field won't work: Shopify's Flow documentation says you can't use variables to set the address this action sends to. That's usually the first place things break.
The practical rule: if the email is for someone on your team, use Send internal email. If it's for a customer, route it through a system built for customer messaging — covered in the next section.
Worth checking as well: if the email is arriving in your own inbox rather than the customer's, the action is doing exactly what it was designed to do. That's not a bug to fix. It's a sign the workflow needs a different route.
Send marketing email vs Send internal email
Flow has two email routes, and they aren't interchangeable.
| Send internal email | Send marketing email |
|---|
| Built for | Your team: staff, a fulfilment partner, a shared inbox | Customers who have opted in to email marketing |
| Recipient | An address you type in. Variables can't set it | The customer from the trigger |
| Consent | Not relevant: it never goes to customers | Required. Customers who aren't subscribed are skipped with an error |
| Comes from | Flow itself | Shopify's own email app, Shopify Messaging |
| Use it for | Alerts: big orders, low stock, risky orders | Promotional messages to subscribers |
If a marketing email step fails with a message that the customer "is not subscribed to marketing", the action is working as designed. Shopify staff have said this is deliberate: an action that could email any customer without consent would be a spam route. For an order-specific message to a customer who hasn't opted in, use a native notification or an email platform, or a third-party app that adds a transactional email action to Flow.