---
title: "Email subject line and inbox preview text (preheader)"
description: "Set the subject and the preview text your recipients see in their inbox before opening the email, including dynamic values from Shopify Flow."
canonical: "https://crm-tool.k8s-gcp-dev.eu.codecreationlabs.cloud/h/flow-transactional-email/subject-line-and-preview-text"
---

# Subject line and preview text

Before anyone opens your email, they see three things in their inbox: **who it is from**, the **subject**, and the **preview text**. Two of those are set on the layout.

```
Acme Store
Your order #1024 has shipped
Track your parcel - arriving Thursday, no signature needed
```

The third line is the preview text. Most merchants leave it empty, and the email client then grabs whatever text happens to come first in the email - often "View in browser", an image's alt text, or an unsubscribe line.

## Subject

Set on every layout, required. Supports `{{ variables.xxx }}` and `{{ secrets.xxx }}`, so you can include the order number or the customer's name:

```
Your order {{ variables.orderName }} has shipped
```

Give optional values a fallback so a blank never reaches a customer:

```
Hi {{ variables.firstName | default: "there" }}, your order is on its way
```

Keep it under roughly 50 characters if you can - mobile clients truncate beyond that.

## Preview text

The **Preview text** field sits directly under the subject in both the visual builder's **General** tab and the rich text / HTML editor.

It supports exactly the same Liquid as the subject, so it can carry dynamic detail:

```
Arriving Thursday - track parcel {{ variables.trackingNumber }}
```

Aim for **40-100 characters**. Clients differ on how much they show; the field caps at 200.

### Where it appears

The preview text is added to the email as a hidden block at the very top of the body. Recipients see it in the inbox list, but it is invisible when they open the message - so it never appears twice or interferes with your design.

Behind that hidden block the app adds invisible padding characters. Without them, clients pull the first real text of your email in after your preview line, and merchants end up with inbox entries reading *"Track your parcel View in browser Unsubscribe"*.

> [!NOTE]
> A handful of clients ignore preview text entirely and always show the first body text. There is nothing any app can do about that - it is a client decision, not a sending one.

### Writing a good one

The subject and the preview text are read together, so do not repeat yourself.

| | Subject | Preview text |
| --- | --- | --- |
| **Weak** | Your order has shipped | Your order has shipped |
| **Better** | Your order  has shipped | Arriving Thursday - no signature needed |

Add the detail that makes someone open it: the delivery date, the amount, what to do next.

## Preview text is not the Description

This one catches people out, so it is worth being explicit.

| Field | Who sees it | What it is for |
| --- | --- | --- |
| **Subject** | The recipient | The email's subject line |
| **Preview text** | The recipient | The inbox line after the subject |
| **Description** | Only you, in this app | An internal note to tell layouts apart in your list |

**Description never leaves the app.** If you have been writing customer-facing copy there, move it to Preview text.

## Checking it

The on-page preview does not show inbox text, because that is the mail client's rendering rather than the email's. To check it:

1. Use **Send test email** from the layout.
2. Look at your inbox **list view** - do not open the message.
3. Confirm the line after the subject reads the way you intended.

On a phone, check both the notification and the list, since they truncate differently.

If your preview text contains a variable, remember that a test send uses your **Test Variables**, not Flow's. See [Passing data from Shopify Flow](https://crm-tool.k8s-gcp-dev.eu.codecreationlabs.cloud/h/flow-transactional-email/passing-data-from-shopify-flow.md).

## Related

- [Build an email layout](https://crm-tool.k8s-gcp-dev.eu.codecreationlabs.cloud/h/flow-transactional-email/build-an-email-layout.md) - the rest of the layout.
- [Passing data from Shopify Flow](https://crm-tool.k8s-gcp-dev.eu.codecreationlabs.cloud/h/flow-transactional-email/passing-data-from-shopify-flow.md) - supplying dynamic values.
- [Email deliverability](https://crm-tool.k8s-gcp-dev.eu.codecreationlabs.cloud/h/flow-transactional-email/email-deliverability.md) - making sure it reaches the inbox at all.
