> ## Documentation Index
> Fetch the complete documentation index at: https://jetemail.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Personalisation & Merge Fields

> Insert contact data, custom properties, and unsubscribe links into templates.

Merge fields are tokens JetEmail replaces for each recipient at send time. They can appear in visual-builder content or raw HTML.

## Built-in fields

The template editor always provides:

| Field           | Token                  |
| --------------- | ---------------------- |
| First name      | `{{firstName}}`        |
| Last name       | `{{lastName}}`         |
| Email           | `{{email}}`            |
| Full name       | `{{fullName}}`         |
| Unsubscribe URL | `{{unsubscribe_link}}` |

The first four come from the contact. The unsubscribe URL is generated by JetEmail for the specific recipient and message.

## Insert a field

### In Design

1. Place the cursor in an editable text, heading, or supported content block
2. Click **Insert field**
3. Select the field

### In HTML

1. Put the cursor where the value belongs
2. Click **Insert field**
3. Select the field

You can also type the token exactly:

```html theme={null}
<p>Hi {{firstName}},</p>
```

## Create a custom field

From the Insert field menu:

1. Click **Add custom field**
2. Enter a human-readable label, such as `Company name`
3. Review the generated token
4. Click **Add & insert**

JetEmail converts the label to a token-safe camel-case key:

```text theme={null}
Company name → {{companyName}}
Renewal date → {{renewalDate}}
```

You can remove a custom field from the same menu. Before removal, check templates that may still contain its token.

## Add values to contacts

Custom-field definitions make a token available in the editor; each contact still needs a value.

### Edit one contact

1. Open **Marketing** → **Contacts**
2. Open the contact
3. Under **Custom properties**, click **Add**
4. Enter the key and value
5. Save changes

Use the exact token key without braces—for `{{companyName}}`, the property key is `companyName`.

### Import values

Unknown CSV columns become custom properties:

```csv theme={null}
email,first_name,companyName,renewalDate
jane@example.com,Jane,Acme,31 August 2026
```

Keep key spelling and capitalisation consistent across manual edits, imports, and templates.

## Use merge data in transactional requests

The Marketing transactional endpoint does not look up an audience contact. Your application supplies the replacement values for that individual send, and their keys must match the tokens used by the template.

See [Marketing transactional email](/docs/marketing/transactional) for sending behaviour and the [API reference](/docs/api-reference/introduction) for the current request schema and code examples.

## Add an unsubscribe link

For marketing content, use either:

* A **Footer** block with **Show unsubscribe link** enabled
* An HTML link whose `href` is `{{unsubscribe_link}}`

```html theme={null}
<a href="{{unsubscribe_link}}">Unsubscribe</a>
```

The footer block also adds the unsubscribe URL to the generated plain-text alternative.

<Warning>
  Do not paste a shared or hard-coded unsubscribe URL. JetEmail must generate the link per recipient so the correct contact is opted out.
</Warning>

## Write resilient personalisation

* Personalise only when it improves the message
* Populate required fields before sending
* Avoid placing an optional value where its absence would break a sentence
* Use one canonical key for each concept
* Test with records that contain short, long, and non-ASCII values
* Check both HTML and plain text

Test sends confirm layout and routing, but you should also validate real merge data before a large broadcast or activated workflow.
