A journey is a series of messages that are initiated by a single automation trigger.


Please contact Airship Sales to enable Journeys for your account.

Think of a journey as a timeline, with each message in the journey separated by some amount of time. Airship sends the messages in a journey to your audience in order, as long as your audience continues to meet the conditions to receive messages in the journey.

You can set the events and conditions that will cause a user to exit a journey and prevent Airship from delivering the remaining messages:

You can link journeys together by routing users to a new (downstream) journey. Users will automatically start the downstream journey when they complete the current journey, or when they encounter a conversion or cancellation event.

You can create journeys in the dashboard. Journeys support all channels and message types.

See also: Configure Triggers.

Visualizing journeys

A journey map shows the relationships between journeys. Each journey is represented by a card displaying performance metrics. When you select a journey, you can view the upstream and downstream journeys that are connected to it. See: View Journey Maps.

Message frequency limits

Automation limits cap the number of automated messages a named user can receive within a time frame, preventing you from over-messaging your audience. Each automation and message in a journey counts toward the automation limit. Automation limits are set at the project level.

Rule limits cap the number of times a named user can trigger a journey, preventing you from over-messaging your audience, e.g., a maximum of 1 per day. Rule limits are set per journey and apply at the named user level.

Your automation limits and counts are displayed below the list of views in Messages » Messages Overview » Ongoing. See: Set Journey and Automation Limits.

Personalizing the messages in a journey

You can personalize messages in journeys using AttributesMetadata that you can use to group and target your audience. Attributes differ from tags in that when evaluating users with attributes, Airship uses operators, e.g., equals, less than/greater than, contains, before/after, to determine whether or not to target a user. Supported attribute types are TEXT, NUMBER, and DATE. or Custom EventEvents that indicate that a user performed a predefined action, such as adding an item to a shopping cart, viewing a screen, or clicking an Unsubscribe button. Custom events can trigger automation and journeys. You can code them into your app or website, or send them to Airship from an external source using the custom event API. Custom events contain properties that you can use to personalize messages. properties if you set up a journey using the Custom Event trigger. In both cases, you can reference variables using HandlebarsAirship’s message personalization syntax using double curly braces, more commonly known as {{handlebars}}. Use handlebars to insert variables and conditional logic in messages and templates. to personalize the message for each member of your audience. If you set up templates, you can reference your templates when setting up messages in the journey.

For example, if your events have a property called name, you would add it to your message or template using {{name}}.


Custom event properties used to be referenced in the $[0].properties namespace. If you have templates referencing properties in this namespace, they’ll still work, but you’ll have to continue using this namespace until you contact Airship and move over to the simplified namespace for custom event properties.

You can personalize a message using both attributes and custom event properties. If both an attribute and a custom event property have the same name, Airship will attempt to use the custom event property — the most recent property — to personalize the message.

For example, if you have a custom event representing a purchase, you can send an automated message confirming the purchase and providing information about what the user bought.

Custom Event

   "occurred": "{{event_time}}",
   "user": {
      "named_user_id": "user"
   "body": {
        "name": "purchase",
        "subscribe": true,
        "properties": {
            "customer_name": "user",
            "total": 48,
            "cost_units": "USD",
            "purchase": [
                    "qty": 4,
                    "item": "MLB regulation baseball",
                    "per": "$12",
                    "total": "$48"

Message Content

Hi {{$def customer_name "valued customer"}}!

Thanks for your purchase of:
{{#each purchased}}
{{qty}}x  {{per}}  {{item}} = {{}}
total: ${{total}}

Is being processed. We'll message you again when it ships!

Journey templates

Journey templates are prefilled journeys you can use as starting points for common messaging scenarios: re-engagement and a welcome series. They are fully editable, and an onscreen tour leads you through the editing process. See: Use journey templates.

Testing journeys

Use journey testing to verify the appearance and behavior of your messages, as well as channel configuration, tag conditions, and conversion or cancellation events. You can send a single message, or test the full journey according to your specified timing, and generate a version of PerformanceA report that compares audience behavior to a journey’s goal. It displays performance metrics and a link to the message report for each message in the journey. and message reports that are based on your test audience. See: Test a journey.