Skip to main content
Inside a Message Template body, a Template Variable and a Custom Field look exactly the same — both are written as #fieldname#. That’s exactly why they confuse people: #price# and #name# look like the same kind of thing, but where each one gets its value from is completely different.

One example, both types

Imagine an order confirmation template with this body:
#name# and #city# almost never change for a given subscriber, so they’re stored once and reused automatically. #product_name#, #price#, #orderid#, and #delivery_date# are different on every single order — nobody would want to permanently store “₹499” on a subscriber’s profile, so those get typed in fresh each time you send.

Quick comparison

Template Variables

A Template Variable is a placeholder that changes with every message — it isn’t stored anywhere, so you type the real value in fresh each time you send. Use it for anything unique to that one message: a price, an order number, a delivery date, an OTP code. Create one from Chatbot Manager → Automation → Message Templates → Template Variables:
Message Templates page with the Variables tab selected, showing a list of custom variables and a Create button
1

Click Create

Open the Template Variables list and click Create.
2

Name it

Give it a plain name with no spaces or special characters, e.g. price, orderid, delivery_date, product_name.
3

Save

It now appears in the list and can be inserted into any template’s Message Body from the Variables picker.
For one customer this might render as:
For the next customer, same template, completely different values:
When sending via the ChatSyncs API, a Template Variable needs its value filled in for that specific send — the API Developer Console prompts you for a value for every Template Variable the chosen template has, since there’s no stored value to fall back on.

Custom Fields

A Custom Field (see How Do I Manage Custom Fields and Labels?) stores one persistent piece of data per subscriber — their name, city, email, or company — that stays on their profile until it’s changed.
Manage Custom Fields panel with a Create Custom Field button and a list of fields including status, Phone, Email, Designation, Department, Name, and employee id, each showing its type
Insert it from the Custom Fields picker in the Message Body — it’s written the exact same way as a Template Variable:
Before this can send a real value, the Custom Field must already have data on that subscriber — set manually, via CSV/Google Sheet import, or through the Subscriber Update API. If the field is empty for a given subscriber, that part of the message sends blank. Because ChatSyncs pulls a Custom Field’s value straight from the subscriber’s stored profile, you don’t fill it into the API Developer Console the way you do a Template Variable — it’s already there, waiting to be used.

Which should you use?

Ask: “Will this value change every time I message this person?”
  • Yes → Template Variable — #price#, #orderid#, #delivery_date#, an OTP code
  • No → Custom Field — #name#, #company_name#, #city#, an email address
If you’re not sure, picture sending the same template to two different customers on the same day. If the value would be identical for both of them (their own name, their own city), it’s a Custom Field. If it depends entirely on which order or message this happens to be (a price, an order number), it’s a Template Variable.

Frequently asked

If you used a Custom Field, check that the subscriber actually has a value stored for it — an empty Custom Field sends blank. If you used a Template Variable, make sure you supplied a value for it in that specific send; Template Variables aren’t stored anywhere and need a fresh value every time.
No — ChatSyncs pulls Custom Field values automatically from the subscriber’s stored profile. Only Template Variables need to be supplied on every send.
Template Variable — a price or order number changes on every send, so it shouldn’t be stored permanently on the subscriber.
Yes — see the order confirmation example above. #name# and #city# are Custom Fields; #product_name#, #price#, #orderid#, and #delivery_date# are Template Variables, all in the same template body.
Both are written as #fieldname# — the difference isn’t in how they look, it’s in which picker you inserted them from (Variables vs Custom Fields) and where ChatSyncs pulls the value from when it actually sends.

Gotchas & common mistakes

  • Passing a Custom Field’s value as if it were a Template Variable — it isn’t needed and won’t be used; ChatSyncs already pulls Custom Field data from the subscriber automatically.
  • Forgetting to set the Custom Field before sending — the message will send with that part blank if the subscriber has no value stored for it yet.
  • Using a Template Variable for something that’s actually permanent about the customer — if the value should be the same across every future message to that person (their name, their city), store it as a Custom Field instead so you don’t have to re-type it every send.
  • Assuming the #...# syntax alone tells you which type it is — it doesn’t. #price# and #name# are written identically; only the picker you used to insert them (and where the value comes from) tells them apart.