Search documentation...

K
ChangelogBook a demoSign up

Journeys

Overview

Hightouch Journeys allows you to create automated sequences of interactions and data syncs. With journeys, you can trigger campaigns, wait for certain actions or events, personalize experiences based on member attributes, and sync data to hundreds of destinations.

Hightouch Journey

Required setup

Hightouch Journeys are built on top of the same underlying data schema that audiences use. Additionally, the parent model used in a journey needs to be using the lightning sync engine.

Journeys also leverage syncs when you want to take some action inside of a journey such as triggering an email or sending a user into an ad campaign. You’ll want to ensure all the destinations you want to send users to are set up as well.

Build a journey

Create new journey

To create a new journey, go to the journeys overview page and click add journey in the top right corner. You’ll be prompted to select a parent model (if you’ve set up more than one) and to give your journey a name and description. Finally, click create journey.

Edit view

After creating a new journey, you’ll land in the edit view. This is where you can add more steps or “tiles” to the journey and configure the logic for each one. At any point, you can click save changes or discard changes to create the associated action and exit the edit view. If you navigate away from this edit view with unsaved changes, those changes will be lost.

Journey edit view in the Hightouch UI

Interacting with the canvas

While in the edit view, you can build out your journey by dragging tiles onto the canvas from the panel on the right. Once you’ve created a new tile, you can click on it to view and edit its configuration.

Some helpful tips for interacting with the canvas in edit view:

  • Pan by clicking on empty space and dragging or scrolling on a trackpad
  • Zoom by using the +/- buttons in the top left, or pinching on a trackpad
  • Create a tile by dragging one onto the canvas from the library on the right
  • Move a tile by clicking and dragging it around the canvas
  • Edit a tile’s configuration by clicking on the tile
  • Delete a tile by hovering over it and clicking the trash icon (note: the start tile cannot be deleted)
  • Duplicate a tile by hovering over it and clicking the copy icon (note: the start tile cannot be duplicated)
  • Clean up a messy canvas by clicking the clean up icon on the top left of the canvas
  • Select multiple tiles by holding Shift on your keyboard while clicking and dragging around a set of tiles. You can then move all these tiles together once they’re selected.

Connecting tiles

Members will flow through your journey according to the connections you create between tiles. To connect two tiles, click and drag starting from the circular connector on the bottom of a tile. Drag the connector on to the target tile (you should see a green outline appear) and release.

Connecting tiles in a Journey in the Hightouch UI

For some tiles such as “hold until” and “segment”, connections are created from smaller tiles underneath, rather than from the tile itself. You can see in the “hold until” example below how connections are created from the “rule met” and “rule not met” tiles, rather than from the yellow “hold until” tile.

Connecting mini tiles in a Journey in the Hightouch UI

Each connector dot can only have one connection coming out of it. This is to ensure journey members aren’t duplicated down multiple paths. However, you can have multiple connectors lead into the same tile, often referred to as a “merge” between journey paths.

To delete a connection, hover over the middle of a connector and you’ll see a trash can icon appear.

Deleting connections in a Journey in the Hightouch UI

Start tile

The first tile in every journey is the start tile. The configuration of the start tile dictates who enters the journey, when, and how often.

Start by building an audience that will be used as the entry audience. The entry audience dictates who enters the journey. When you first start the journey, all members of the entry audience will enter the journey. After that, as records enter the audience they will enter the journey.

If a journey member drops out of the entry audience, they will remain in the journey. If a journey member drops out of the entire parent model, Hightouch no longer has access to that data and therefore they will exit the journey.

In the start tile you can specify whether members can re-enter the journey. If you allow unlimited re-entries, then records are eligible to re-enter the journey after they finish. With unlimited entries, a record will re-enter if they finish the journey, drop out of the entry audience, and then re-enter the entry audience. As long as a record remains in the entry audience, they will not re-enter the journey.

Evaluation schedule

Journeys are evaluated on a fixed schedule that defaults to every hour. A journey evaluation, or journey “run”, is when Hightouch looks at the current state of the journey, pushes records through the journey until they reach a time delay, and triggers all the syncs in the journey.

To edit the schedule, ensure you’re in edit mode, locate the settings panel on the right hand side, and click Edit. You’ll see the settings drawer appear where you can choose between a regular interval or custom recurrence schedule type.

Viewing the schedule in a Journey in the Hightouch UI

In most cases, a 1 hour interval should be sufficient. Keep in mind that the journey schedule also dictates the sync schedule, so if you want all the syncs to be triggered at a specific time of day or interval, you’ll want to set the journey schedule accordingly.

