---
title: "Email attachments and images - limits and best practice"
description: "Add images and file attachments to transactional emails sent from Shopify Flow. Size limits, Attach vs Link mode, storage quotas and Microsoft 365 restrictions."
canonical: "https://crm-tool.k8s-gcp-dev.eu.codecreationlabs.cloud/h/flow-transactional-email/attachments-and-images"
---

# Attachments and images

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.

> [!TIP]
> The same uploaded file can be reused across as many layouts and blocks as you like. Upload your logo once and pick it everywhere.

## Adding attachments

In **rich text / HTML** layouts, use the **Attachments** card at the bottom of the editor. In **visual** layouts, add an **Attachment** block.

Every 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.

### 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.

> [!NOTE]
> The counter on the attachments card shows how much you have attached against the 20 MB limit, and how much is being sent as links. Keep an eye on it - large attachments are the most common cause of a message being rejected by the receiving server.

## 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** lets you upload a heading font and a body font (`.woff2`, `.woff`, `.ttf`, `.otf`). Once uploaded, they appear in the font dropdown in the visual builder's **Branding** tab. `.woff2` gives the best client compatibility.

## Deleting files safely

Before removing a file the app checks whether any layout still references it - as an attachment, an image block, a header logo, or inside an image-with-text block. Because the media picker lets you reuse one file in many places, this check is what stops a deletion in one layout from quietly breaking another.

## Related

- [Build an email layout](https://crm-tool.k8s-gcp-dev.eu.codecreationlabs.cloud/h/flow-transactional-email/build-an-email-layout.md) - where images and attachments are placed.
- [Plans and usage](https://crm-tool.k8s-gcp-dev.eu.codecreationlabs.cloud/h/flow-transactional-email/plans-and-usage.md) - the plan limits in full.
