# Flow Transactional Email > Full documentation content for Flow Transactional Email --- # App ## Getting started ### Introduction of Flow Transactional Email **URL:** https://docs.flow-action-extensions.app/introduction-of-flow-transactional-email ![Flow Action Extension](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/6f8c7a54-e3e2-44be-9997-42cd122944a0/Flow_Action_Extension.png) 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 Transactional Email 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. ***You can even send the HTTP request if you are on Basic Plan of Shopify using*** [Flow Transactional Email app](https://apps.shopify.com/flow-action-extensions) - **Email action via SMTP**: send rich HTML transactional emails through your own mail server. When you have your own SMTP and Email deisgn, then your brand identity is in your control. - **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. **Flow Transactional Email is free to install.** Start with 500 free action executions per month. No credit card required. **Install on the Shopify App Store** | 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 `{{ variables.xxx }}` and `{{ secrets.xxx }}` placeholders in URLs for dynamic endpoint construction | | **JSON Body Templates** | Build request bodies with Liquid template syntax reference secrets and Flow variables inline | In the following short video, you can see how sending a custom HTTP request using Flow Transactional Email look like in short video (video has no voice), You can also see the [Step by Step guide to send the HTTP request from Shopify Flow using Flow Transactional Email app](/make-an-http-request) ### 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 Heading, Text, Image and add the variables from the Shopify Flow data. | | **Dynamic Subject Lines** | Use `{{ variables.xxx }}` syntax in the subject field | | **Custom Variables** | Pass custom data as JSON in the Flow action input (eg, `{"customerName": "John", "orderNumber": "1234"}`) and reference it in templates | | **Display Name** | Set an optional "From" display name so emails appear from your brand, not a raw address | You can see how sending an email using Custom SMTP configuration and custom email design using Flow Transactional Email look like in short video (video has no voice), You can also see the [Step by Step guide to send an email using custom SMTP and custom design using Flow Transactional Email](/send-email-from-shopify-flow-with-custom-smtp-configuration) ### 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 `{{ secrets.keyName }}` key names are case-sensitive | | **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. ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/db0d505f-cab6-4017-ad2d-b7b7ed9e45cb/image.png) ### 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 ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/622b9e9d-f30b-41a9-8091-22534b5a023e/image.png) | ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/4a2d6549-d1f0-4ccf-81b0-7130590dcd1e/image.png) ## Common Use Cases Here are some popular ways merchants use Flow Transactional Email: 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. ## Support You can reach out to **support@codecreationlabs.com** or join our Apps Slack Workspace **here** --- ### Make an HTTP Request **URL:** https://docs.flow-action-extensions.app/make-an-http-request ## Why use Flow Transactional Email for HTTP requests Shopify Flow includes a built-in **Send HTTP request** action, but that action is only available on specific Shopify plans such as Shopify Plus, Advanced, or Grow. If your store is on the Basic Shopify plan, you can still send requests to external APIs and web servers by using **Flow Transactional Email**. In Flow Transactional Email, you create the request once in the app and then select it inside your Shopify Flow workflow by using the **HTTP Request** action. Flow Transactional Email adds outbound HTTP requests to Shopify Flow even when your Shopify plan does not include Shopify's default **Send HTTP request** action. ## What you will build In this example, you will create a workflow that runs every 10 minutes, finds products that are not already stored in Airtable, and sends them to Airtable. This setup uses these app areas and labels: - **HTTP Requests** to create the request template - **Create request** to add a new HTTP request - **Event History** to review request results - **HTTP Request** inside Shopify Flow to run the saved request This guide focuses on the HTTP request setup inside Flow Transactional Email. Your Shopify Flow workflow can use a schedule trigger and any conditions or data-matching steps you need before the request runs. ## Video Guide Here you can see the screen recording of the whole setup, creating HTTP request, secrets and flow to send the products to Airtable. **(video has no voice)** At the end of video, I was not able to fetch the products because there was space in the query. I cross checked from the existing flow. I have attached the HTTP request and the Flow that you can import and modify to use it. ## Before you start - You have installed **Flow Transactional Email**. - You have access to **Shopify Flow**. - You have an Airtable base id and table ready to receive product data. - You know your Airtable API URL and authorization token. [You can create access token with right permissions from this url](https://airtable.com/create/tokens) ## Create the secrets If you want to avoid placing credentials directly in the request, save your Airtable token first as a secret and reference it with `{{ secrets.yourKeyName }}`. **Creating the secrets will help you reuse them easily.** You can create the secret from the **Secrets** page, Create Secret button. ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/6ffec6a6-5a1c-4752-8ff6-f49dda274f01/image.png) Then save the key, value and give description to for more details and save. ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/a1b0a8e5-12e8-421f-a6ca-ad1769ada853/image.png) I have saved the personal access token and the base id in the secrects. Store API tokens as secrets instead of typing them directly into headers. Flow Transactional Email supports secret references such as {{ secrets.apiKey }} in headers, URLs, and request bodies. ## Step 1: Create the Airtable request in Flow Transactional Email I am using [the create rocords from the Airtable API](https://airtable.com/developers/web/api/create-records), you see more information following the link above. In Flow Transactional Email, open **HTTP Requests**. Click **Create request**. ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/4d68a522-337d-4d42-b0e6-569a2999dc41/image.png) Give the request a clear name such as **Create Airtable product record**. This is the name you will look for later inside Shopify Flow. Select the HTTP method that Airtable expects for creating records. In most Airtable create-record setups, this is **POST**. Enter your Airtable endpoint URL in the URL field. ``` api.airtable.com/v0/{{ secrets.airTableProductsBaseId }}/Products ``` In the following image, you can see how the Airtable endpoint URL maps with the base and you can adjust your url accordingly. ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/96507926-33cc-4440-9f3f-c46a751aa202/image.png) Add the headers required by Airtable. A common setup looks like this: ``` Authorization: Bearer {{ secrets.airtableAccessToken }} Content-Type: application/json ``` In the request body, enter the JSON payload that Airtable should receive. Map in the product values you plan to pass from Shopify Flow. ``` { "records": {{ variables.records }} } ``` the data looks like this to create the entry: ``` "records": [ { "fields": { "Title": "Classic White T-Shirt", "Handle": "classic-white-tshirt", "Product ID": 1001 } }, { "fields": { "Title": "Eco-Friendly Water Bottle", "Handle": "eco-water-bottle", "Product ID": 1002 } } ] ``` But in our case, we have used the `records` as variable and we will pass the variable as a stringified JSON array containing fields to create. We will see it next step while creating the flow. Our final request looks like this: ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/04975e10-0c83-4edb-b436-331e417d9903/image.png) Save the request. It is now available to select in the **HTTP Request** action in Shopify Flow. ## Step 2: Build the scheduled workflow in Shopify Flow Next, create the workflow in Shopify Flow that runs every 10 minutes and calls the request you just saved. Open **Shopify Flow** and create a new workflow. Choose a schedule-based trigger and set it to run day at a certain time, I am running this every 10 minutes for DEMO purpose. This gives you a recurring workflow that checks for products regularly. ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/d2b7ff3b-d8c9-40dc-a49e-25872f331e1d/image.png) Fech the products that are not yet available in Airtable. The products that are added to Airtable get the tag `added-to-airtable` in the last step of this flow. In this step we are fetch products that are not tagged with `added-to-airtable` [you can learn more about the query params from this link](https://shopify.dev/docs/api/admin-graphql/latest/queries/products#arguments-query) ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/152582f3-e31e-4cf2-a8a3-2dfba5b52093/image.png) ***You can add a condition here, if there is a product available, then send the HTTP request*** Now we will format the data to pass in the HTTP request, you can see in the step 5 of HTTP request creation, in the body we were using the variable `records` and in this step we will format the fetched product data to pass as variable to the HTTP request. Select `Run code` action from the Flow. ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/b38ef375-2a10-41a3-aea0-a40f8e91e455/image.png) Then configure the step like this: ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/99ac4448-fc83-4cac-be9b-13a7f152b8fa/image.png) ``` query { getProductData { id handle title } } ``` ``` export default function main(input) { const records = input.getProductData.map((data) => { const numericId = parseInt(data.id.replace("gid://shopify/Product/", "")); return { fields: { "Product ID": numericId, "Title": data.title, "Handle": data.handle } }; }); return { records: JSON.stringify(records) }; } ``` ``` "The output of Run Code" type Output { "The message returned by the script" records: String } ``` This gives you code that you can preview in right side ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/fb24ef51-c615-45a6-8efc-168ab8bf7628/image.png) Add the **HTTP Request** action provided by Flow Transactional Email. When prompted to choose a request, select the request you created earlier, such as **Create Airtable product record**. ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/de20a8fc-948e-4986-ac00-25e9bd946331/image.png) Then select the request, hit save and go back to flow. ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/0c2036e9-226d-4598-87c1-6885dc553f01/image.png) In the HTTP Request Variables input, we will pass the records that we formatted in the previous step. ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/4ae68b71-fef3-4279-8f38-1722839e291f/image.png) ``` { "records": "{{runCode.records}}" } ``` These records will be pushed to the HTTP request body. Now Iterate through all the products that were fetched in the earlier step and tag them `added-to-airtable` so that these products are not fetched next time the flow runs. ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/04b5e471-5b32-415c-abee-218ba73d90d3/image.png) Save and activate the workflow. In **Event History**, you can confirm whether the request succeeded and inspect the response returned by Airtable. ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/a731a75e-8f5f-4e97-ae77-0f8eeb30380a/image.png) If you open the request, you can see the request data, response data and other metadata for the HTTP request. ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/fb98e2b0-ad02-47cc-90ed-17edac8ba8d3/image.png) ## Best practices - Use clear request names so they are easy to find in Shopify Flow. - Store API tokens as secrets whenever possible. - Keep your request body focused on the fields Airtable actually needs. - Use **Event History** after setup changes so you can confirm the request still succeeds. --- ## SMTP Email provider ### Send Email from Shopify Flow with Custom SMTP Configuration **URL:** https://docs.flow-action-extensions.app/send-email-from-shopify-flow-with-custom-smtp-configuration ## Overview Flow Action Extensions lets you send transactional emails from Shopify Flow through your own SMTP server. In this example, a customer receives a `VIP` tag, Shopify Flow runs, and the workflow sends a branded email using your saved SMTP configuration and email template. This setup has three parts: - Create an SMTP connection in **SMTP Configs** - Design the email in **Email Templates** - Use the app’s email action in **Shopify Flow** and pass customer data into the template Flow Action Extensions supports email sending through your own mail server, including Gmail, SendGrid, Mailgun, Amazon SES, and other custom SMTP providers. ## **Video Guide** Here you can see the screen recording of the whole setup, setting SMTP configuration, creating Email template design and use the email template in Shopify Flow. **(video has no voice)**. I have attached the Email template and the Flow that you can import and modify to use it. ## Before you begin - Install **Flow Action Extensions** in your Shopify store - Make sure your SMTP provider gives you the server host, port, username, and password - Confirm the sender email address you want to use for VIP emails ## Scenario: send a VIP welcome email In this scenario, your workflow does the following: 1. A customer is tagged with `VIP` 2. Shopify Flow starts the workflow 3. The workflow runs the app’s **Send Transactional Email** action 4. The action uses your saved SMTP configuration 5. The action sends your saved email template with dynamic customer details ## Step 1: Configure your SMTP server In Flow Action Extensions, go to **SMTP Configs**. This is where you store the mail server that will send your transactional emails. ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/5694bdd7-d99f-4983-8f4c-606c82fea794/image.png) Enter the SMTP host, port, username, and password from your email provider. Then press **Test Connection** button. ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/c8c324f7-3fa7-45ab-baca-761c45227ba4/image.png) If the connection is good, you will see the success message like this ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/35c0046d-73d6-40e4-a67b-104b2091287d/image.png) Choose the email address the message should come from. If needed, also set a branded display name so recipients see your store name instead of only a raw email address. ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/6e5152cc-066a-44d1-80f4-4771c7e5f936/image.png) Save the SMTP configuration so it can be selected later by your email template and Shopify Flow action. ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/88bd6a69-b747-4087-bbce-a0b8bed81729/image.png) If you send different kinds of emails, create separate SMTP configurations for each brand or sending domain. This makes it easier to keep VIP, support, and operations emails separate. ## Step 2: Design the email in Email Templates Go to **Email Templates** in the app. This is where you create the email content that Shopify Flow will send. ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/e1c0ec6c-bdd9-492f-9e9b-4ac480df7434/image.png) Create a template for your VIP scenario. Add a subject line and the message body. In the subject, you can use the variables that will be passed form the Shopify flow. I have used firstName variable and by default used "Customer" using the [default liquid filter](https://shopify.dev/docs/api/liquid/filters/default). my Subject looks like this: `Hi {{ variables.firstName | default: "Customer" }} Welcome to VIP Club` You can select sections to create the email design that fits to your brand identity. ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/45901700-8792-4d44-ac65-5f202bacb752/image.png) I have used Heading Section, Image Section and Text section to design this template. In the text section you can see, I have used the variable firstName, this variable will be passed from teh Shopify flow. ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/58e13c05-8034-4930-bbb0-3747086bd05c/image.png) In the **Test Variables section,** you can pass the variables to test the data and design. ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/de1df7a0-9f74-4aad-ad01-1dbe082b121f/image.png) Save the template so it can be selected inside the Shopify Flow action. ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/a7003a32-2115-4631-8eb5-bc1b64bcf2bf/image.png) ## Step 3: Build the workflow in Shopify Flow Open **Shopify Flow** and create a workflow for your VIP customer process. Use the customer tagging event that fits your process. The goal is to run the workflow when a customer gets the `VIP` tag. ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/c9eee716-8ca6-44c6-b56d-009973547ad8/image.png) Now press **Rocord events** button and in the new tab add the tag to the customer and you will see the trigger data after selecting the trigger in left side. ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/1baac2cc-e2ef-4ba1-b786-95885cb33f70/image.png) Add the app action labeled **Send Transactional Email** in Shopify Flow. This is the Flow Action Extensions email-sending action that connects your workflow to the template and SMTP setup you created in the app. In to Email, use the customer email. And then press configure email. ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/8803b024-0139-408a-8161-80bdb07e7905/image.png) In the action settings, choose the email template you created in **Email Templates** and the SMTP Configuration for this email. Then hit save and go back to the flow. ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/9db8916e-a0a3-4c9e-b1f3-56fed0cd022c/image.png) Pass the customer data your template needs. A simple example looks like this: ``` { "firstName": "{{ customer.firstName }}" } ``` ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/d5ea3a57-31e0-4e44-ba1b-08105e922c14/image.png) Turn on the workflow after you confirm the trigger, condition, template, and variables are all correct. ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/ee568b36-41db-437b-a3e2-28dc81f88a74/image.png) ## How the pieces work together When the customer gets the `VIP` tag, Shopify Flow runs the workflow and calls the app’s email action. That action uses: - Your saved server settings from **SMTP Configs** - Your saved design from **Email Templates** - The customer values passed in from the Flow step as JSON variables This approach keeps the email design reusable and makes it easy to send the same template for different customers without editing the HTML every time. ## Test the VIP email flow Before using this in a live store, run a full test: 1. Apply the `VIP` tag to a test customer 2. Confirm the workflow runs in Shopify Flow 3. Check that the customer receives the email 4. Verify the subject line and HTML content display correctly 5. Make sure the sender name and sender email match your brand If the message does not arrive, open **Event History** in Flow Action Extensions to review the execution result. The email looks like this for me, with the SMTP configuration and the email design that we used in this flow: ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/2c0787e0-03e0-46b4-b3a9-2619b7239037/image.png) ## See the app’s core features, including HTTP requests, SMTP email sending, secrets, and Event History. Learn how to connect Shopify Flow to external APIs and services with the app’s HTTP Request action. --- ## OAuth Email provider ### Use Google to send transactional emails in Shopify Flow **URL:** https://docs.flow-action-extensions.app/use-google-to-send-transactional-emails-in-shopify-flow ## Overview You can use **Flow Transactional Email** to send messages through a connected Google account instead of an SMTP server. In this workflow, you will: - connect Google from **Email senders** - send a **test email** to confirm the connection works - create a Shopify Flow that uses the **Send Transactional Email** action - send an email when a customer gets the `vip` tag This guide uses the real app screens and labels shown in Flow Transactional Email, including **Email senders**, **Manage connections**, **Send test email**, and the Shopify Flow action **Send Transactional Email**. ## Before you start - Make sure you have installed **Flow Transactional Email** in Shopify. - Create the email template you want to send before building the Flow. - Have access to the Google account you want to use as the sender. If you want a refresher on how email templates work, see [Introduction of Flow Transactional Email](/getting-started/introduction-of-flow-transactional-email). ## Video Guide ## Connect your Google account In Shopify admin, open **Apps** and select **Flow Transactional Email**. In the app navigation, click **Email senders**. On the **Email senders** page, click **Manage connections** in the **Connected accounts** section. ![Email senders page with the Manage connections button in Flow Transactional Email](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/docs-pages/bad5dd95-1582-4815-be0a-fa1f0a9209ee/go_to_email_senders_and_manage_connections.png) On the **Connected accounts** page, find the **Google** card under **Add a connection** and click **Connect**. ![Google connection card with the Connect button on the Connected accounts page](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/docs-pages/7b36323d-6c0f-43dc-b56f-b8cf237fd459/then_connect_the_google.png) A Google sign-in window opens. Sign in to the Google account you want to use, review the permissions, then approve access to finish the connection. ![Google sign-in window asking the user to continue and grant access](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/docs-pages/14600d43-d786-49dc-84ca-9ec07306cd79/after_clicking_connect__you_will_see_the_google_window__grant_access_and_connect_with_google.png) After you return to the app, the Google connection appears in **Connected accounts** with a **Connected** badge. You can also see available senders listed under that account. ![Connected Google account shown with a Connected status in Flow Transactional Email](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/docs-pages/7841463b-fcec-487b-87c6-445f93c8b0d8/now_you_can_see_that_the_google_is_connected_with_the_app.png) The connected Google account can be used as the sender in the app's email actions. The app also shows sender details under the connected account after setup. ## Send a test email Before adding the sender to Shopify Flow, send a test message from the app to confirm delivery. Go back to **Email senders** and click **Send test email**. ![Email senders page showing the Send test email button](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/docs-pages/023be5d7-abb4-4164-90a9-3a400e411c28/from_the_email_senders_page__you_can_send_the_test_email_as_well.png) In the **Send test email** dialog, select your connected Google sender in the **Sender** dropdown. Enter the destination address in **Recipient email**, then click **Send**. ![Send test email dialog with a Google sender selected and a recipient email entered](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/docs-pages/c48d1b13-992d-41ae-ab84-6314f0cf97d9/select_google_as_sender_and_write_the_recipient_email_and_you_can_see_the_email_sent_through_the_connected_google_account_in_recipients_account.png) Check the recipient inbox. The message should arrive from the connected Google account. If the test email arrives successfully, you can use the same connected sender in Shopify Flow with confidence. ## Create the Shopify Flow Now set up a workflow that sends email when a customer receives the `vip` tag. Open **Shopify Flow** and create a new workflow. Select the trigger **Customer Tags Added**. This trigger starts when one or more tags are added to a customer. ![Shopify Flow workflow using the Customer Tags Added trigger and the Send Transactional Email action](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/docs-pages/fd9c5be7-df86-4ee5-9316-c4628a633e59/now_we_will_see__how_we_can_send_email_through_the_connected_google_acount_from_shopify_flow.png) Add a condition so the workflow continues only when the added tags include `vip`. For example, the condition can check that **Added tags is at least one of vip**. On the **True** branch, add the action **Send Transactional Email**. In **To Email(s)**, use the customer email variable so the message goes to the tagged customer. ``` {{customer.defaultEmailAddress.emailAddress}} ``` The action panel in Shopify Flow describes this action as sending a transactional email via SMTP, Microsoft 365, or Google using a pre-configured sender and email template. Open the action configuration and choose your connected Google account in **Send from**. Then choose the template you want in **Template**. Click **Save**, then **Exit** to return to the workflow. ![Send Transactional Email configuration with a connected Google sender and template selected](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/docs-pages/8704066d-8887-4587-ba58-6ca4f9f6be3c/selected_the_connected_google_account__select_template__save_and_exit.png) Save the Shopify Flow, then turn it on. ## Test the automation 1. Add the `vip` tag to a customer in Shopify. 2. Wait for the workflow to run. 3. Check the customer's inbox. If everything is configured correctly, the customer receives the email through your connected Google account. In your example setup, the workflow uses the **Customer Tags Added** trigger, checks for the `vip` tag, and then runs **Send Transactional Email** with the connected Google sender. ## What to check if email is not sent Go back to **Email senders** and confirm the account shows as **Connected** under **Connected accounts**. Make sure the **To Email(s)** field uses the customer email variable from Shopify Flow, not a hard-coded address, unless you are testing. Confirm the workflow is turned on and that the customer actually received the `vip` tag. Also verify your condition matches the tag exactly. Use **Send test email** from the **Email senders** page before testing the full automation. ## Related guides Learn the core features of Flow Transactional Email and how the app works with Shopify Flow. See the Google email sender workflow in the OAuth Email provider section. --- ### Automate Transactional Emails in Shopify Flow with Microsoft 365 **URL:** https://docs.flow-action-extensions.app/automate-transactional-emails-in-shopify-flow-with-microsoft-365 ## Overview Flow Transactional Email lets you send emails through a connected Microsoft 365 account instead of an SMTP server. In this workflow, you will connect Microsoft 365 from **Email senders**, send a test email to confirm the connection, and then use that sender inside a Shopify Flow. You will configure this in two places: **Flow Transactional Email** for the sender connection, and **Shopify Flow** for the automation. ## Before you start - You need access to the **Flow Transactional Email** app in Shopify. - You need a Microsoft 365 or Outlook mailbox you can authorize. - You should already have an email template available in the app, because the **Send Transactional Email** action uses a saved template. ## Video Guide ## Connect your Microsoft 365 account In the Shopify admin, open **Apps** > **Flow Transactional Email**, then click **Email Senders**. On the **Email senders** page, click **Manage connections** in the **Connected accounts** section. ![Email senders page with the Manage connections button in Flow Transactional Email](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/docs-pages/df3382dc-cd8a-4293-8712-f113bee24ded/1__go_to_email_senders_and_manage_connections.png) On the **Connected accounts** page, find **Microsoft 365** and click **Connect**. ![Connected accounts page showing the Microsoft 365 Connect button](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/docs-pages/cd82aa32-427b-4036-ad64-280b05ff4643/2__now_select_microsft_365_as_connection.png) A Microsoft authorization window opens. Sign in to the Microsoft account you want to use and grant access to complete the connection. On the Microsoft consent screen, the app may appear as **Flow Action Extensions**. This is expected. ![Microsoft authorization window requesting permission for Flow Transactional Email](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/docs-pages/df398931-e84f-4656-a7d6-d54b3df077d3/3__a_new_window_will_open__where_you_will_login_your_microsoft_account_and_grant_access_for_Flow_Transectional_email_app.png) After authorization, you return to **Connected accounts**. The Microsoft 365 connection shows a **Connected** status, and the sender appears under **Senders**. ![Microsoft 365 connected successfully on the Connected accounts page](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/docs-pages/8efdcfe9-a82b-4ebb-be2b-3c46e7815aa3/4__you_can_see_the_microsoft_is_connected_successfully_and_press_reconnect_to_regrant_the_access.png) ## Send a test email from Email senders Before you use the connection in a Flow, send a test message to make sure the mailbox is working correctly. Go back to **Email senders** and click **Send test email**. ![Email senders page with the Send test email button](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/docs-pages/8a603515-06f0-43dc-9bb5-4617b902a509/from_the_email_senders_page__you_can_send_the_test_email_as_well.png) In the dialog, select your connected **Microsoft 365** sender in the **Sender** field, then enter the destination address in **Recipient email**. ![Send test email dialog with Microsoft 365 selected as the sender and a recipient email entered](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/docs-pages/aba493be-42d4-423a-b7e1-bd95b6357235/select_microsoft_as_sender_and_write_the_recipient_email_and_you_can_see_the_email_sent_through_the_connected_microsoft_account_in_recipients_account.png) Click **Send**, then check the recipient inbox. If the message arrives, the Microsoft 365 connection is ready to use in Shopify Flow. Using **Send test email** first is the fastest way to confirm that the mailbox, permissions, and sender configuration are all working before you build a Flow. ## Send emails through Microsoft 365 in Shopify Flow Once the account is connected, you can use it in the **Send Transactional Email** action inside Shopify Flow. In Shopify Flow, create a new workflow and choose the trigger **Customer Tags Added**. If you only want to send the email for specific tags, add a condition such as **Added tags is at least one of vip**. ![Shopify Flow with Customer Tags Added trigger, a condition, and the Send Transactional Email action](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/docs-pages/d9120721-4020-439a-ae4e-66c17eaf2290/5__now_we_will_see__how_we_can_send_email_through_the_connected_microsoft_acount_from_shopify_flow.png) Add the **Send Transactional Email** action to the workflow. In the action configuration, set **To Email(s)** to the customer email variable so the message is sent to the customer who triggered the workflow. ![Send Transactional Email action in Shopify Flow with the customer email in the To Email field](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/docs-pages/4f9093d3-fcb3-4ac3-8c17-36bf4d1be4fb/6__then_configure_the_email__in_send_transactional_email_action.png) Scroll to the template section in the action and click **Open Config**. This opens the email configuration screen where you choose the sender and template used by the action. In **Email action**, select your connected Microsoft 365 account in **Send from**. Then choose the template you want in the **Template** dropdown, click **Save**, and then click **Exit**. ![Email action screen with a Microsoft 365 sender selected and a template chosen](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/docs-pages/51fbe4cb-ead8-4512-9b14-749c4f0b4378/7__selected_the_connected_microsoft_account__select_template__save_and_exit.png) Save the workflow and turn it on in Shopify Flow. Add the chosen tag to a customer, such as **VIP**. When the workflow runs, the customer receives the email through your connected Microsoft 365 account. ## What this workflow does With this setup, Shopify Flow watches for customer tag changes, then passes the customer data into **Send Transactional Email**. That action uses your selected template and sends the email through the connected Microsoft 365 sender you chose in **Send from**. If you are using a tag-based workflow, make sure the tag value in your condition exactly matches the tag you add to the customer. ## Configure the email template The content of the outgoing message comes from the template selected in the **Template** field inside the email action configuration. For full guidance on configuring the email content, variables, and template behavior, see [Introduction of Flow Transactional Email](/getting-started/introduction-of-flow-transactional-email). ## Troubleshooting Return to the **Send Transactional Email** action, click **Open Config**, and confirm the sender appears in the **Send from** dropdown. If needed, refresh the Flow editor and reopen the action. First, send another message from **Email senders** using **Send test email**. Confirm that the correct **Sender** and **Recipient email** were selected. If the Microsoft account was connected earlier and needs new permissions, reconnect the account from **Connected accounts**. Check that the workflow is turned on, the trigger is **Customer Tags Added**, and the condition matches the tag you actually applied to the customer. --- ## Changelog ### Update 31.05.2026 **URL:** https://docs.flow-action-extensions.app/update-31-05-2026 ## Google and Microsoft as Provider Send emails on behalf your Google or Microsoft (Office) 365 Account. You can find it in Email senders - Conected accounts ![image](https://cdn.heymantle.com/orgs/0a479d6e-2fd2-449e-9ce4-b0ec42f6acb0/assets/83bcb324-3bbc-4da3-933f-07f65ff68371/image.png) ## New attachment system You can use attachments now in plaintext / html email layouts too. (Limit of 20MB accross all files. Everything above will be included as link into the emails footer) ---