Starting a journey

To start a journey, ensure all your changes are saved, and then press Start in the upper right. After pressing start, your journey is now live and you should see member counts appear inside each tile. If you used an interval schedule, the first run should kick off after a few seconds (you can refresh the page to check the updated counts). If you used a custom recurrence schedule, the first run will kick off at whatever time you specified.

Once the journey is live, you can pause or turn off the journey at any time by clicking the corresponding buttons in the upper right corner.

Viewing a live Journey in the Hightouch UI

Flexibility

Just like Hightouch’s audience builder, the journey builder is super flexible and data-agnostic. You don’t have to necessarily run users through a journey. For b2b use cases, you can build a journey for accounts, opportunities, or workspaces. For marketplaces, you can build journeys for both merchants and consumers. For travel companies, you can build journeys based on trips or bookings. To accomplish these, you can build parent models in the schema builder that represent something other than users, and select that parent model when creating a new journey.

Tile types

Send to destination

This tile encompasses all the “actions” that you might want to take from within a Hightouch Journey such as triggering a campaign, sending users to ad platforms, updating records in a database, or sending records to any of our 200+ destination integrations.

After dragging a “send to destination” tile onto the canvas, you can click the tile to open the configuration drawer, and click Add sync to add a new sync. You’ll be prompted to save your work before jumping into the sync configuration process.

You’ll notice one additional piece of sync configuration that is specific to journey syncs: specifying whether your sync is a “trigger” or “cohort” sync. The basic difference is:

  • Trigger syncs allow for the same parent model record (same user) to be synced multiple times without ever worrying about “removing” a record from the sync. This is useful if you have a sync that’s triggering a campaign in your email tool and you’ve enabled “unlimited entries” in the start tile. Thus when a record re-enters the journey, Hightouch will be able to trigger the campaign again.
  • Cohort syncs will ensure records are never duplicated in the downstream destination. These should be used when syncing into a segment/cohort object and you care about maintaining the right group of records in the destination. When choosing this option, you’ll additionally need to specify when, if ever, Hightouch should remove records from the destination cohort.

Viewing a sync's configuration in a Journey in the Hightouch UI

Time delay

This tile is used to hold records for a specified period of time in minutes, hours, days, weeks, months, or years. Note that records can only advance tiles during a journey run. So if you add a 30 minute time delay but have a journey schedule of every 1 hour, records will not actually advance to the next tile until 1 hour after landing on the time delay.

Viewing a time delay tile's configuration in a Journey in the Hightouch UI

Hold until

This tile is used to hold records until they perform a specific action or event. You also need to specify a maximum hold duration after which, if the event hasn’t been performed, the record goes down the “rule not met” branch. This tile is useful if you want to take some action immediately following the event/action you’re waiting for.

As you can see in the image below, you can further filter down the event of interest if you’re waiting for an event with specific properties.

Viewing a hold until tile's configuration in a Journey in the Hightouch UI

Segment

This tile is used to split journey members based on any data you have available. Mutual exclusivity is automatically enforced between the segments you create here, meaning that a record can only ever fall into one segment. A catch-all “everyone else” segment is also created automatically so that you can specify what to do with members who don’t qualify for any of the created segments.

To create a new segment, click Add segment in the top right of the tile’s configuration drawer. Once created, you can specify which members should fall into this segment using a similar interface as the audience builder. To change the name of the segment, click one of the pencil icons at the top of the configuration drawer. At the bottom of the drawer you have the option to save changes, discard changes, or delete the segment.

Viewing a segment tile's configuration in a Journey in the Hightouch UI

Once you’ve created segments, they can be reprioritized by using the arrows on the left, or dragging/dropping using the handle. To jump back into a segment and edit it, you can click Edit or click on the segment name on the canvas.

Viewing a priority list tile's configuration in a Journey in the Hightouch UI

A/B Split

This tile enables you to randomly assign members to different split groups within your journey, unlocking the ability to run A/B or multivariate testing. You can create as many split groups as needed (with a minimum of two), each with its own weight and name. For even more advanced testing, you can chain multiple A/B Split tiles together to set up multivariate experiments. Consistency is automatically maintained, ensuring that each record is always assigned to the same group on subsequent runs.

To create a new split, click Add A/B Split in the top right of the tile’s configuration drawer.

Viewing a split tile's configuration in a Journey in the Hightouch UI

Once created, you can specify split percentages (weights), edit group names, or add/remove split groups. The sum of all weights must be 100 and group names must be unique within the split.

Viewing a priority list tile's configuration in a Journey in the Hightouch UI

Pausing and stopping a journey

