Features Personalization Engine

Your contacts can tell when a message was written for a list. Not for them.

Messages that feel written, not generated. Dynamic personalization uses real contact data to build every SMS around the person receiving it — their intent, location, behavior, history, and timing.

Every message is unique. That’s why it gets answered.

⚡ Template — one message, built once
Hi {{first_name}} — your {{service}} special in {{city}} ends Friday. Reply YES to lock in your spot.
rendered per contact at send · 4 data layers
Identity · Service · Location
Hi Marcus — your HVAC special in Baltimore ends Friday. Reply YES to lock in your spot.
✓ Unique · Delivered
Identity · Service · Location
Hi Sarah — your Roofing special in Phoenix ends Friday. Reply YES to lock in your spot.
✓ Unique · Delivered
Identity · Service · Location · Language
Hola Miguel — tu oferta de Techado en Annapolis termina el viernes. Responde SÍ para apartar tu lugar.
✓ Unique · En Español
IdentityName, relationship historythe foundation of relevance
LocationCity, market, ziplocal presence at scale
ServiceWhat they asked aboutwhat they drive, what they bought
BehaviorLast interaction, timing signalsengagement history
What personalization actually means
Personalization isn’t optional.It’s the difference between ignored and answered.

Generic messaging gets ignored because it signals mass broadcast. Personalized messaging gets responses because it signals individual attention. The Dynamic Personalization Engine uses four data layers — identity, location, service, and behavior — to build messages that reference the contact’s actual situation. The same template. Thousands of unique outputs. Every one more relevant than a generic alternative.

👤
Identity Layer

First name, last name, relationship history. The contact’s name at the start of a message changes the read rate before a single word of the offer is processed. Identity data is the baseline — but it’s the other layers that make the difference between reply rates.

📍
Location Layer

City, market, zip code, service area. One template with a location field serves every market — Baltimore gets ‘Baltimore,’ Phoenix gets ‘Phoenix,’ DC gets ‘DC.’ Combined with a local area code sender, the message reads entirely local to the recipient.

🏷️
Service & Behavior Layer

The specific service, vehicle, product, inquiry type, last purchase, or last interaction from the contact record. This layer makes a re-engagement message feel like a personal follow-up from someone who remembered — because the data says exactly what to reference.

See how four data layers produce one personal message.
We’ll walk through how your contact data maps to the personalization engine for your specific use case.
How the personalization engine works
Four data layers.One uniquely relevant message.
01
Identity layer — the contact’s name sets the tone

‘Hi Sarah’ performs differently than ‘Hi there.’ The identity layer inserts first name, last name, or full name from the contact record at send. This is the most basic personalization, but it’s also the most immediate signal to the recipient: this message was sent to me, not to everyone.

first name · last name · identity keyword · personal address
02
Location layer — local relevance before the message is read

‘Your AC special in Baltimore’ resonates with a Baltimore contact in a way that ‘Your AC special’ does not. The location layer inserts city, region, zip, or service area — and combined with a local area code sender, creates a message that reads entirely local. One template, local relevance in every market.

city · region · zip code · service area · local area code pairing
03
Service layer — references their actual inquiry, not a generic offer

‘Your 2019 Ford F-150 is due for service’ is a different message than ‘Schedule your next service.’ The service layer inserts the specific vehicle, service type, product, or inquiry from the contact’s record. This is the layer that makes re-engagement messages feel like personal follow-up — because they reference what the contact actually asked about.

service type · vehicle · product · inquiry · specific reference
04
Behavior and timing layer — what they did and when

Last service date, last interaction, rep name, last offer received — timing and behavior fields make a message feel like the natural next step in an ongoing relationship, not a cold outreach. ‘It’s been 8 months since your last visit’ is more compelling than ‘We miss you.’ This layer is the difference between a re-engagement campaign and a re-engagement system.

last interaction · timing fields · rep name · behavior history · custom fields
05
Message rendered uniquely at send — no two identical

At send time, TextingOnly renders each contact’s message individually. All four data layers are inserted simultaneously — name, location, service, behavior — producing a uniquely composed message for every recipient. No two messages in the campaign are identical. This protects deliverability (carriers flag uniform bulk sends) while maximizing relevance per recipient.

unique rendering · variable messaging · deliverability protection · simultaneous layer insertion
Who uses the personalization engine
Any business where contact datais more detailed than just a name.
🚗
Automotive Dealerships

Vehicle year, make, model, last service date, service advisor name — the automotive contact record has enough data to make every message feel like it came from the service advisor who actually knows the car.

🏠
Home Services

Service type, last visit date, property address, city, rep name — an HVAC company can reference the system installed three years ago and the technician who serviced it. That’s a different message from ‘Time for your annual checkup.’

🏡
Real Estate

Price range, neighborhood preference, last inquiry date, agent name — a real estate follow-up that references what the contact was looking for performs at a different level than a generic ‘Are you still searching?’

👔
Recruiting & Staffing

Role applied for, location, last application date, recruiter name — a candidate follow-up that references the specific role they applied for reads as personal attention, not a blast to a candidate pool.

♻️
Re-engagement Campaigns

Any dormant list has contact history — last purchase, last service, last interaction. The behavior and timing layers turn a re-engagement campaign into a message that says ‘we remember you’ rather than ‘please come back.’

🏢
Multi-Location & Franchise

Location data makes a centrally managed campaign read as locally sent. Each market’s contacts get their market’s message — city, local service reference, and local area code sender — all from one dashboard.

Industries: Automotive Home Services Real Estate Recruiting Franchises
Common questions
Questions aboutdynamic personalization.
What is the difference between dynamic keywords and the Dynamic Personalization Engine?
Dynamic keywords are the mechanism — the double-brace placeholders in the message template. The Dynamic Personalization Engine is the system — how those keywords are structured, layered, and combined to produce genuine relevance, not just name insertion. The engine uses four distinct data layers (identity, location, service, behavior) working together. A message using only first name is using one layer. A message using name, city, vehicle, and last service date is using the full engine.
Can the personalization engine use custom fields from my contact list?
Yes. Any column in the contact list becomes a potential personalization field. Standard fields like first name and city are pre-mapped. Custom fields — vehicle year, membership tier, rep name, last offer received, account number — are mapped during campaign setup using the column header from the import. Any data in the contact record can appear in the message.
Does personalization improve SMS deliverability?
Yes — variable messaging is both a personalization strategy and a deliverability protection mechanism. Carriers use pattern detection to flag uniform bulk sends as potential spam, even from registered 10DLC (10-Digit Long Code) numbers. When every message in a send is uniquely composed because each has different field values inserted, no two messages are identical. The pattern detection has nothing to flag. Personalization and deliverability protection are the same action.
How does the personalization engine connect to OTTO?
The personalization engine produces the send that generates replies. OTTO’s workflow engine handles what comes back. Personalized messaging increases reply rates by making the message relevant to the specific recipient. When that reply arrives, OTTO intercepts and routes — qualification flow for YES, Q&A for questions, Language Funnel for Spanish, immediate opt-out for STOP. The personalization engine is the entry layer. OTTO is the conversion layer.
Related features & reading
Three ways to get started.

Fastest takes 30 seconds.

Search Icon Site Search Close Site Search
0 results
Text Auto Attendant->