Knowledge Base
Using Dynamic Keywords
Using Dynamic Keywords
to Personalize Bulk SMS Campaigns
Dynamic keywords let you send one campaign template that produces thousands of individually personalized messages — each one inserting the contact’s name, location, vehicle, service history, or any field from your contact list automatically.
A generic mass text gets ignored. A personalized one — “Hi Sarah, your AC service is due this week in Baltimore” — gets replied to. Dynamic keywords are the mechanism that makes every message in a bulk send feel individually written, without creating individual messages manually.
What Are Dynamic Keywords?
Dynamic keywords are placeholder variables you insert into a campaign message template. When the campaign sends, TextingOnly replaces each placeholder with the corresponding value from that contact’s record. One template — unlimited personalized output.
Template: “Hi {{first_name}} — you asked about {{service}} in {{city}}. We have a special running this week. Still interested?”
What Sarah receives: “Hi Sarah — you asked about HVAC in Baltimore. We have a special running this week. Still interested?”
What Mike receives: “Hi Mike — you asked about Roofing in Annapolis. We have a special running this week. Still interested?”
Keyword Types
First name, last name, full name. The most basic personalization — but the most impactful. A message that starts with the contact’s name performs at a different level than “Hey there.”
City, region, zip code, service area. One campaign with location keywords serves every market — Baltimore contacts get “Baltimore,” Annapolis contacts get “Annapolis.”
The specific service, vehicle, product, or inquiry type in the contact’s record. Reference what they actually asked about — not a generic offer.
Last service date, last interaction, rep name, or any custom field from your list. Makes a re-engagement campaign feel like a personal follow-up from someone who remembered.
Keyword Syntax
Dynamic keywords use double curly brace syntax in the message template. The field name inside the braces must match the column header in your contact list exactly (case-sensitive).
{{first_name}} · {{city}} · {{service}} · {{vehicle}} · {{last_service_date}}
Column headers in your contact list must match — if the column is “First Name” use {{First Name}}. If it’s “first_name” use {{first_name}}.
If a contact’s record is missing data for a keyword, TextingOnly uses the fallback value you define during campaign setup — so no contact receives a message with a blank placeholder.
Segmentation Before the Send
Dynamic keywords work best when the list is also segmented correctly. A message referencing “your HVAC service” only makes sense to contacts who inquired about HVAC. Segment your list by service type, geography, or status before building the campaign — then write a template optimized for each segment with the relevant keywords.
Build separate campaigns for separate segments rather than one campaign trying to serve everyone. A focused segment + relevant dynamic keywords consistently outperforms a large generic send.