Remarkety’s Journey editor helps you create unique, automated omni-channel marketing workflows for your subscribers.
A “journey” is a set of interactions that your customer has with your brand in order to remove obstacles and create a seamless marketing experience. Each journey starts with either a time-based or event-based trigger that enrolls subscribers into the flow, and can have as many succeeding steps added as you'd like.
In this article, you’ll learn how to create a journey from scratch.
Create a new journey
Create and manage your journeys on the Journeys homepage. You can build a new one from scratch, or choose from a selection of pre-built journey templates.
In this tutorial, we'll show you how to create a new journey from scratch.
To create a journey from scratch, follow these steps:
-
Click Journeys in the left hand menu.
-
Click Create Journey.
- Click Create from Scratch.
- Choose which trigger will start your journey.
-
Enter a Journey Name, and then enter a Description.
- Press Create Journey in the bottom right corner to save these settings and begin!
Now that you’ve created your journey, add trigger filters, actions, and conditions that will determine each contact’s unique path.
Keep in mind that a journey can be as simple or complex as you want it to be. Review your options, and choose only the steps that best suit your marketing needs.
Define the trigger
A journey first starts with a trigger. This is the activity or event that adds a contact to a journey and acts as an initial “gate” to enter. You’ve already chosen your journey's trigger at the outset.
There are event-based triggers, which are activated by a specific customer behavior (like completing a purchase), and there are also date-based triggers, which fire before or after a specifically defined date (like a birthdate).
Examples of triggers:
- Abandoned Cart
- Order Placed
- Order Fulfilled
- Birthday
- Added to/removed from segment
Trigger filters
Certain journey triggers will allow you to add a filter. For example, an Order Placed trigger will allow you to filter which orders trigger the journey based on certain conditions; for example, trigger the journey only if the order placed is has more than 2 items.
To add a trigger filter, follow these steps:
-
Click on the trigger that begins your journey to open up the filter modal.
-
In the Filter tab, open the Select Trigger Filters drop-down menu and select your desired filter.
Click here for a complete list of our trigger filters.
Re-entry
In addition to adding trigger filters, define the journey's “Re-enter” behavior. This specifies if customers can re-enter this journey while already in the middle of it.
To choose your journey's Re-entry settings follow these steps.
- Click on the journey's beginning trigger.
- Select the Re-enter tab.
-
Specify if re-entry is enabled or disabled using the on / off toggle. If it is enabled, choose the desired behavior.
- Click Save in the bottom right corner.
Nice job! You finished setting up the trigger for your journey.
Add journey steps
After your trigger is set, think about your goals for the journey, and plot the combination of actions and conditions accordingly. Create a unique customer workflow that meets your marketing needs!
Your journeys can be built out of the following steps:
- If / Else split
- Wait
- Send email
- Send SMS
- Create coupon
To add a step, click your cursor on the plus icon () on the step where you want the branch to occur.
All the steps and conditions you can use are in the right-hand panel of the journey editor.
To learn more about what each step accomplishes, read our guide here.
Activate your journey
To activate your journey, follow these steps:
- Review your journey to make sure it’s ready.
- Check that your email and SMS steps are set to Running status:
If your email or SMS step is set to Draft mode, click on the action and change via the Status drop down.
- Click the Journey status drop down menu in the top-right corner.
- Press Yes, Activate.
Congrats, your journey is now running! Now, your contacts who fit the entry conditions will begin their journey through the journey.
Send Webhook Action
The Send Webhook action allows you to trigger an external HTTP POST request to any service whenever a shopper reaches this step in the journey. This is useful for integrating with other systems, triggering automation in third-party apps, or logging data externally.
How It Works
When a contact reaches the Send Webhook action in a journey, the system sends a POST request to the URL you provide.
You can customize the request body with dynamic placeholders from the journey context (for example, the shopper’s email, name, or other fields).
Configuration Fields
When adding the Send Webhook action, you must provide:
1. URL
-
The full endpoint address where the webhook will be sent.
-
Must start with
https://orhttp://. -
Example:
2. Body
-
The JSON payload that will be sent in the POST request.
-
You can include dynamic variables using placeholders (e.g.,
${shopper.email}). -
Make sure the payload is valid JSON.
Example:
{
"email": "${shopper.email}",
"first_name": "${shopper.first_name}",
"coupon": "${coupon.code}"
}
Optional: API Token & Request Signing
-
Every POST request will be signed using the HMAC-SHA256 algorithm.
-
The signature is generated from the raw request body and your API Token.
-
The generated signature is included in the
X-Event-Hmac-Sha256header.
Verifying the Signature (on your server):
-
Retrieve the request body as a raw string.
-
Use your API Token as the HMAC key - API Token can be found in the webhook step.
-
Generate an HMAC-SHA256 digest of the body.
-
Compare it with the value from the
X-Event-Hmac-Sha256header.
This allows your receiving endpoint to verify that the webhook came from your journey and hasn’t been tampered with.
Example Javascript code
import * as crypto from 'crypto';
/**
* Creates a signature for the body
* @param body - The body to sign
* @param token - The token to use for the signature
* @returns The signature
*/
function signRequest(body: string, token: string): string {
return crypto
.createHmac('sha256', token)
.update(body, 'utf8')
.digest('hex');
}
Comments
0 comments