Profile data is the foundation of every personalised Marketing Automation flow. It determines who enters a flow, which path they follow, and what content they receive. This article explains the four types of profile data you can use in your flows — Attributes, TAGs, Events, and Segments — and shows you step-by-step how to configure each one.
Overview: Profile data types and where they're used
When you configure a Listen node, Check Profile node, or Wait for Event node, you choose what type of profile data the node should evaluate. Here's a quick comparison of the four types and when to use each.
Data type | What it is | Best for | Available in these nodes |
Attributes | Static or slowly changing profile properties — e.g. first name, email, date of birth, country, shoe size | Scheduled triggers (birthday, renewal date), personalised branching (by country, language, membership status) | Listen, Check Profile, Wait for Event, Update Profile |
TAGs | Labels applied to profiles — e.g. "VIP", "Lead", "Churned" | Scheduled triggers based on tags, branching based on profile classification, applying/removing tags within the flow | Listen, Check Profile, Update Profile |
Events | Actions a profile performs — e.g. page view, form submission, email open, purchase | Real-time triggers (profile visits a page, submits a form), behaviour-based branching | Listen, Check Profile, Wait for Event |
Segments | Dynamic groups of profiles defined by rules in the Segment Builder | Narrowing who can enter a flow, branching by complex multi-attribute criteria | Listen, Check Profile |
💡 Tip — Which nodes use profile data? Three nodes are your primary tools for working with profile data: the Listen node (who enters the flow), the Check Profile node (who goes down which branch), and the Wait for Event node (hold until the profile does something). The Update Profile node can also write data back — adding tags or changing attribute values.
Use Attributes in a flow
Attributes are profile properties stored in your data model — things like name, email address, date of birth, country, or any custom attribute you've created. You can use attributes to trigger flows on a schedule (e.g. on a profile's birthday) or to create personalised branching (e.g. different paths for different countries).
The configuration options depend on the attribute type. Here's how each one works:
Date Attribute
Date attributes let you trigger a flow based on a specific date stored on the profile — perfect for birthday flows, renewal reminders, or anniversary campaigns.
Step-by-step: Set up a birthday flow trigger
Open the Listen node and select Attributes.
Choose the Date of birth attribute (or your equivalent date attribute) from the dropdown.
Choose the timing. Date attributes offer three timing options. See table overview below.
For birthday flows, choose whether profiles should enter every year or only on milestone birthdays (e.g. 30th, 40th, 50th). Set the schedule — choose daily, weekly, or monthly evaluation — and set the time of day the flow should start.
Option | What it does | Example |
On the date | Triggers the flow on the exact date stored in the attribute | "On birthday" — profiles enter on their birthday |
Before the date | Triggers a set number of days/weeks/months before the date | Send a renewal reminder 30 days before a contract expiry date |
After the date | Triggers a set number of days/weeks/months after the date | Follow up 7 days after a profile's sign-up date |
💡 Good to know: Date-based triggers are evaluated on a schedule (daily/weekly/monthly), not in real time. This means a profile won't enter the flow the instant their birthday attribute is updated — they'll enter at the scheduled evaluation time on their birthday.
Text Attribute
Text attributes include things like first name, email address, country, company name, or any custom text field. Use them to filter or branch flows based on specific values.
Step-by-step: Branch a flow by country
Add a Check Profile node to your flow and select Attributes.
Choose the text attribute from the dropdown — e.g. Country.
Select a match type and enter the value to match.
Match types for text attributes:
Match type | What it checks | Example |
Equals | Exact match | First name equals "Johanna" (case sensitive) |
Not equals | Does not match | Country not equals "Sweden" — routes non-Swedish profiles down a different branch (case sensitive) |
Contains | Value includes the text | Email contains "@companyname.com" — identifies corporate email addresses (case sensitive) |
Starts with | Value begins with the text | Phone number starts with "+46" — identifies Swedish numbers |
Ends with | Value ends with the text | Email ends with ".se" — identifies Swedish email domains (case sensitive) |
Regex | Matches a regular expression pattern | Advanced pattern matching — e.g. validating a format. Requires technical knowledge; consult your development team if needed. |
Number Attribute
Number attributes include things like age, order count, loyalty points, shoe size, or any custom number field. Use them for value-based comparisons.
Match types for number attributes:
Match type | What it checks | Example |
Equals | Exact match | Order count equals 10 — trigger a loyalty milestone |
Not equals | Does not match | Loyalty tier not equals 0 — filter out non-members |
Less than | Value is lower than | Score less than 50 — route low-scoring leads to a nurture path |
Less than or equal to | Value is lower than or exactly | Age less than or equal to 25 — target younger demographics |
Greater than | Value is higher than | Purchase value greater than 500 — trigger a VIP follow-up |
Greater than or equal to | Value is higher than or exactly | Points greater than or equal to 1000 — qualify for a reward email |
💡 Tip: Number with decimal attributes work exactly the same way — useful for currencies, weights, or precise measurements.
True/False Attribute
True/False (boolean) attributes are simple on/off flags — e.g. "Is member", "Has completed onboarding", "Opted in to loyalty programme".
Configuration is straightforward: choose True or False, and only profiles matching that value will qualify.
Use case: Member vs. non-member welcome flow
After the Listen node, add a Check Profile node checking "Is member" = True/False. Members receive a personalised welcome with loyalty benefits; non-members receive an invitation to join.
Use Tags in a flow
TAGs are labels you apply to profiles — like "VIP", "Churned", "Newsletter subscriber", or "Event attendee". Unlike attributes, TAGs don't have a value — a profile either has the TAG or doesn't. TAGs are useful for classification-based logic in your flows. You can use TAGs in two ways:
Listen or Check Profile: Evaluate whether a profile has (or doesn't have) specific TAGs.
Update Profile: Apply or remove TAGs as profiles move through the flow.
💡 Tip: You can always create segments with TAGs to fine tune further and combine include and exclude for exact targeting.
Step-by-step: Trigger a flow based on a TAG
Open the Listen node (or Check Profile node) and select TAGs.
Choose whether you're looking for profiles that are tagged or are not tagged.
If selecting multiple TAGs, decide whether profiles must match All TAGs (AND logic) or Any TAG (OR logic).
Select one or more TAGs from the dropdown, or create a new tag directly.
If using tags in a Listen node, set the schedule (daily, weekly, or monthly) and the time of day for evaluation.
Option | Logic | Example |
All | Profile must have every selected TAG | Profile must be tagged both "VIP" AND "Newsletter subscriber" |
Any | Profile must have at least one selected TAG | Profile must be tagged "VIP" OR "Newsletter subscriber" |
💡 Good to know: TAG-based Listen node triggers are evaluated on a schedule — just like attribute-based triggers. The platform checks which profiles match the TAG criteria at the scheduled time and enters them into the flow.
Use case: Automated VIP recognition
Listen for profiles tagged "VIP" (daily schedule). When they enter, send a personalised VIP welcome email and use an Update Profile node to apply a "VIP welcomed" TAG — preventing duplicate sends on the next evaluation by adding a Check Profile node that verifies the profile is not tagged "VIP welcomed".
Use Events in a flow
Events are actions a profile performs — visiting a page, submitting a form, clicking a link, making a purchase, or any custom event you send via the API (or Zapier). Unlike attributes and tags, events are real-time: the flow triggers the moment the event is collected.
Events are available in the Listen node, Check Profile node, and Wait for Event node.
💡 Tip: Looking to use custom events sent from your website, app, or CRM? See Use Custom Events in Marketing Automation for the full setup guide. For a complete list of available events and their data fields, see About Events.
Step-by-step: Trigger a flow when a profile visits a specific page
Open the Listen node and select Events.
Navigate the event categories. For website behaviour, choose Website Interactions → Auto collect (these are events automatically collected by the Apsis One tracking script on your site).
Select the event type — e.g. Page view.
Expand the Activity dropdown and select an activity from the list.
Use Match to narrow the trigger to a specific data point from the event. For a page view, you might match on URL to target a specific page.
Select the Match type to define how the value should be compared (e.g. "equals", "contains").
Enter the value to match — e.g. the URL of your pricing page.
Event match with frequency and time frame
You can add extra precision to event-based conditions by specifying how many times the event must have occurred and within what time frame.
Under the event configuration, set the number of times the profile must have performed the event (e.g. "at least 3 times"). Tick Within a time frame and set the period — e.g. "within the last 7 days".
💡 Good to know: The frequency and time frame options are especially powerful in a Check Profile node. For example, you can branch your flow to check whether a profile has opened at least one email in the past 30 days — routing engaged and disengaged profiles down different paths.
Common event categories at a glance
Category | Examples | Typical use |
Website Interactions → Auto collect | Page view, link click | Trigger flows based on browsing behaviour (requires tracking script) |
Form & Page interactions | Form submitted, page viewed | Welcome flows, lead capture follow-ups |
Response data | Email opened, email clicked, unsubscribed | Re-engagement flows, engagement scoring, webhook unsubscribe forwarding |
Subscription | Opt-in, opt-out | Welcome series, preference change flows |
Custom events | Purchase completed, booking confirmed, trial started | Any event you send via the API from your website, app, or CRM |
Use Segments in a flow
Segments are dynamic groups of profiles defined by rules in the Segment Builder. In Marketing Automation, you can use segments in two places: as a filter in the Listen node (to restrict who can enter the flow) and as a condition in the Check Profile node (to branch the flow).
Step-by-step: Add a segment filter to a Listen node
Open the Listen node and look for the Segment option.
Click Add Segment and select an existing segment, or create a new one.
When a segment is attached to a Listen node, a profile must both trigger the event and be a member of the segment to enter the flow. This is useful for limiting a flow to a specific audience — e.g. only profiles in the "Swedish customers" segment can enter.
Step-by-step: Branch a flow with a segment in Check Profile
Add a Check Profile node to your flow.
Select Segments and choose the segment to evaluate.
Profiles who are members of the segment follow the Yes branch;
Profiles who aren't follow the No branch.
⚠️ Important — Segment size limit: The maximum number of profiles in a segment used in Marketing Automation is 500,000 profiles. If your segment exceeds this limit, the node may not evaluate all profiles correctly. Consider narrowing your segment criteria or splitting the flow.
💡 Good to know: If you edit a segment after selecting it in a node, the node automatically uses the latest version — but the transition can take up to 10 minutes. During this window, the node continues using the previous segment definition.
Use case: Localised content paths
After the Listen node, add a Check Profile node with a "Swedish customers" segment. Profiles who match receive a Swedish-language email; profiles who don't receive the English version. You could chain multiple Check Profile nodes with different country segments for full localisation.
Advanced options
Combining data types in a single flow
You're not limited to one data type per flow. In fact, the most effective flows combine multiple types. For example:
Listen node: Trigger on an event (form submission).
Check Profile node 1: Branch on an attribute (country = Sweden).
Check Profile node 2: Branch on a tag (is tagged "VIP").
Update Profile node: Apply a tag ("Completed onboarding flow").
Each node independently evaluates its own data type — they don't need to match.
Using profile data in Email and SMS content
Beyond flow logic, you can also use profile data to personalise the content of emails and SMS sent from your flow. Within the email editor, insert personalisation tags that pull attribute values (e.g. first name, company) or event data (e.g. product name from a custom event) directly into the message. See Use Custom Events in Marketing Automation for how to insert event data into email content.
Event versions
Events can have multiple versions if the event schema changes over time. When configuring a node, you may be prompted to select a specific event version. In most cases, use the latest version. For more detail, see About Events.
Technical deep dive: How profile data is evaluated
Understanding when and how profile data is evaluated helps you avoid common pitfalls.
Real-time vs. scheduled evaluation
Data type | Evaluation timing | What this means in practice |
Events | Real-time | The flow triggers the moment the event is collected. No delay. |
Attributes (in Listen node) | Scheduled (daily/weekly/monthly) | The platform evaluates all profiles matching the attribute condition at the scheduled time. If a profile's attribute changes between evaluations, the change won't be picked up until the next scheduled run. |
TAGs (in Listen node) | Scheduled (daily/weekly/monthly) | Same as attributes — evaluated on a schedule. |
Segments (in Listen node) | Scheduled (daily/weekly/monthly) | Same as attributes and TAGs — evaluated on a schedule. |
Attributes / TAGs / Segments (in Check Profile node) | At the moment the profile reaches the node | The profile is evaluated when it arrives at the Check Profile node — not on a schedule. This means the data is as current as possible at the point of evaluation. |
Events (in Wait for Event node) | Real-time while waiting | The node holds the profile and listens in real time for the event to occur within the configured window. |
What happens when data is missing?
If a profile reaches a Check Profile node and the evaluated attribute has no value (is empty/null), the profile follows the No branch. The platform treats "no data" as "does not match".
In a Listen node, profiles with an empty attribute are silently skipped during scheduled evaluation — they won't enter the flow.
⚠️ Important: If you're building a flow that depends on an attribute or TAG, make sure your profile data is populated before activating. Profiles with missing data will be filtered out or routed to the No branch — which may not be the behaviour you want. Consider adding a Check Profile node specifically to catch "empty" attribute values and route them to a fallback path.
Use cases: Profile data in action
Birthday campaign (Date Attribute)
Trigger: Listen node → Attribute → Date of birth → On birthday → Every year, evaluated daily at 08:00.
Flow: Listen → Email ("Happy birthday! Here's your personal offer") → End Flow.
Why it works: Automated, personalised, and requires zero manual effort after setup. Runs year after year.
Engagement-based branching (Events + Check Profile)
Trigger: Listen node → Event → Subscription opt-in.
Flow: Listen → Time (7 days) → Check Profile → Event: "Email engagement registered" at least 1 time within 7 days → Yes: Email ("Glad you're engaged!") → End Flow / No: SMS ("Don't miss our latest update") → End Flow.
Why it works: Adapts the journey based on actual behaviour — engaged profiles get email, disengaged profiles get a different channel.
TAG-based segmented nurture (TAGs+ Update Profile)
Trigger: Listen node → Event → Form submitted (whitepaper download).
Flow: Listen → Update Profile (add TAG "Downloaded whitepaper") → Time (3 days) → Check Profile → TAG: "Is tagged VIP" → Yes: Email ("Exclusive follow-up for VIPs") → End Flow / No: Email ("Thanks for downloading — here's more") → End Flow.
Why it works: Combines event-triggered entry with tag-based branching and in-flow tagging for future reference.
Multi-condition lead nurturing and qualification path (Attributes + Events + Segments)
Trigger: Listen node → Event → Custom event "trial_started".
Flow: Listen → Time (5 days) → Check Profile → Segment: "High-value leads" → Yes: Notification node (alert sales team) → Email ("Your dedicated account manager") → End Flow / No: Check Profile → Event: "Logged in" at least 3 times within 5 days → Yes: Email ("Power user tips") → End Flow / No: Email ("Need help getting started?") → End Flow.
Why it works: Layers multiple data types to create a nuanced journey that adapts to both profile classification and real-time behaviour.
What's next?
Listen Node — Full reference for configuring the trigger node.
Check Profile Node — Full reference for branching logic.
Wait for Event Node — Full reference for holding profiles until an event fires.
Update Profile Node — How to write data back to profiles within a flow.
Use Custom Events in Marketing Automation — Send events from your website, app, or CRM and use them in flows.
About Events — Complete list of available events and their data fields.


