"Hello {name}" isn't personalisation — it's the bare minimum everyone does, and customers now spot it instantly. Real personalisation makes a message look like it was written for that specific person because of something they did.
Levels of personalisation
- Name: the baseline. Necessary, not distinctive.
- Transaction context: order number, product name, amount, appointment time.
- Behaviour: "you looked at [product] last week" — this is what actually gets noticed.
- Segmentation: an entirely different offer for wholesale versus retail customers.
Where the variables come from
Any attribute on a contact can become a variable — and the custom attributes (12 types) are what unlock the higher levels. Practical examples:
- City → "our new branch in {city} just opened".
- Last purchase date → "it's been 3 months, come back with a discount".
- Customer type → a different price list.
- Birthday → a greeting with an offer.
Clean data before personalisation
Personalisation amplifies your data quality — good gets better, bad becomes embarrassing. Before using a variable in a campaign:
- Check the fill rate: a variable present on only 40% of your audience means 60% see the fallback.
- Normalise the values: "Cairo", "cairo" and "القاهرة" are three different values to the system.
- Clean the names: names in all caps or carrying titles ("Eng. Ahmed") read oddly in a friendly message.
- Verify dates: a wrong last-purchase date makes your message say something nonsensical.
The golden rule: a default for every variable
If a field is empty with no fallback, the message goes out broken: "Hello , your order number is ready". That isn't an unpersonalised message — it's a message telling the customer your system is misconfigured. Always set a sensible fallback ("valued customer").
The line: personal, not creepy
There's a difference between "you looked at this product" and "we know you opened the page four times yesterday at 11". Over-personalisation unsettles people. The rule: use information the customer expects you to have from dealing with you.
A practical test: if the customer asked "how do you know that?" and your answer would be awkward — don't use it.
Before and after
- Before: "We have new offers, check the site" → After: "Ahmed, the model you asked about is back in stock — shall I hold one for you?"
- Before: "15% off everything" → After: "As a wholesale customer, your price on this order is 1,200 instead of 1,500."
- Before: "Don't forget to renew" → After: "Your subscription ends on 20 August — renew in one tap here."
Note the difference isn't the name — it's that every "after" message carries information that means something to exactly one person.
With automation
The strongest use is combining variables with conditions: a Condition on customer type routes them down a different branch, and each branch carries a message with the right variables. And the ai_generate node can compose fully custom text from the customer's data.
Test before sending
Send the campaign to yourself and two colleagues with different attributes before launch. Most variable mistakes surface in a second this way, and none of them are fixable after sending.
Test at least one case with empty attributes too — so you see what the message looks like for a customer with missing data.
Common mistakes
- A variable with no default value.
- Using an attribute that's missing on half the audience.
- A misspelled variable name, which sends as raw text.
- Over-personalising to the point it reads as surveillance.
- Using only the name and calling it personalisation.
Frequently asked questions
Do variables work on every channel? Yes — WhatsApp, SMS and email.
What if a variable is misspelled? It sends as literal text in the message — which is why pre-send testing matters.
How much does personalisation lift response? The name alone has little effect now; context and behaviour are what actually move the number.