Availability
The Journeys feature is available in Countly Enterprise and as an add-on in Flex.
This feature is available from version 25.03
Journeys allow you to design user flows based on specific triggers and deliver targeted content (e.g., in-app messages). You can track performance metrics and iterate by publishing updated versions
Feature Dependencies
ourneys require the Content Builder feature to create and deliver content. Ensure Content Builder plugin is enabled before you proceed further.
Getting Started
1. Enable Journeys via Management → Feature Management.
2. Navigate to the Journeys tab.
3. Click “+ New Journey” to begin.
See this guide to implement in-app messaging with Journeys and Content Builder.
For an overview, see the explainer.
Overview
You can start your journey by going to the Journeys tab under the menu.
When you click, you will be directed to the Journeys screen.
Journey Listing
The Journey Listing table shows all previously created journeys.
Fields:
Name - The name of the journey.
Users Entered - Number of times the journey started. A journey starts when a user triggers the first step.
Flows Completed - Number of times users reached the end of all steps before the engagement block (i.e., became eligible for content).
Status -
Draft: Editable and not active
Running: Published and active
Journey Creation
You can proceed to the step of creating a new journey by clicking the "+New Journey" button in the upper right corner of the Journeys home page.
When you click the "+New Journey" button you will be redirected to the below step.
The structure of this step consists of 3 stages.
A header where you can see Journey Information in the top panel
Steps you can add to your flows in the right panel
A flow diagram showing your flows in the middle panel
Header:
The header consists of a close button, a toggle for you to publish, meta information about the journey, an editor where you can make changes to the flow, a result tab where you can see see the metrics when you publish the journey, the status of the journey, a save button for you to save your changes, and a three dots button where you can perform multiple operations on your journey.
Right Panel:
In the right panel you will see a list of steps you want to add to your flow.
A journey must start with a trigger. This is a step you need to take to start your journey and engage your users with your journey.
Trigger blocks are as follows:
1- Profile Update Block
When the “Profile update” trigger block is selected, the journey listens for a profile update event. When a profile update event is received, the journey starts. You can add additional filtering by using query builder.
When you define a filter, it is not enough for the relevant event to be triggered for that block, it must also meet the filter conditions. This logic works for all block types.
For the example below, it is not enough to receive a user update event, the journey starts when an update information is received on a user using the Android platform.
2- Profile Group Entry Block
When “Profile Group Entry Block” is selected, the journey waits for “Profile group entry” event. Whenever a user or users are added to a profile group that is selected in block configuration, the journey starts.
For more detailed information on how profile groups are defined, please visit Profile Groups documentation.
3- Profile Group Exit Block
Similarly “Profile Group Entry Block”, when “Profile Group Exit Block” is selected, the journey waits for “Profile group exit” event. Whenever a user or users are removed from a profile group that is selected in block configuration, the journey starts.
For more detailed information on how profile groups are defined, please visit Profile Groups documentation.
4- Cohort Entry Block
When “Cohort Entry Block” is selected, the journey waits for the “Cohort Entry” event. Whenever a user or users are added to the cohort that is selected in block configuration, the journey starts.
For more detailed information about Cohorts, please visit Cohorts documentation.
5- Cohort Exit Block
Similarly “Cohort Exit Block”, when selected, the journey waits for the “Cohort Exit” event. Whenever a user or users are removed from the cohort that is selected in block configuration, the journey starts.
For more detailed information about Cohorts, please visit Cohorts documentation.
6- Journey Exit Block
There may be cases where the completion of a journey triggers another journey. For these cases, we have a “Journey Exit” trigger block. In the block configuration, you can select the journey that is going to be waiting to be completed to start the journey.
In the Journeys section, all the journeys you have defined in that application will be listed. You can choose the journey that suits you from there.
7- Consent Block
Consent trigger block is used to listen to consent change. When the “Consent block” is selected as a trigger, the journey listens to consent change events. If the incoming event also matches the filter conditions that are defined in block configuration, the journey starts.
As we offer in some blocks, you can customize the consent change with filtering.
8- Crash Block
With the crash block, you can listen to the crash events that occur in your application and start your journey according to these events.
As we offer in some blocks, you can customize the crash event with filtering.
For more detailed information about Crashes, please visit Crashes documentation.
9- Push Action Block
Push Action block is used to listen to push action events. When a push action event occurs that matches the filter conditions selected in the block configuration, the journey starts.
As we offer in some blocks, you can customize the push event with filtering. You also will be able to filter according to the segments of push action events.
For more detailed information about Push Notifications, please visit Crashes documentation.
10- Session Block
Session block is used to listen to session events.
As we offer in some blocks, you can customize the session event with filtering.
For more detailed information about Sessions, please visit Countly Terminology documentation.
11- View Block
View block is used to listen for view events. When a view event occurs that matches the filter conditions selected in the block configuration, the journey starts.
As we offer in some blocks, you can customize the session event with filtering. You also will be able to filter according to the segments of View events.
For more detailed information about Views, please visit Countly Terminology documentation.
12- Events
Events block is used to listen for the events in your application.
As we offer in some blocks, you can customize the session event with filtering. You also will be able to filter according to the segments of your custom events.
In the events section, you can either choose one of your defined events or create a new one by clicking "+ Add Event" button.
For more detailed information about Events, please visit Countly Terminology documentation.
13- Feedbacks
Feedback trigger blocks are used to listen events from feedback widgets. First, you must select the feedback type.
Then you will be viewing the widgets you created for the feedback type you selected.
As we offer in some blocks, you can customize the feedback events with filtering. You also will be able to filter according to the segments of your selection.
For more detailed information about Feedback, please visit Feedback Overview documentation.
You can start your journey according to the trigger types above. New supported types will be added in the future. You can then continue your journey with other block types to design, customize, and add flexible options to fit your flow. Those block types are as follows:
1- Engagement Blocks
Engagement blocks are used to engage users with some content such as push notification, in-app message, email. Currently we have in app message.
In-App Message Block
In-app messages are the contents that are displayed in a website or mobile application to the end user in custom cases during the execution of a journey. In the following journey "Save 10% on your next purchase with this coupon!" screen is displayed when a DISCOUNT_10 event is fired by the user
To add in-app message block, first user clicks on + icon of the preceding block, then select In-app Message. In-app message block has the following configuration options:
Content Block:The content block that is defined in Content Builder is selected. You can either choose defined content or create a new one. Check out Content Builder documentation to see in detail how you can create content.
Priority:Priority of the message. It can be low, medium or high. There may be cases where more than one message is displayed to the user.
Expiry:Expiry period of the message. The message will not be displayed to the end user when it passes the expiry period.
You can also see the preview of the content that will be displayed to end user.
Logical Blocks
Wait For a Trigger Block
"Wait for a trigger" block is used to pause journey until a triggering event happens.
In the example below journey starts with the DISCOUNT_10 event and waits for the view trigger. Journey waits at this block till the user clicks the "Purchase" page that is selected in the trigger configuration. As a trigger, you can select the trigger blocks that are listed above and configure each of them as described. When the trigger event is received journey continues. In this example, In-app message is sent to the user.
Wait For a Period of Time Block
This block is used to make journey wait for a custom amount of time.
In the example below journey starts with the DISCOUNT_10 event. Waits for 15 minutes. After that time period passes journey continues and sends in-app message.
Wait For a Specific Date Block
This block is used to make journey wait till specific date time.
In the example below journey starts with the DISCOUNT_10 event. Waits till "Jan 28 2025 6:00 PM". When the date is Jan 28 2025 6:00 PM journey continues and sends in app message.
Continue If Block
Continue If block checks condition in order to continue to the journey.
You can use filtering to define your condition.
If the Add Else switch is turned off, the journey continues with the next block when the condition is met. If the condition is not met, the journey ends.
By activating the Add Else switch, you can also define blocks and provide customizations for the case where the condition is not met.
Switch Block
Switch block is used to evaluate multiple conditions in sequence. You can define these conditions using the query builder—just like in other blocks—and reorder them as needed.
When the Switch block executes, it checks the first condition. If it’s met, the journey continues along that branch; if not, it moves on to the second condition, and so on. In other words, the conditions are evaluated in order, and the journey follows the branch of the first condition that is satisfied. If multiple conditions are true, only the branch of the first matching condition is executed. It’s important to note that branches in a Switch block do not run in parallel
Journey Configuration
When creating or editing a journey, there are two important configuration options available in the journey settings: Limit to Trigger and Priority.
Limit to Trigger
Limit to Trigger controls how many times a single user can enter and start the same journey.
By default, there is no limit on how many times a user can trigger the same journey, as long as the trigger condition is met. This is useful for journeys that are designed to repeat, such as a journey triggered by every session.
However, in many cases, you may want to cap how many times a user can go through the same journey, for example, an onboarding flow that should only run once per user.
To set a limit, enable the By total entries toggle and enter a number.
Example: If you set the limit to 1, each user can start this journey at most 1 time. If they trigger the starting event again, the journey will simply not start for them.
Setting the value to 0 or leaving it empty means no limit is applied.
Note: This limit is tracked per journey version. If you publish a new version of the journey, the entry count resets for users, they will be able to enter the new version even if they had already reached the limit on a previous version.
Priority
Priority is a block-level setting available on In-App Message and Survey engagement blocks. It controls which content gets delivered first when a user qualifies for more than one in-app message or survey at the same time, for example, if a user is in multiple journeys simultaneously and both have triggered an engagement block.
Priority can be set to one of three levels:
If two engagement blocks have the same priority level, the one that was added to the delivery queue first will be shown first.
To set a priority, click an In-App Message or Survey block in your flow, then select the desired level from the Priority dropdown in the block details panel on the right.
Publishing Journey
After clicking on the "Save" button journey is saved in "draft" status. In order to be actively used, journey must be first published. Click on publish switch and confirm to publish the journey. When journey is published it's status becomes "active". Journey definition must be complete. All the mandatory fields in the block definitions must be filled. Journey must have at least one engagement block. The branches of logical blocks must have at least one engagement block. Incomplete journeys can not be activated.
Editing Journey
In order to edit the journey, first you must unpublish the journey. After that you can add/edit/delete the blocks of the journey. There are some essentials tips to know when you edit a journey.
You can not delete a block if block has subsequent block. Delete button is deactivated. First you must delete the last block in the journey. For instance, in the journey below you can not delete the in-app Message block in the middle. First you you should delete the last one
When you are done with changes, you save the journey by clicking "save journey" button. You have to publish the journey again in order to make journey active. If there were already running journeys before your change they will be run with the previous version of the journey. New journeys that are started after your changes will be run with the actual changes.
You can also rename the journey by double clicking journey name on top left.
Journey Duplication
You can duplicate a journey by clicking three dot button. On the menu select "duplicate journey" to duplicate the journey.
Click OK in confirmation pop up
A copy of the journey will be created with the name <your_journey_name>(copy) and you will be redirected to listing page.
Journey Deletion
You can delete the journey by clicking on three dot button. On the menu select "Delete Journey"
Click "OK" in confirmation pop up.
Journey will be deleted. Important thing is the journeys that are not completed yet will continue but new journeys will not be executed.
Journey Results
You can monitor the performance of your journey by clicking the Results tab at the top of the journey editor. Results can be filtered by time range using the date picker. By default, it shows All Time results.
Result Summary
The summary section displays four tiles at the top of the Results tab, each with a count or percentage, a comparison to the previous period, and a unique users count below.
Started Journeys: The total number of times the journey was started in the selected period. A journey starts when a user triggers the first trigger block defined in the flow. The unique users count below shows how many distinct users this represents.
Completed Journeys: The percentage of started journeys where the user successfully passed all steps before the engagement block, meaning they became eligible to receive content. The unique users count shows how many distinct users completed the flow.
Content Shown: The number of times in-app content was displayed to a user as part of this journey in the selected period. The unique user count shows how many distinct users viewed content.
Content Interaction Rate: The percentage of content deliveries where the user interacted with (tapped or clicked) the shown content. A higher rate indicates your content is resonating well with users. The unique users count shows how many distinct users interacted.
Journey Performance Chart
The Journey Performance chart plots four metrics over the selected time period so you can see trends and identify when users entered, completed, dropped off, or stalled:
Started journeys - new journey starts per day
Completed journeys - completions per day
Incomplete journeys - drop-offs per day (users who failed a filter or condition)
Journeys in progress - users are currently waiting at a block
Users in Journey
| Column | Description |
|---|---|
| User ID | The internal user identifier |
| Status | Current state of this run (running, completed, incomplete, etc.) |
| Start Time | When this user entered the journey |
| End Time | When this user's run finished (empty if still in progress) |
| Name | User's name if available in their profile |
| User's email if available in their profile |
You can search within the table and export the data using the download button in the top right corner of the table.
Pausing a Journey
When a journey is published, a Pause button appears in the top right of the header. Clicking it pauses the journey immediately:
No new users will enter the journey while it is paused.
Users who are currently waiting at a Wait block are suspended and will resume from where they left off when the journey is unpaused.
To resume, click the Resume button, which replaces Pause when the journey is paused.
In-app messages delivered through journeys are subject to the Engagement Queue Cooldown. If you want in-app messages to be shown immediately with no delay, go to settings, find the Journey Engine settings section and set the Engagement Queue Cooldown value to 0 to remove all cooldown restrictions