Email layoutsAttachments and images

Attachments and images

Copy page

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.

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.