Frequently asked questions

Answers to the questions we get most often. If yours is not here, the History and troubleshooting guide covers failures in detail, or use the Help Center to reach us.

Do I need a paid Shopify plan to send HTTP requests?

No. Shopify's own Send HTTP request action is restricted to certain plans, but the HTTP Request action from this app works on every Shopify plan, including Basic. That is one of the main reasons merchants install it.

What Shopify data does the app access?

None. The app requests no access scopes at all. It cannot read your products, orders or customers.

Any customer data that ends up in an email gets there because you passed it in from Shopify Flow through the Variables (JSON) field. Flow reads your store data, and you choose what to hand over.

Which email providers can I use?

Three kinds of sender:

  • Microsoft 365 - Outlook.com and Microsoft 365 mailboxes, plus shared mailboxes and group mailboxes.
  • Google - Gmail and Google Workspace mailboxes, plus your "Send mail as" aliases.
  • SMTP - any SMTP server, including SendGrid, Mailgun, Amazon SES, Postmark, or your own.

Microsoft and Google connect through OAuth, so there are no credentials to store or rotate.

Why is my variable coming out blank?

Templates render leniently by design: an unknown variable becomes an empty string rather than throwing an error, so a typo never blocks a customer's email. The trade-off is that a typo looks like a blank.

The app now catches this for you. A live send where a placeholder produced nothing is badged Empty variables in History, and opening it names exactly which ones and whether Flow sent them empty or not at all.

To avoid it in the first place, use the Use in Shopify Flow card on your layout - it generates the Variables (JSON) with every key already correct. See Passing data from Shopify Flow.

My test email looks right but the real one is blank. Why?

Because they use different data.

Test Variables in the layout editor drive the preview and Send test email only. A live Flow run ignores them completely and uses whatever the Flow action sends in its Variables (JSON) field.

So a good-looking test email proves your design works. It proves nothing about your Flow configuration. Always run the workflow for real once, then check History.

How do I fill in the Variables (JSON) field?

Do not write it by hand. Open your email layout and find the Use in Shopify Flow card - it contains the exact JSON for that layout, with all key names correct. Press Copy JSON and paste it into the Flow action.

The app pre-fills the Flow property for fields it recognises (customer name, order name, order total, status page URL). Anything else shows <pick a Flow variable> for you to replace using Flow's own variable picker.

Full guide: Passing data from Shopify Flow.

Why is my line item / variant / product variable always empty?

Because an order has many line items, so there is no single value to read. {{ order.lineItems.variant.title }} returns nothing.

Either send the whole list and loop over it in your layout with a Loop block, or flatten it into a string inside Flow with a {% for %} loop. Both approaches are written out in Passing data from Shopify Flow.

This is the single most common cause of an empty variable, so the app warns you when a variable name looks like line-item data.

Will my emails land in spam?

Deliverability comes from the sending mailbox, not from this app. Since messages go out through your provider and your domain, you inherit your own sending reputation.

To give yourself the best chance:

  • Send from a domain with SPF, DKIM and DMARC properly configured.
  • Use a sender address on a domain you own, not a free consumer address.
  • Keep transactional email transactional. Order updates and account notices are expected by recipients; bulk marketing from a transactional setup is not.
  • Include a real postal address and identifying details in your footer preset.
Can I send to more than one recipient?

Yes. To Email(s), CC Email(s) and BCC Email(s) each accept multiple addresses, one per line. The whole send counts as a single action against your plan.

Does a test email use up my quota?

No. Send test email and the HTTP request Test button are both free. Only actions triggered by Shopify Flow count. Actions that fail before running - a misconfiguration or a duplicate retry - have their quota slot refunded.

Why does my email show [object Object]?

You interpolated a whole object rather than a field on it. HTTP requests serialise objects to JSON automatically; emails do not.

Use {{ variables.customer.firstName }} rather than {{ variables.customer }}, or use a Loop block to iterate over an array.

What happens if I delete something that is still in use?

You are allowed to. The app warns you and tells you how many Shopify Flow steps reference the item, but it does not block you.

Afterwards, any Flow step still pointing at the deleted item fails with a clear error that shows up in History - for example Email template not found. Point those steps at a replacement to fix them.

We deliberately do not block this. The reference is remembered until the app is uninstalled, so a "still in use" warning is often a leftover from a workflow you already deleted or rebuilt in Flow, and there is no way for us to tell the difference.

One exception: an uploaded file is checked properly before removal, because the same file can be reused across several layouts.

Can I change a layout from visual builder to HTML later?

No. The editor choice is fixed when the layout is created, because the two store their content differently. Create a new layout in the mode you want and repoint your Flow action at it.

Within the rich text / HTML mode you can switch between the rich text editor and raw HTML, though going back to rich text may simplify complex tables and inline styles.

Can I reuse a design across several emails?

Yes, in two ways:

  • Save as template stores a whole design under My templates, ready to start a new layout from. That gallery holds only designs you saved yourself.
  • Header and footer presets are shared live: edit the preset once and every layout using it updates.

You can also Export a layout and Import it into another store.

What happens when I hit my plan limit?

Further Flow actions are rejected with a plan-limit error and Shopify Flow marks the step as failed. Nothing is queued, so those messages do not go out later.

The quota is a rolling 30-day window, so capacity returns as older actions age out. Turn on the quota notifications to get warned at 80% and 100%. See Plans and usage.

Can I attach a PDF invoice to an email?

Yes. Attachments can be up to 15 MB per file and 20 MB per layout, in Attach mode. Above that - or when sending through Microsoft 365, which rejects more than 4 MB of inline attachments - switch to Link mode and the email carries a download link instead. See Attachments and images.

Why does Microsoft or Google show a different app name?

The consent screen may show Flow Action Extensions, the app's previous name. It is the same app - the OAuth registration name has not been updated yet. It is safe to approve.

Can Shopify Sidekick use this app?

Yes, read-only. Sidekick can list your layouts, senders, HTTP requests and secret names, report run history, and explain why a specific action failed.

It never returns secret values, SMTP passwords, OAuth tokens or message contents, and it cannot change anything - it links you into the app instead.

Where is my data stored?

In the EU. Databases and caches are region-local with encryption at rest, and credentials - SMTP passwords, OAuth tokens and secrets - get an additional layer of envelope encryption through a dedicated key management service. Plaintext credentials are never persisted.

Still need help?

Use the Help Center to report a bug, request a feature, or contact support directly. The in-app chat bubble is on every page of the app and is usually the fastest route, since it keeps the conversation tied to your store.