Introduction of Flow Action Extension
Shopify Flow is a powerful automation platform, but its built-in action library has limits. You can trigger workflows and set conditions, but when it comes to doing something with external services, calling an API, sending a custom email, native Flow falls short.
Flow Action Extensions bridges that gap. It adds two versatile actions to Shopify Flow, HTTP Requests and Email Sending, letting you connect your workflows to any external API, webhook, CRM, or notification service, all without writing a single line of code.
What Makes It Different
Native Shopify Flow handles internal Shopify actions well (tagging, publishing, inventory adjustments). What it lacks is outbound connectivity, the ability to reach beyond Shopify and interact with external systems. This extension focuses precisely on that gap:
-
HTTP Request action : send GET, POST, PUT, PATCH, or DELETE requests to any API endpoint
-
Email action via SMTP : send rich HTML transactional emails through your own mail server
-
Secure secrets management : store API keys, tokens, and passwords once — reference them anywhere with
{{ secrets.keyName }}syntax -
Liquid template support : build dynamic request bodies and email content with
{{ variables.xxx }}placeholders populated from Flow -
Full execution history : every action logged with request/response details for easy debugging
-
Zero Shopify permissions : the app never accesses your shop data — it only executes outbound requests and sends emails
Feature Reference by Category
HTTP Request Action
Connect Shopify Flow to any external API, webhook, or service with pre-configured HTTP request templates.
|
Feature |
Description |
|---|---|
|
All HTTP Methods |
Supports GET, POST, PUT, PATCH, and DELETE — choose the right method for your API |
|
Custom Headers |
Add any headers your API requires (Authorization, Content-Type, custom headers, etc.) |
|
Dynamic URLs |
Use |
|
JSON Body Templates |
Build request bodies with Liquid template syntax — reference secrets and Flow variables inline |
|
Timeout & Retry Config |
Optionally provide variables as JSON input (eg, |
Example URL
:https://api.example.com/v{{ variables.version }}/users?key={{ secrets.apiKey }}
Recommended screen recording: Creating Your First HTTP Request (60–90 seconds) — Walk
through creating a request template on the HTTP Requests page, adding a header with a secret reference, selecting POST
method, and adding a JSON body with {{ variables.xxx }}placeholders. End by showing how to add the "HTTP
Request" action in Shopify Flow and select the template.
Send Email Action
Send transactional emails directly from Shopify Flow using your own SMTP server.
|
Feature |
Description |
|---|---|
|
SMTP Configuration |
Connect Gmail (smtp.gmail.com:587), SendGrid, Mailgun, Amazon SES, or any custom SMTP server |
|
HTML Email Templates |
Create rich email templates with full HTML or plain text — supports Liquid template tags |
|
Dynamic Subject Lines |
Use |
|
Custom Variables |
Pass custom data as JSON in the Flow action input (eg,
|
|
TLS/SSL Support |
Secure connections with TLS/SSL — configure in SMTP Configurations |
|
Display Name |
Set an optional "From" display name so emails appear from your brand, not a raw address |
Example subject :Order {{ variables.orderNumber }} confirmed
Recommended screen recording: Sending Your First Email End-to-End (90–120 seconds) — Show the full flow: set up an SMTP config with Gmail → create an email template with a dynamic subject and HTML body → add the "Send Email" action to a Flow triggered by "Order Created" → trigger a test order → show the email in the inbox arriving with real order data populated.
Secrets Management
Store sensitive credentials securely and reference them across all your HTTP request and email templates.
|
Feature |
Description |
|---|---|
|
Secure Storage |
API keys, auth tokens, and passwords are stored securely — never exposed in templates, Flow config, or logs |
|
Simple Syntax |
Reference any secret with |
|
Runtime Injection |
Secrets are replaced at execution time — the actual values never appear in your template configuration |
|
Reusable |
Create a secret once, use it across any number of HTTP request and email templates |
Important: Use the correct syntax {{ secrets.keyName }}— not
{{ secret.keyName }}or {{ secrets['keyName'] }}. Check Event History to verify secrets are
being replaced correctly in the actual request.
Recommended screen recording: Secrets in Action (45–60 seconds) — Create a secret (eg, an
API key), show it being referenced in an HTTP request template with {{ secrets.apiKey }}, trigger the
action, then open Event History and demonstrate that the secret was injected into the actual request.
Event History & Debugging
Monitor every action execution with detailed logs and troubleshooting information.
|
Feature |
Description |
|---|---|
|
Events Card |
Shows your current usage for the selected time period |
|
Plan Limit Card |
Displays your monthly execution limit (30-day rolling window) |
|
Success Rate Card |
Shows how many actions completed successfully vs. failed |
|
Event History |
Lists every individual action execution with status, timestamp, and details |
Common Use Cases
Here are some popular ways merchants use Flow Action Extensions:
Slack / Teams Notifications
Send a message to a Slack channel or Microsoft Teams webhook whenever an order is placed, a high-value customer signs up, or inventory drops below a threshold. Use an HTTP POST request with a JSON body containing order or customer details.
CRM Sync (HubSpot, Pipedrive, etc.)
Automatically create or update contacts in your CRM when a customer is created or updated in Shopify. Use an HTTP POST or PUT request to push customer data to your CRM's API.
Warehouse/fulfillment webhooks
Notify your 3PL or warehouse system when an order is ready for fulfillment. Send order line items, shipping address, and special instructions via an HTTP POST request.
Custom Order Confirmation Emails
Send branded transactional emails via your own SMTP server instead of relying on Shopify's default notifications. Full HTML support means pixel-perfect emails that match your brand.
Inventory Alerts
Trigger an HTTP request to your internal system or a monitoring tool (PagerDuty, Opsgenie, etc.) when inventory reaches critical levels.
Accounting / ERP Integration
Push order data to your accounting software (Xero, QuickBooks, etc.) or ERP system via their API when orders are created or fulfilled.
Recommended screen recording: Use Case: Slack Notification on New Order (90 seconds) — Show
creating an HTTP POST request to a Slack incoming webhook URL with a JSON body that includes order number and customer
name via {{ variables.xxx }}. Add the action to a Flow triggered by "Order Created" → trigger a test
order → show the Slack message appear in a channel. This is the most relatable demo for merchants.
Getting Started
Getting started takes just a few steps:
-
Install the app from the Shopify App Store
-
Create secrets for any API keys or credentials you'll need (optional)
-
For HTTP requests: go to HTTP Requests and click "Create request" — set the URL, method, headers, and body
-
For emails: go to SMTP Configs to set up your email server, then go to Email Templates to create your template
-
Open Shopify Flow and add the "HTTP Request" or "Send Email" action to your workflow
-
Select your template, optionally provide variables as JSON, and activate your workflow
-
Test your workflow and check Event History for results
Recommended screen recording: Quick Start — Full End-to-End Setup (2-3 minutes) — Record the complete happy path from install to success: install app → create a secret → create an HTTP request template that calls a test webhook (eg, webhook.site) → add the action to a Shopify Flow → trigger it → show the SUCCESS entry in Event History with request/response data. This single video gives users confidence they can set everything up themselves.
|
Recording |
Duration |
Priority |
Placement |
|---|---|---|---|
|
Speed Intro GIF |
15-20 sec |
🔴 Must-have |
Hero section (replace placeholder GIF above) |
|
Quick Start End-to-End |
2-3 min |
🔴 Must-have |
After Getting Started steps |
|
Creating First HTTP Request |
60-90 sec |
🔴 Must-have |
After HTTP Request Action table |
|
Email End-to-End |
90-120 sec |
🔴 Must-have |
After Send Email Action table |
|
Debugging Failed Action |
60-90 sec |
🟡 Recommended |
After Event History table |
|
Secrets in Action |
45-60 sec |
🟡 Recommended |
After Secrets Management table |
|
Slack Notification Use Case |
90 sec |
🟡 Recommended |
After Common Use Cases section |
Support
You can reach out to [email protected] or join our Apps Slack Workspace here