Targeting
Frigade’s targeting logic allows you to personalize the experience for each user, connect multiple onboarding experiences seamlessly together, and define individual step completion criteria.
You can also sync with your existing analytics platform to leverage user properties and events you’re already tracking. This allows you to target users based on their actions and properties in your product.
Flow targeting
At the highest level, every Flow you create will have optional targeting logic. You can view this targeting logic on the Flow Overview page and modify it by visiting the Audience tab. The Flow targeting logic is used to determine who should see the Flow.
Use cases
Here are some common ways we see developers using Flow targeting:
- Only show a Flow to new accounts by comparing account creation date
- Show a Flow to users with a certain job function or other user property
- Show a Flow to users who have taken a specific action in the product (e.g. an upsell once they use something 10 times)
- Show a Flow to users who have completed another Flow (e.g. a “next steps” Flow after a user completes an initial onboarding Flow)
- Show a Flow only after X days have passed since completing another Flow
Step targeting
Beyond Flow targeting, you can also leverage targeting logic within Flows themselves.
Use cases
Here are some common ways we see developers using Step targeting:
- Show or hide a Step based on a condition using steps[].visibilityCriteria
- A Step only starts when a condition becomes true using steps[].startCriteria
- Mark a Step complete based on a condition using steps[].completionCriteria
Boolean logic
Supported operators are: &&
, ||
, ==
, !=
, >
, <
, >=
, <=
User props
All data you’ve made available to Frigade can be used in your targeting logic, including the following properties supported on Users:
COMPLETED_FLOW
)COMPLETED_STEP
)Group props
All data you’ve made available to Frigade can be used in your targeting logic, including the following properties supported on Groups:
Examples
Here are some examples of some of the most popular targeting logic we see developers using.
Relative dates
You can use relative dates in your targeting logic similar to how this is handled in plain Javascript. For example, you can target users who are younger than at least 30 days:
user.property('accountCreatedDate') within 30d
Or target users who are older than 30 days:
user.property('accountCreatedDate') !within 30d
This behavior also works for targeting users who have completed a Flow within as certain time frame:
user.flow('flow_i6kH7DjcbE6tiaQd') !within 4w
Property matching
Target a Flow to a user who has connected their bank account:
user.property('bankAccountConnected') == true
Check if a property is present
Target a Flow to a user who has a job title:
user.property('jobTitle') != null
Absolute dates
Target a Flow only for users signed up after a certain date:
user.property('accountCreatedDate') > '2023-03-01 00:00:00'
Flow state
Target a Flow to a user who has completed another onboarding Flow already and has connected a bank account:
user.flow('flow_i6kH7DjcbE6tiaQd') == 'COMPLETED_FLOW' && user.property('bankAccountConnected') == true`
Target a Flow when a Step in another Flow is completed:
user.flowStep('flow_i6kH7DjcbE6tiaQd', 'my-step-id') == 'COMPLETED_STEP'
Target the output of a previous step in the same Flow:
user.flowStepData('flow_i6kH7DjcbE6tiaQd', 'my-step-id', 'my-field-id') == 'some-value'
Event counts
If the event properties do not matter and you simply wish to see if a user has triggered an event, you can use the following expression:
user.event('pageView').count > 0
Automatically trigger when a group/organization sends a specific event:
group.event('connectedBankAccount').count > 0