Once a journey is live you have the option to pause it or turn it off, both of which can be found in the upper right corner.

Viewing a live journey in the Hightouch UI. The top bar, in the live state, contain buttons titled Turn off and Pause

When turning off a journey, you’ll be presented with two options:

  • Allow existing members to complete the journey while closing it to new entries
  • Hard stop and remove all members immediately (note: hard stopping a journey will take a few moments to complete and the journey may briefly appear as “paused”)

Resetting a journey

When a journey is stopped, you have the option to reset it.

Viewing a stopped journey in the Hightouch UI. In the top bar, under a three-dot menu, is a button titled Reset journey

Resetting a journey will clear out all internal state, making it behave as if you've never run the journey before. All entry history will be cleared and all syncs will be reset.

Editing a journey

Journeys can only be edited when in the “Paused”, “Draft”, or “Off” state. If you’d like to edit a live journey, you must first pause it.

When editing a paused journey that has members inside of it, members will remain in their current tile and proceed in the new journey once resumed. If you delete a tile with members in it, those members will be removed from the journey.

Journey Logs

The Journeys system will create a log table in your data warehouse that tracks every row that flows through a Journey. This log table can be used for observing or debugging a journey.

This is a table in the customer’s data warehouse, fully managed by the Journeys system, that logs the progress of all rows through a given journey.

Each journey has its own table, created in the HIGHTOUCH_PLANNER schema, with the naming scheme JOURNEY_LOG_<journey_id> where journey_id is the UUID of the journey with the dashes removed.

This table is actually used as part of Journey execution, so while it’s safe to read from it to do analysis, please do not insert, update, or delete to/from it, since this might cause the Journey to behave in unexpected ways.

Note that resetting a journey will clear the log table.

Each time a row enters the journey, moves from one node to another, or exits the journey, we create an entry in the log table. Note that since a row can enter a journey more than once, we also have a ROW_INSTANCE_ID column on the table, which is used to uniquely identify each time a row enters the journey. That instance ID will be consistent for that particular instance of the row as it moves through the journey.

Log Table Schema

ColumnTypeDescription
row_idstringThe primary key from the journey’s parent model that this row represents.
row_instance_idstringA UUID to uniquely identify a row_id each time it enters the journey.
run_idstringThe ID of the journey run that executed this operation. This is an internal detail.
from_node_idstringThe ID of the node that this action originates with. For moves or exits, it’s the node that the row moved or exited from. For enters, it’s NULL.
to_node_idstringThe ID of the node that this action targets. For moves and enters, it’s the node the row moved into. For exits, it’s NULL.
timestamptimestampThe effective timestamp of this operation. Note that this does not always represent the actual time the operation occurred - for example, if a user moved from one node to another due to an event, this will be the timestamp of the event rather than the timestamp we actually ran the warehouse query.
event_typestringWhat type of event this log line represents. One of moved-to-node, entered-journey, or exited-journey.

Best practices and FAQ

Journeys and priority lists

If your entry audience is inside of a priority list, the priority will be respected when determining who should enter the journey. For example, if your entry audience, Audience B, is prioritized underneath Audience A, and user 1 meets the criteria for both audiences, the user will only fall into Audience A. This means they will not enter the journey until they drop out of Audience A (while remaining in Audience B).

Failed syncs and retries

If a record fails to get synced inside of a journey, Hightouch will attempt to retry that record upon subsequent runs.

  • For cohort syncs, Hightouch will stop retrying when the record is removed from the sync
  • For trigger syncs, Hightouch will continue to retry the record until it’s synced successfully

Sync sequencing

It’s worth noting that all syncs in a journey get triggered at the same time (at the end of each journey run). So if you have two back-to-back sync tiles without any time delay between them, a record could be synced to both destinations at the same time. If you want to ensure some sequencing, a time delay is needed.

Ready to get started?

Jump right in or a book a demo. Your first destination is always free.

Book a demoSign upBook a demo

Need help?

Our team is relentlessly focused on your success. Don't hesitate to reach out!

Feature requests?

We'd love to hear your suggestions for integrations and other features.

Last updated: Dec 12, 2024

On this page

OverviewRequired setupBuild a journeyCreate new journeyEdit viewInteracting with the canvasConnecting tilesStart tileEvaluation scheduleStarting a journeyFlexibilityTile typesSend to destinationTime delayHold untilSegmentA/B SplitPausing and stopping a journeyResetting a journeyEditing a journeyJourney LogsLog Table SchemaBest practices and FAQJourneys and priority listsFailed syncs and retriesSync sequencing

Was this page helpful?