History and troubleshooting

Every action this app runs is recorded. History is the first place to look when an email did not arrive, or arrived looking wrong.

The History list

The list

Columns: ID, Name, Type, Status, Duration and Executed At.

Filter by:

  • Action Type - HTTP Request or Email
  • Status - Success, Failed or Pending

Search matches the name of the layout or request. Arriving here from an HTTP request's Request history button pre-filters to that one request, with a Show all events button to clear it.

The two things to look for

A red Failed badge means the send or request did not happen. Open it for the provider's error.

An amber Empty variables badge means the email was delivered, but one or more {{ variables.x }} placeholders rendered to nothing - so the recipient got a message with a gap in it. This is the failure that used to be invisible: the row is green, the provider accepted the message, and only the recipient sees the problem.

The detail view

An action detail view

Opening an entry shows:

Card Contents
Empty variables warning Which placeholders produced nothing, and whether Flow sent them empty or not at all
Event Details Event ID, action type, status, duration, execution time, and the Flow run id
Error Message The provider's or API's actual error, when the action failed
Request Data What was sent - recipients, sender, resolved subject, variables, or the resolved HTTP request
Response Data What came back - the provider message id, or the HTTP status and body

The title tells you which sender was used, for example Order email via [email protected] (MICROSOFT).

Resending an action

The detail page has a Resend button. It re-renders the layout with the original variables and sends again to the original recipients through the same sender, or re-executes the HTTP request exactly as it was sent.

It runs immediately and counts as one action against your plan. Resend is not available for actions that went through the fallback default sender.

Common problems

The email never arrived, and there is no History entry at all. The action never ran. The problem is in Shopify Flow, not here: check the workflow is turned on, the trigger fired, and any condition actually matched. Tag conditions match exactly, so VIP and vip are different.

The entry has an Empty variables badge. Your layout asks for a variable the Flow action did not supply, or supplied empty. Open the entry to see which. Full walkthrough in Passing data from Shopify Flow.

A test email looked fine but the live one is blank. Test Variables in the layout editor only drive previews and test sends. A live run uses the Flow action's Variables (JSON) field, which is a completely separate thing. This is the most common source of confusion.

Status is Failed with an authentication error. For SMTP, the credentials or port are wrong - open the SMTP server and press Test Connection. For Microsoft 365 or Google, the connection may need re-authorising: check Email Senders → Connected accounts for a Reconnect required badge.

An email body shows [object Object]. You interpolated a whole object. In emails you must reach into it ({{ variables.customer.firstName }}) or loop over it. Only HTTP requests serialise objects to JSON automatically.

The message was rejected for size. Attachments over 20 MB in total are blocked, and Microsoft 365 rejects more than 4 MB of inline attachments. Switch the large files to Link mode. See Attachments and images.

An HTTP request fails with SSRF blocked. The destination resolves to a private or internal network address, which is refused for safety. Use a publicly reachable endpoint.

Everything fails at once with a plan limit message. You have used your 30-day allowance. See Plans and usage.

Asking Sidekick

Shopify Sidekick can query this app directly, read-only. It is often quicker than filtering History by hand:

  • "Did any emails fail this week?"
  • "Why did my last email send fail?"
  • "Which email senders are set up?"
  • "Do I have an HTTP request for Airtable?"

Sidekick will never return secret values, SMTP passwords, OAuth tokens, HTTP header values, or raw payloads - it links you into the app for those.

Still stuck

Open a bug report with your store domain, the layout or request name, and the timestamp of the run. See Report a bug in the Help Center.