Attachments and images
Add images and file attachments to Shopify Flow emails, with size limits, Attach vs Link mode, and storage quotas.
The app handles two different kinds of file, and the distinction matters.
| Images | Attachments | |
|---|---|---|
| Used for | Logos, product photos, banners inside the email | Invoices, PDFs, downloads sent with the email |
| Stored | Public CDN | Private storage |
| Delivered as | A direct URL in the HTML | A MIME attachment, or a download link |
| Max size | 10 MB per file | 15 MB per file, 20 MB per layout |
| Types | PNG, JPG, GIF, WebP, SVG | Any |
Images live on a public CDN because that is what mail clients need to render them reliably. Attachments are kept private and always served as a download - they are never made public.
Adding images
Anywhere an image is accepted - the Image block, an Image + Text block, a header logo, or Insert image in rich-text mode - you can either pick from your media library or paste a link.
The media picker lets you search, filter by type, sort, and upload new files by dropping them in. Uploads go straight to storage rather than through the app, so large files do not stall the page.
Adding attachments
In rich text / HTML layouts, use the Attachments card at the bottom of the editor. In visual layouts, add an Attachment block.
An attachment comes from one of three sources:
| Source | What is attached |
|---|---|
| Upload | A file from your media library, the same for every email |
| From URL | A file fetched from a link when the email is sent, for example a URL your workflow passes in |
| Metafield | The file a metafield of the step's order or customer holds, for example the invoice PDF another app saved on the order. See Attach a file from an order or customer metafield |
Every uploaded attachment has a mode:
| Mode | What happens |
|---|---|
| Attach | The file is sent as a real MIME attachment, inside the email |
| Link | A download link is rendered in the email's footer under "Attachments" |
Attachments apply to every email sent from that layout, in every language, unless a language has its own. In a rich text / HTML layout, open a translation and set its Attachments card to Different attachments for this language; in a visual layout, each language's design carries its own Attachment blocks. A German invoice for German customers and an English one for everybody else is one layout. See Send emails in your customer's language.
When to use Link mode
Use Link when:
- The total attached size is over 20 MB. The app blocks the send otherwise and tells you to switch the largest files.
- You are sending through Microsoft 365, which rejects messages carrying more than 4 MB of inline attachments. The app shows a warning as soon as you cross that line.
- The recipient's provider is strict about attachment types.
Link-mode files are served through signed, tokenised URLs. If you later delete the file, anyone opening an old link gets a branded "no longer available" page rather than an error.
Storage quotas
Uploaded files count against a per-plan storage allowance:
| Plan | Attachment storage |
|---|---|
| Free | 500 MB |
| Starter | 2 GB |
| Grow | 10 GB |
| Unlimited | 50 GB |
A usage bar in the layout editor shows where you stand. When you hit the cap, uploads are refused with a message telling you to delete files or upgrade. Auto-generated template thumbnails do not count.
Custom fonts
Settings > Brand and fonts lets you upload a heading font and a body font (.woff2, .woff, .ttf, .otf) and give each a name. Once uploaded, they appear under Custom fonts in the font dropdowns of the visual builder's Branding tab, and the builder shows them on the canvas and in the preview.
When an email is sent from a layout that uses an uploaded font, the font file is embedded in the email as a font face, served from the same public CDN as your images. Which mail clients show it:
| Mail client | Uploaded font |
|---|---|
| Apple Mail (Mac), iOS Mail, Outlook for Mac, Thunderbird, Samsung Mail | Shown |
| Gmail (web, Android, iOS), Outlook for Windows, Outlook.com, Yahoo | Not shown. These clients never load web fonts from any sender and use the fallback font |
The fallback is the generic sans-serif of the recipient's device. Because a large share of recipients read in Gmail or Outlook, design the layout so it still looks right in a system font, and use an image where the brand font must be exact, for example the header logo. .woff2 is the smallest file and the format every font-capable client supports.
One file is one weight: the uploaded font is used as it is for headings and body text alike. Upload the Regular cut if the body text should be regular, and a Bold cut as the heading font if headings should be bold.
Deleting files
Open the media picker anywhere you insert an image or attachment - the logo field in Branding, or Insert image in a layout. Every file has a delete button in its corner. Confirm, and the file is removed from storage for good, which also frees up your storage allowance.
If a file is still used - as an attachment, an image block, a header logo, inside an image-with-text block, or by a shared header or footer preset - the delete is refused and the message names what is using it. Because the media picker lets you reuse one file in many places, this check is what stops clearing out one layout from quietly breaking another email that is still sending. Remove the file from the layouts or presets named, then delete it.
The same is available over the API: GET /api/v1/files?usage=true shows which files nothing references, and DELETE /api/v1/files removes one with the identical check. See REST API reference.
Related
- Build an email layout - where images and attachments are placed.
- Attach a file from an order or customer metafield - the file another app saved on the order or customer.
- Send emails in your customer's language - different attachments per language.
- Header and footer presets - presets that can hold your logo.
- Plans and usage - the plan limits in full.
