Can Shopify Flow email a CSV file attachment?

Updated 2026-10-21. Checked against Shopify's own documentation; links are under Sources.

No. Flow's Send internal email action has three fields: email address, subject and message. None of them is an attachment. What you can do is fetch orders with Get order data and write them into the message as comma-separated lines, which you then paste into a spreadsheet.

What the email action can do

So Flow is good for "tell me when X happens" and short summaries. It's not built for sending files to people outside the business.

The workaround: CSV-style rows in the email body

  1. In the Shopify Flow app, create a workflow with the Scheduled time trigger. It can repeat every few days, weeks or months, and "the smallest possible interval is 10 minutes."
  2. Add the Get order data action with a query for the period you want, such as orders created in the last day or week. Shopify notes: "You can return up to 100 at a time."
  3. Add Send internal email. Put a header line in the message, then loop over the orders with Liquid.

Here's a sketch of the message. It shows the shape, but the exact variable names come from Flow's variable picker in your workflow, so insert them from there rather than copying these:

order,created_at,total
{% for order in getOrderData %}{{ order.name }},{{ order.createdAt }},{{ order.totalPriceSet.shopMoney.amount }}
{% endfor %}

When the email arrives, copy the lines into a plain-text file saved as .csv, or paste them into a spreadsheet and use its text-to-columns option to split on commas.

Choosing the period

Write the query in Get order data so that it matches the schedule. A daily workflow should fetch the previous day's orders, and a weekly one the previous seven days. If the period and the schedule don't match, orders get missed or show up in two emails. If the trigger runs early in the morning, orders that come in later that day go into the next email. Write the period into the subject line (for example, "Orders, week ending Sunday") so the recipient knows which days the email covers.

Where the workaround runs out

Other ways to get an actual file

Test before you rely on it

  1. Run the workflow once with a short period and compare the lines with Orders filtered to the same dates.
  2. Paste the lines into a spreadsheet and check that every row has the same number of columns.
  3. Check the time zone on the dates against your store's settings.

Sources