The subject line is the single most impactful factor in whether your email gets opened. Personalising it with recipient-specific data — their name, their account status, their order number, or their location — makes the email feel directly relevant rather than a mass broadcast. This article covers techniques, examples, length guidelines, and how to test dynamic subject lines effectively.
Why Personalised Subject Lines Work
- Emails with personalised subject lines achieve on average 26% higher open rates than non-personalised equivalents.
- Personalisation makes the email stand out in a crowded inbox — a recipient's own name or their order number immediately signals relevance.
- For transactional emails, including the specific reference number (order ID, ticket number) tells the recipient exactly what the email is about before they open it, reducing support queries.
Dynamic Subject Line Syntax
The same {{variable_name}} merge tag syntax used in the email body also works in the subject line field of your template:
// Template subject field:
"{{first_name}}, your order #{{order_id}} has been confirmed ✓"
// Variable provided at send time:
{
"first_name": "Rahul",
"order_id": "ORD-98765"
}
// Delivered subject line:
"Rahul, your order #ORD-98765 has been confirmed ✓"
Subject Line Templates by Email Type
| Email Type | Dynamic Subject Line Examples |
|---|---|
| Order confirmation | {{first_name}}, your order #{{order_id}} is confirmed ✓ Order confirmed — #{{order_id}} ({{currency}}{{order_total}}) |
| Shipping notification | Your order #{{order_id}} has shipped! Expected: {{delivery_date}} 📦 {{first_name}}, your package is on its way |
| Password reset | Reset your {{app_name}} password {{first_name}}, here's your {{app_name}} password reset link |
| Trial expiry | {{first_name}}, your {{plan_name}} trial expires in {{days_remaining}} days Last chance: Your free trial ends {{trial_end_date}} |
| Newsletter | {{first_name}}, your {{month}} digest is here This week in {{topic_category}}: {{article_1_title}} |
| Promotional campaign | {{first_name}}, you have an exclusive {{discount_percent}}% off Special offer for {{city}} customers — ends tonight |
| Re-engagement | We miss you, {{first_name}} — here's what you've missed {{first_name}}, {{days_inactive}} days since your last visit |
| Support ticket | [Ticket #{{ticket_id}}] {{ticket_subject}} Update on your support request — Ticket #{{ticket_id}} |
Subject Line Length Guidelines
| Length | Display Behaviour | Recommendation |
|---|---|---|
| Under 30 characters | Always fully visible on all devices | Too short for most use cases — may lack context |
| 30–50 characters | Fully visible on most desktop and mobile clients | Optimal range — aim for this |
| 51–70 characters | Fully visible on desktop; may truncate on mobile | Acceptable — put the key information in the first 50 characters |
| Over 70 characters | Truncated on most mobile clients; partially hidden on desktop | Avoid — especially for personalised subjects which add variable-length content |
{{first_name}} could be "Konstantinos" (12 characters) rather than "Raj" (3 characters), the subject line could be 9 characters longer than expected. Always test with your longest likely variable values.
Subject Line Personalisation Strategy — What Works Best
| Technique | Open Rate Impact | Example |
|---|---|---|
| First name personalisation | +20–30% vs no personalisation | Rahul, your order is confirmed |
| Reference number | High for transactional — confirms relevance | Your invoice #INV-1042 is ready |
| Time-based urgency | +15–25% open rate | 3 days left on your free trial, Priya |
| Location personalisation | +10–20% for hyper-local offers | Special offer for Jaipur customers this weekend |
| Behaviour-based content | Highly relevant — strong engagement signal | You left 3 items in your cart, Rahul |
A/B Testing Dynamic Subject Lines
Use the bulk send API with campaign tags to run subject line A/B tests on personalised subjects:
// Variant A — first name only
"subject": "{{first_name}}, your exclusive offer is here"
// Variant B — first name + urgency number
"subject": "{{first_name}}, only 48 hours left on your exclusive offer"
// Send to equal halves of your list with different campaign tags
// Compare open rates after 24 hours to find the winner