Use targeting to personalize Flows to different cohorts of users, seamlessly link multiple onboarding experiences together, and even to define a completion criteria for a Step in a Flow.


Flow targeting

You can optionally add targeting to every Flow you create. You can view and edit this targeting logic on the Targeting tab of the Flow detail page. The Flow targeting logic is used to determine who should see the Flow.

Flow Targeting

Example use cases

Here are some common ways we see developers using Flow targeting:

  • Only show a Flow to newly created accounts
  • Show a Flow to users with a certain job function or 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
Refer to the users SDK and API for more info on using properties and events in targeting

Step targeting

You can also leverage targeting logic within the Steps of a Flow

Step visibility

Example use cases

Here are some common ways we see developers using Step targeting:

Boolean logic

Supported operators are: &&, ||, ==, !=, >, <, >=, <=

User props

All data you’ve made available to Frigade can be used in your targeting logic, including the properties below supported on users. You can also sync with your existing analytics platform to leverage user properties and events you’re already tracking.

user.flow('<flowId>')
User Flow state (e.g. COMPLETED_FLOW)
user.flowStep('<flowId>', '<stepId>')
User Flow Step state (e.g. COMPLETED_STEP)
user.flowStepData('<flowId>', '<stepId>', '<fieldId>')
Data collected from in a specific step (e.g. form data)
user.event('<eventId>').count
User event count
user.property('<property>')
User properties
user.propertyContains('<property>', '<searchString>')
User properties partial match (). It supports searching in strings, objects, and arrays.

Group props

All data you’ve made available to Frigade can be used in your targeting logic, including the properties below supported on groups. You can also sync with your existing analytics platform to leverage group properties and events you’re already tracking

group.property('<property>')
Group properties
group.event('<eventId>').count
Group event count

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