Send inbox messages

Updated

You send inbox messages from a campaign or broadcast workflow the same way you send other in-app messages. This page covers the process for the visual editor, which is the default editor for most users.

If you built your own inbox, you’ll use the advanced editor. See compose JSON messages for more information.

Add an inbox message to your workflow

Before you send an inbox message, make sure you’ve set up your inbox.

  1. In your campaign or broadcast workflow, drag an Inbox message block into your workflow.

    The inbox message block in the campaign editor
    The inbox message block in the campaign editor

  2. Click the message and choose an editor. For most users (and the process on this page), choose the Visual editor.

    If you built your own inbox, choose the Advanced editor and see compose JSON messages for more information.

    The inbox message content screen in the campaign editor
    The inbox message content screen in the campaign editor

Now you’re ready to build your inbox message.

Build a message in the visual editor

The visual editor opens a Design Studio canvas with a live preview. Your message inherits the styles you set when you styled your inbox.

  1. Choose a layout:
    • Basic: a heading, body, and timestamp.
    • Image: a heading, image, body, and timestamp.
    • Call to action: a heading, body, timestamp, and a button.
  2. Add your content. You can personalize any text with liquidA syntax that supports variables, letting you personalize messages for your audience. For example, if you want to reference a person’s first name, you might use the variable {{customer.first_name}}..
  3. Set the message’s expiration. By default, messages expire 60 days after you send them. See message expiration to set a relative or specific date, or to base the expiration on a liquidA syntax that supports variables, letting you personalize messages for your audience. For example, if you want to reference a person’s first name, you might use the variable {{customer.first_name}}. expression.
  4. When you’re ready, click Publish changes. Your message is ready, and it’ll send when you send your campaign or broadcast.
    inbox-visual-add-content.png
    inbox-visual-add-content.png

Personalize your message

You can use liquidA syntax that supports variables, letting you personalize messages for your audience. For example, if you want to reference a person’s first name, you might use the variable {{customer.first_name}}. to include dynamic content in your message. You can use profile attributesA key-value pair that you associate with a person or an object—like a person’s name, the date they were created in your workspace, or a company’s billing date etc. Use attributes to target people and personalize messages. in any message in the format {{customer.<attribute_name>}}. You can use event data in messages triggered by an event or an API call.

SourceExampleCampaignBroadcastNewsletterDescription
Profile attributes{{customer.first_name}}YesYesYesAttributes belonging the message recipient.
Event data{{event.order_number}}When triggered by an eventN/AN/AData from an event that triggered the message.
Trigger data{{trigger.order_number}}N/AYesN/AData sent in the message_data object when you trigger a broadcast or a transactional message.

Message expiration

Inbox messages expire after a certain amount of time and disappears from the inbox. Messages can expire up to 60 days after you send them.

In the visual editor, two settings control expiration:

Use liquid for expiration

If you want to set an expiration for a message dynamically based on data, you can use the liquid option for your message expiration.

When you set Value type to Liquid, your expression resolves at send time, so each recipient’s message will expire based on data—either a profile attribute or a value you pass in the message trigger. For a relative date, the expression resolves to a duration (like {{ trigger.ttl }} hours); for a specific date, it resolves to a timestamp (like {{ event.expires_at }}).

The data you can reference depends on how you send the message:

Send typeData you can referenceExample
Event-triggered campaignProfile attributes and event data{{ event.expires_at }}
BroadcastProfile attributes and trigger data{{ trigger.expires_at }}
Transactional (from your backend)Profile attributes and trigger data (from message_data){{ trigger.expires_at }}

Profile attributes ({{ customer.<attribute> }}) are available for every send type. See personalize your message for more on these data sources.

 If you don’t set an expiration, it expires after 30 days

If you use the liquid option, where you expect to set your expiration based on data from your trigger, but you don’t actually set the liquid value representing your expiration period, the message will expire after 30 days.

Troubleshooting

Inbox messages follow the same delivery patterns as regular in-app messages. Check our in-app messaging FAQ for additional troubleshooting.

My message doesn’t appear

  1. Verify that you’ve enabled in-app and inbox messaging in workspace settings.
  2. Confirm that your inbox is published—a draft inbox doesn’t display on your website.
  3. Check that the person is identified.
  4. Confirm that the message you intend for people to see hasn’t expired. You may need to investigate a specific deliveryThe instance of a message sent to a person. When you set up a message, you determine an audience for your message. Each individual “send”—the version of a message sent to a single member of your audience—is a delivery. to see the expiration date.

If you build your own inbox, see display inbox messages in your app for troubleshooting topics, filtering, and the inbox() API.

Copied to clipboard!