Skip to main content

Personalizing Campaign Messages

Create personalized messages without CSV uploads or APIs. Each message carries a fallback, so a message never sends half-written.

J
Written by Josh Gray

Personalization lets a campaign message carry each member’s own details, so one campaign reads correctly for everyone who gets it.

Write the message once, putting attributes where the values go:
​

  • For Jane, it arrives as “Hey Jane, you have 2,450 points waiting.”

  • For a member whose name and balance you don’t hold, it arrives as “Hey there, you have rewards points waiting.”

You’ll find it on the Notification page of the campaign editor, next to the message field.

The values come from your Custom Attributes, the same ones that power Dynamic Fields on your passes. Both scopes are available:

  • User Attributes follow a member across all their passes

  • Pass Attributes belong to this campaign’s pass template

They’re grouped separately when you add one, and anything marked sensitive is left out of the list.


Adding personalization

Put your cursor where the value should go, click ⚡ Personalize, choose an attribute, enter a default, and click Insert.

The attribute lands in the message as a chip showing its name and default, and you carry on typing around it. Click a chip to change its default. To swap the attribute itself, delete the chip and add a new one, since the attribute on an existing chip can't be changed. Chips delete whole, either from the × or with Backspace from just after one.

💡Tip: Copying a chip puts the personalization on your clipboard, so you can draft a message elsewhere and paste it in.


Default values

The default is what a member sees when you don't hold that value for them, and every attribute needs one. It's the difference between "Hi there," and "Hi ,".

A default can be blank. The chip then resolves to nothing and the space in front of it is removed, so the sentence closes up. What you can't do is leave it out entirely, and a campaign won't save until every attribute has one.

Defaults also set the length your message is measured against, because the recommended length check runs on the all-defaults version rather than on real member data. If your defaults are short and your stored values are long, the delivered message can run longer than the editor suggests. Keeping them roughly the same length avoids that. Campaigns Best Practices covers how messages truncate.


Previewing before you send

The Notification Preview shows the message resolved, as it will arrive.

Pick someone under Preview as a user and the test fields fill with their real values.
​

You can search by name, email, pass ID or user ID, and any pass on the template works. Each attribute in the message gets its own field, matched to its type, so a date attribute gets a date picker and a number attribute a numeric input.

Editing a value clears the selected member, which lets you start from someone real and adjust from there.

Clear test data resets everything.

💡Tip: Read the empty version too. Clear every field and see the message as a member with nothing on file will get it. That's usually where an awkward sentence turns up.

Text appears as stored, numbers get grouping like 1,000,000.32, and dates read as YYYY-MM-DD in the member's own timezone.


A few other things to know

  • Values are pulled when each notification is created, not when you save, so a balance that changes in between delivers the newer number.

  • If an attribute is deleted after you save the campaign, it falls back to its default rather than failing.

  • This applies to campaign messages. For personalized content on the pass itself, see How to use Dynamic Fields.


🙋 Need help? Reach out to your Badge customer success manager or contact our support team.

Did this answer your question?