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

# AI personalisation at send time

> Rewrite part of a journey email for each recipient with AI, from their engagement, language, purchases and other traits, without sending their personal data to the model.

An **AI text** block is a block of copy in your template that an automation can rewrite for each recipient as the email is sent. You write a brief and a fallback; the AI writes a version that fits the recipient's traits, such as how recently they engaged, their language and country, or how often they buy.

The AI never receives a contact's personal data. It writes for a **group** of people who share the same traits, and their first name is added by the template afterwards.

<Note>
  AI personalisation works in **automations (journeys)**. Campaign broadcasts, previews and test sends always send the block's fallback copy.
</Note>

## Set it up

1. In the email builder, add an **AI text** block (palette → **Advanced** → **AI text**, or search "AI").
2. In the block's settings, fill in:
   * **Brief**: what the copy should do, for example "Welcome them back and point to the new autumn range; mention free returns". Put offers, codes and dates here or in the fallback; the AI keeps them as written and invents none.
   * **Tone** and **Maximum words**.
   * **Fallback copy**: the text sent whenever the copy is not personalised. It is also what the preview shows. Merge tags and Liquid work here.
   * Optionally, the **traits this block may use**, to narrow what the journey step allows.
3. Save the template, open the automation and select the **Send email** step that uses it.
4. Turn on **Personalise with AI**, choose the traits the AI may use, and set the **model calls per day** for the step.

The AI may greet the reader with `[FIRST_NAME]`. After generation it becomes `{{ contact.first_name }}`, which the template fills for each recipient, so the name never reaches the model. The AI cannot write any other merge tag or Liquid tag: braces in its answer are printed as text.

## What the AI sees

Only these traits, and only the ones you allow on the step:

| Trait | What is sent |
| - | - |
| Engagement tier | Active (opened or clicked in the last 30 days), warm (1–3 months), dormant (over 3 months) or never engaged |
| Language, country, time zone | The codes stored on the contact, such as `fr`, `FR`, `Europe/Paris` |
| Purchase history | A count bucket in the last year (none, 1, 2–4, 5+) and how recent the last purchase was. Never amounts |
| Lists, segments | The names of up to three of your lists or segments the contact belongs to |
| Choice fields | For a dropdown or yes/no [custom field](/guides/audience-and-campaigns/custom-fields) that is not marked sensitive: the option the contact has |
| Trigger fields | Fields of the journey's trigger data you name on the step, such as `data.cart.item_count`: numbers, yes/no, or a few words only |

**Never sent:** the contact's email address, name, phone number, postal address, company, job title, text/number/date custom fields, any field marked sensitive, a trigger field whose name refers to a person or an address (for example `customer.name` or `shipping_city`), a trigger value that repeats one of the contact's own stored values, and anything a contact typed into a form.

The prompt also contains your brief and fallback copy, as with every AI writing tool. See [AI and your data](/guides/sending-and-workspace/ai-data-privacy) for the full guarantee.

## Cost and limits

Contacts with the same traits share **one** generated text, kept for 30 days. A send to 10,000 contacts with engagement and country allowed typically needs a few dozen generations, not 10,000. Each generation uses one AI text credit from your plan.

Limits, any of which sends the fallback copy instead of a new text:

* **Model calls per day** on the step (0 = only reuse texts already written).
* Your plan's daily limit per automation and number of AI blocks per email.
* Your plan's monthly AI text credits.
* The workspace switch under **Settings → AI & data → AI personalisation at send time**.

A limit, a model error or an unusable answer never stops or fails the email: the fallback copy is sent.

## See what happened

Open the automation's **Analytics** panel. Each email step shows how many AI blocks were **generated**, **reused** from earlier recipients with the same traits, or sent as the **fallback**. Spark and connected AI assistants see the same counts through `get_journey`.

Every generation is recorded in the [AI decision log](/guides/sending-and-workspace/ai-act) like other AI features.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.