> Synerise Documentation — CRM > > This file contains the complete "CRM" section of the Synerise documentation. Each article begins with a top-level "# " heading. The manifest listing all sections is at https://hub.synerise.com/llms-full.txt # Introduction to aggregates An aggregate is a summarized data about a selected event from a specified time range. You can determine the desired output – whether it is the latest or first value for a particular event parameter, median, average, sum, minimum, maximum, and more. In Synerise, you can create the following aggregate types: - [**Profile**](/docs/crm/aggregates/creating-profile-aggregates) - Profile aggregates include customer-context, allowing for displaying the result for individual customer. Within the aggregate preview, you can select a customer identifier to view the results tailored for that specific customer. - [**Event**](/docs/crm/aggregates/creating-event-aggregates) - Event aggregates let you analyze an occurrence of an event and occurrences before it. These aggregates act like custom event parameters which can be used in filters (as a [property or value](/docs/analytics/i_events-parameter-value#synerise-objects)). Event aggregates can be applied to filters with different events than the event in the aggregate, which can help you create complex analyses. Aggregates serve more than just analytical purposes; they are essential components within larger use cases and complement other Synerise features, such as Predictions and AI recommendations. The table below showcases what you can do with aggregates: | Purpose | Practical examples | Aggregate type | |-----------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------| | Simple analysis | - [Discover a customer's preferred channel](/use-cases/channel-preference)
- Discover a customer's preferred category
- [Calculate duration of the latest session](/use-cases/calculate-time-spent-on-website) | Profile | | Complex analysis | - [RFM analysis](/use-cases/rfm-analysis)
- [Dashboard for a call center that contains transaction statistics](/use-cases/customer-dashboard-call-center#create-aggregates) (for example, name of the product purchased the most recently, transaction value, number of transactions, and so on) | Profile | | Providing context for AI features | - [Recommendation of similar products filtered by favorite category of a customer](/use-cases/dynamic-content-item-context-recommendation) (the favorite category is provided by the aggregate result)
- [Recommendation boosted by the results of AI prediction for best brand for a customer](/use-cases/bestfit-brand) (results of the prediction are retrieved from an aggregate) | Profile | | Creating custom event parameters | - Gather a group of customers whose average transaction value exceeds $500 after second visit in the store
- Calculate recommendation revenue after the first click within 24 hours
- [Count transactions attributed to a triggering action within a defined time window](/use-cases/time-window-event-attribution) | Event | # Profile overview
**Upcoming breaking change (effective July 6, 2026):** Synerise is introducing changes to how user identifiers and UUIDs are handled. These changes may affect profiles with accented or diacritical characters in identifiers, profiles with leading or trailing whitespace in identifiers, and profiles with duplicate UUIDs. For details and recommended actions, see [Upcoming changes to handling identifiers](/docs/settings/configuration/identifier-standardization).
A profile is a comprehensive collection of all information about an entity, like a customer, that is gathered by the application. This includes personal details as well as a complete record of activity within the application and website, such as page visits or adding items to a shopping cart. The profile also includes information about the [segmentations](/docs/analytics/segmentations/introduction-to-segmentations) to which the profile belongs, [screen view campaigns](/docs/campaign/screen-views/introduction-to-screen-views) they are the audience of as well as results of the [expressions](/docs/crm/expressions/introduction-to-expressions) and [aggregates](/docs/crm/aggregates/introduction-to-aggregates). In addition, you can customize the profile view by adding a custom dashboard which can provide you with overview of purchases, page visits, distribution of purchased item categories, to name a few, for the individual profile. Furthermore, the profile serves as a hub for various actions to be taken, such as sending a message, [manually generating an event for a profile](/docs/crm/adding-events-in-customer-cards), adding tags, and more.
A profile of a customer
An example profile
## Personal information ---
A profile of a customer
An example profile
All basic information, such as the name of the profile and its ID, can be found on the upper left side. Personal information includes the birthday, location of the user, the phone number, the email address, and more. The scope of information depends on you and the way you collect data about the visitors to your website. ### Identities and identifiers #### UUIDs and Firebase registration IDs In the **Identities** section, you can click **Show all** to view all the UUIDs and Firebase registration IDs (if applicable) of the profile.
Mobile push messages are delivered to the device with the most recent Firebase registration ID. For more details, see ["Mobile notification delivery flow"](/docs/campaign/Mobile/mobile_campaign#mobile-notification-delivery-flow).
#### Other identifiers You can edit the following identifiers in this section: - email (in **CONTACT INFO**) - phone number (in **CONTACT INFO**) - `custom_identify` (in **OTHER**) In the `/v4` API, this parameter is called `customId` The values of the identifiers can't contain the following special characters: * Characters from outside the Basic Multilingual Plane (BMP) set * Carriage Return (CR) * Line Feed (LF) * \u2028: Line Separator * \u2029: Paragraph Separator * \u00AD: Soft Hyphen ### Attributes In the **Profile info** section, you can find various data of the profile, such as the birth date and contact info. Under **OTHER**, you can check and edit more parameters, including the custom ones added by integrations. You can add more attributes with APIs, SDKs, Imports, and Automations. Regardless of the method, the attribute names can't contain the following special characters: - Carriage Return (CR) - Line Feed (LF) - \u2028: Line Separator - \u2029: Paragraph Separator ## Tags ---
Tags assigned to a profile
Tags assigned to a profile
Below the personal information, you can find tags assigned to a profile. You can add them manually on the profile or you can add them while importing the profiles to the Synerise portal. Tags allow you to mark profiles and you can filter them. The consistent usage of tags will let you keep order in profiles and segment the database. You can find the list of all tags assigned to customers in **Assets > Customer Tags**. ## Subscriptions In the **Subscriptions** section, you can check and modify the marketing agreements of the profile: - [Email](/docs/campaign/e-mail) agreement may have the following statuses: - disabled - enabled - confirmation: this means that the customer must click the confirmation link to enable the agreement. - [SMS](/docs/campaign/SMS) agreement can be enabled/disabled with the toggle. - [Web push](/docs/campaign/Webpush), the agreement and the `snrs_has_web_push_devices` attribute must be `true` to send messages. This attribute is automatically set to `true` when the profile registers for notifications and receives a Firebase token. - [Push](/docs/campaign/Mobile), the agreement and the `snrs_has_mobile_push_devices` attribute must be `true` to send messages. This attribute is automatically set to `true` when the profile registers for notifications and receives a Firebase token. - the `receive_whatsapp_messages` attribute must be set to `true` to send messages by means of [WhatsApp partner integration](/docs/automation/integration/whatsapp-partner-integration/send-template-message), unless you enable **Send without customer consent** in the [node settings](/docs/automation/integration/whatsapp-partner-integration/send-template-message#define-the-integration-settings). ## Membership attributes --- Membership attributes are created when the segmentation sharing process is initiated. The segmentation results are saved as membership attributes and are synchronized. These attributes have a boolean value (true or false) indicating whether a profile belongs to a segmentation from the current workspace or other workspaces (if you use [Co-Brand Decisioning Layer](/docs/settings/workspace/multibrand-workspaces)). The membership attributes will have predefined names, format: - display name: `: mbr `, however, you can change its [display name](/docs/crm/customer-properties#changing-display-name-and-description) - source name: `:_mbr_` Where: - `` is the name of your workspace - `` is the name of the segmentation - `` is the ID of the segmentation When sharing segmentation results: - within a single workspace, you can [track how profiles join or leave segmentations, helping you analyze the impact of your activities on profiles](/docs/analytics/segmentations/share-segmentation-results#i-want-to-analyze-how-profiles-joined-and-left-segmentations). - across a [workspace group](/docs/settings/workspace/multibrand-workspaces/create-workspace-group), you can identify profiles that exist in your other workspaces and build audiences combining those profiles. This lets you optimize costs by avoiding sending duplicate campaigns. #### Restrictions - The value of membership attributes cannot be changed manually; it is updated only through synchronization (launched on the user's interface only). - The attribute source name cannot be changed. - Membership attributes are not included when importing profiles. You can find the list of all membership attributes in a workspace in: - **Behavioral Data Hub > Profile Attributes > Membership Attributes** You can overview synchronization process status of membership attributes in: - **Behavioral Data Hub > Membership Attributes Sync** You can overview the workspace group in the **Organization** panel. ## Activity --- Under the name of the profile, you can check the last activity. - If the profile is active now, the status is **Online now**. - If the profile isn't active, time since the last activity is shown. You can hover over the time to see the exact date.
Checking the last activity date
Checking the last activity date
The last activity date is the most recent event of any of these types: - [client.applicationStarted](/docs/assets/events/event-reference/web-and-app#clientapplicationstarted) - [screen.view](/docs/assets/events/event-reference/web-and-app#screenview) - [screen.click](/docs/assets/events/event-reference/web-and-app#screenclick) - [dynamicContent.show](/docs/assets/events/event-reference/dynamic-content#dynamiccontentshow) - [page.visit](/docs/assets/events/event-reference/web-and-app#pagevisit) - [form.submit](/docs/assets/events/event-reference/web-and-app#formsubmit) - button.click (custom event) - event log (legacy event) - slider.change (legacy event) - switch.change (legacy event) ### Activity list ---
The activity list in the profile
The activity list in the profile
The activity list contains the history of [events](/docs/assets/events/event-definitions) which occurred in the context of a profile. By clicking a single event, you can view its details. An event describes either an activity performed by an individual (for example, visit to a website, submitting a form, adding an item to the cart, starting the workflow, and so on) or an activity performed for the individual (for example, sending an email/SMS/mobile push/web push, displaying dynamic content, and so on).
When the the **Display** selector is set to **Expanded**, the events only become expanded if they have **Details** configured on the **Display** tab of their definitions. To learn more about adding the details, see ["Adding event definitions > In the Web application" in "Event definitions"](/docs/assets/events/event-definitions#in-the-web-application).
#### Event details
Event properties panel showing pinned parameters and context menu options
Event details with pinned parameters and context menu
When you click an event, the details panel opens with two tabs: - **Properties** - displays the event parameters as a list. - **JSON** - displays the raw event data in JSON format. Both tabs include a search box. To search for multiple values at once, start the query with `|`, for example: `|value1|value2`. #### Pinning parameters You can pin individual parameters to move them to the top of the event details list. Pinning works per action type — if you pin a parameter for a specific action (for example, `recommendation.click`), it will be pinned for all occurrences of that action type. This setting is stored in the browser and does not apply to other browsers or devices. To pin a parameter, hover over it and click **Pin**. #### Context menu Click the three-dot icon in the upper-right corner of the event details panel to open the context menu: | Option | Description | |--------|-------------| | **Show only pinned** | Hides all non-pinned parameters and shows only the pinned ones. | | **Copy JSON** | Copies the entire raw event JSON to the clipboard. | | **Copy parameters** | Copies only the event parameters (without system properties) in JSON format to the clipboard. | In this section of the profile, you can generate an event for an individual manually. You can find the instruction [here](/docs/crm/adding-events-in-customer-cards). ## Messages ---
The Messages tab on the profile
The Messages tab on the profile
You can send any type of message to a person directly from a profile. To send: - an email, you must [configure a sending account](/docs/campaign/e-mail/configuring-email-account) - a SMS, you must [configure sending account](/docs/campaign/SMS/configuring-sms-gateway) - a web push notification, you must [integrate with Firebase and enable web push notifications in Synerise](/docs/settings/tool/firebase) After sending any type of message, an event is generated on the list of activities. However, it won't be visible on the list in **Experience Hub**. ## Notes ---
Adding a note in the profile
Adding a note in the profile
You can add a note to a profile, if there is a non-standard piece of information about this person to be saved. ## Statistics ---
Predefined statistics in the profile
Predefined statistics in the profile
A profile contains predefined statistics about transactions, email messages, web push notifications, mobile push communication, and display of dynamic content. You can create a dashboard (in the **Decision Hub**) and add it to the profile.
You can become familiar with the following use cases which involve creating a dashboard: - [Call center dashboard](/use-cases/customer-dashboard-call-center) - [Transaction trends dashboard](/use-cases/transactions-dashboard)
## Analyses ---
List of analyses in the profile
List of analyses in the profile
The profile contains a list of analyses that are calculated for every individual customer such as [aggregates](/docs/crm/aggregates) and [expressions](/docs/crm/expressions). If you create an aggregate, expression or a segmentation a particular customer falls into, it will be displayed on the profile, only if you mark it to be displayed in the profiles.
Aggregate wizard
Creating an aggregate. Option of displaying of the analysis in the profile is on the upper-right side
# Introduction to expressions Expressions allow you to create your own indicators based on mathematical formulas or calculations for both profiles and events and use them as custom attributes. Expressions for events work as event attributes while expressions for customers work as profile attributes. In the Synerise application, you create two types of expressions: event expressions and customer expressions. Event expressions function as attributes of events, whereas customer expressions become attributes of individual profiles. ## Business benefits --- - Expressions used as attributes are a great tool for building loyalty programs and scoring structures. Thanks to this, you can award points and bonuses to your customers if they perform a specific action. - Expressions are helpful with building custom profile attributes with values calculated in real time. - Expressions enable building scoring structures. ## Example use cases --- - [Earn and Burn - Exchange points for rewards](/use-cases/earn-burn) - [Creating event parameters out of event expressions](/use-cases/multi-params-expression) - [Calculating Customer Age from Birthdate Attribute](/use-cases/age-calculation) ## Requirements --- - A tracking code implemented into the website. # Attributes In this section in the Behavioral Data Hub, you can define the attributes you can assign to a customer. These attributes are pieces of information that describe a customer, for example, first name and last name, date of birth, nationality. Attributes are assigned to users:
The list doesn't cover all cases, but the most common ones.
- When a visitor to the website submits a form - When you [import your customers](/docs/automation/actions/synerise-integrations/import-customers) to Synerise - When you edit a customer's profile in **Behavioral Data Hub > Profiles** - When you launch a workflow which updates customer's attributes in response to a specific [trigger](/docs/automation/triggers). - When you share and synchronize segmentation results (only membership attributes) ## Useful references --- - API: [Add or update clients method](https://hub.synerise.com/api-referenceClientManagement/ClientManagement.html#tag/Client-management) - Use cases: [Coupon for membership anniversary or birthday](/use-cases/coupon_for_anniversary) (birthdate attribute used) ## Use of profile attributes --- Profile attributes are used widely in the **Decision Hub**. - They are frequently used while building audiences. You can group customers into segments according to age, gender, tags assigned to them, area where they reside, and so on. - Attributes come in handy in other types of analyses too. You can use them to narrow down the results of the analyses, for example, you can narrow down the results of a metric that counts the number of visits to the website by users with the email address within `example.com`. - You can create a report where data can be organized by any attribute such as gender, date of birth, tags, last activity date, and so on. They are used in **Automation Hub** as well. - A workflow can be triggered by the update of customer attributes or end up updating the attributes. - You can trigger a workflow for the audience which you can define by using customer attributes. This way for example, you can run the workflow for customers with a particular tag assigned.
Exemplary customer property
Use of customer properties in the Audience node
- You can narrow down the participants in the further parts of the workflow by using the **Profile Filter** node. The settings of the node, similarly to the **Audience** node, let you filter out customers by using the attributes. Apart from the usage in **Decision Hub** and **Automation Hub**, you can use attributes to filter out customers on the list in **Behavioral Data Hub**. ## Types of profile attributes --- - **Default** - These are the standard attributes which are filled in when a new customer is added or updated when a customer submits a form on a website again, when you import customers to Synerise or manually modify data in the customer's profile. Also, when you create or update a customer's profile, you can leave the attributes empty.
Click to see the list of default attributes
  • email
  • phone
  • customId
  • firstName
  • lastName
  • uuid
  • avatarUrl
  • birthDate
  • company
  • city
  • address
  • zipCode
  • province
  • countryCode
  • sex
  • agreements
  • attributes
  • tags
You can find more info how to send these attributes and their values through API [here](https://hub.synerise.com/api-referenceClientManagement/ClientManagement.html#tag/Client-management). Pay attention to the correct format of the attributes.
- **Custom** - These are the attributes which you add on your own either by using API or you can add them manually on the interface.
When you update/create a profile over the API with an attribute that does not exist, a definition of that attribute is created automatically.
- **Membership attributes** - An attribute which is created as a result of sharing and synchronizing segmentation results. These attributes have a boolean value (true or false) indicating whether a profile belongs to a segmentation from the current workspace or other workspaces (if you use [co-brand workspaces](/docs/settings/workspace/multibrand-workspaces)). - **Other** - Technically, they are custom attributes updated by various backend services in Synerise, such as the attribute that informs about the marketing agreement status update or longitude/latitude. ## Viewing profile attributes --- - You can find a complete list of attributes you can assign to profiles in Behavioral Data Hub icon **Behavioral Data Hub > Attributes**
Customer properties
The list of customer properties
- To check the attributes of a particular profile, go to **Behavioral Data Hub > Profiles**. The attributes of the profile are visible on the left side.
Exemplary customer
A profile of an example customer
## Adding profile attributes in the Synerise portal ---
Exemplary customer property
Exemplary customer property
1. Go to Behavioral Data Hub icon **Behavioral Data Hub > Attributes > Add new attribute**. 2. In the **Source name** field, enter the name of the parameter as it is sent by the SDKs/API. 3. In the **Display name** field, enter a human-readable label for display in the Synerise portal. 4. Optionally, in the **Description** field, you can add an explanation about the purpose of this property. 5. From the **Type** dropdown list, select the format of the property value as sent by the SDKs/API. 6. If you don't want to display this attribute in the filters across the Synerise platform, disable **Show attribute**. 6. Confirm by clicking **Save**. ## Managing membership attributes --- Membership attributes are created when the segmentation sharing process is initiated. The segmentation results are saved as membership attributes and are synchronized. These attributes have a boolean value (true or false) indicating whether a profile belongs to a segmentation from the current workspace or other workspaces (if you use [Co-Brand Decisioning Layer](/docs/settings/workspace/multibrand-workspaces)). The membership attributes will have predefined names, format: - display name: `: mbr `, however, you can change its [display name](/docs/crm/customer-properties#changing-display-name-and-description) - source name: `:_mbr_` Where: - `` is the name of your workspace - `` is the name of the segmentation - `` is the ID of the segmentation When sharing segmentation results: - within a single workspace, you can [track how profiles join or leave segmentations, helping you analyze the impact of your activities on profiles](/docs/analytics/segmentations/share-segmentation-results#i-want-to-analyze-how-profiles-joined-and-left-segmentations). - across a [workspace group](/docs/settings/workspace/multibrand-workspaces/create-workspace-group), you can identify profiles that exist in your other workspaces and build audiences combining those profiles. This lets you optimize costs by avoiding sending duplicate campaigns. #### Restrictions - The value of membership attributes cannot be changed manually; it is updated only through synchronization (launched on the user's interface only). - The attribute source name cannot be changed. - Membership attributes are not included when importing profiles. ### Viewing attribute details --- The scope of information available in the details of the membership attribute: - source segmentation - you can get the ID and the link to the segmentation whose result is in the attribute. The possible values are: - `true` - a profile belongs to the segmentation; - `false` - a profile left segmentation; - no attribute related to a given segmentation - the profile has never belonged to the segmentation. - the name of the workspace the source segmentation comes from - link and the ID to the process that updates the value of the membership attribute - the date of latest update of the attribute value - the same information as in sharing segmentatation to a single workspace - the source name of the membership attribute - display name of the membership attribute - description - status of attribute visibility across filters in the Synerise platform in a given workspace
Preview of membership attribute details shared across a workspace group, accessible in Behavioral Data Hub > Attributes > Membership attributes
Preview of membership attribute details shared across a workspace group, accessible in Behavioral Data Hub > Attributes > Membership attributes
1. Go to Behavioral Data Hub icon **Behavioral Data Hub > Attributes**. 2. On the left panel, select **Membership attributes**. ### Changing display name and description 1. In **Display name**, you can provide a user-friendly name of the membership attribute. This name will display in the [filters](/docs/analytics/i_profile-filter) in the Synerise platform. 2. In **Description**, you can provide a description for the membership attribute that explains the purpose of it to other workspace users. ### Changing membership attribute visibility To display or hide this attribute in the [filters](/docs/analytics/i_profile-filter) in the Synerise platform, use the **Show attribute** toggle. # Profile tags Profile tags is a feature that lets you create and manage tags which can be assigned to profiles (who can be found in the **Behavioral Data Hub**). This feature will help you effectively organize and group profiles, enabling precise targeting of specific profile segments. ## Tag management --- All profile tags you create are stored in **Behavioral Data Hub > Tags** in an alphabetical order. In this place, apart from creating new tags, you can also search for the tags, [edit](#editing-profile-tags) or [remove](#removing-profile-tags) them. ### Adding new profile tags You can create tags in the following ways: - On the interface of the Synerise platform: - [On the list of profile tags](#on-the-profile-tag-list) - [On the profile cards](#on-the-profile-cards) - With the [Create a tag API method](https://hub.synerise.com/api-reference/asset-management#operation/createTagUsingPOST) - When you create or update profiles with Imports or the API #### On the profile tag list 1. Go to Behavioral Data Hub icon **Behavioral Data Hub > Tags > Add tag**. **Result**: A pop-up appears. 2. In the **Tag name** field, enter the name of the tag you want to add. All characters are allowed. The limit for the tag name is 20 characters. 3. Optionally, you can change the color of the tag label by clicking the color picker next to the **Tag name** field and selecting the color. 4. Confirm the settings by clicking **Create**. **Result**: A tag appears on the list. It is available on the filter lists in Tags tab across the Synerise platform.
The example tag on the filter list in a segmentation
The example tag on the filter list in a segmentation
#### On the profile cards 1. Go to Behavioral Data Hub icon **Profiles**. 2. Open the card of any profile to whom you want to assign a tag. 3. On the left pane, under the personal information of a profile, in the **Tags** section, click **Add tag**. **Result**: A text field and list of tags appear. 4. Enter the name of the tag. **Result**: A dropdown list appears. If the tag doesn't exist yet, in the dropdown, you can also add the new tag directly from this place.
Adding a new tag on the profile card
Adding a new tag on the profile card
5. Click the **Add tag: {tag name}** button. **Result**: A pop-up appears. 6. In the **Name** field, you can change the name of the tag. 7. Optionally, using the color picker next to the **Name** field, define the label color. 8. **Deprecated**: Optionally, you can add a description to the tag in the **Description** field.
A blank form for adding a new tag on the profile card
A blank form for adding a new tag on the profile card
9. Confirm by clicking **Create**. **Result**: The tag is assigned to the profile and added to the profile tags in **Behavioral Data Hub > Profile tags**. The tag is available on the profile filter lists in Tags tab across the Synerise platform.
The example tag on the filter list in a segmentation
The example tag on the filter list in a segmentation
### Editing profile tags --- After creating a tag, you can only change its label color. It's impossible to change its name. 1. Go to Behavioral Data Hub icon **Behavioral Data Hub > Tags**. 2. Next to the name of the tag you want to edit, click Three-dot icon 3. From the dropdown list, click **Edit**. 4. Click the color picker and select a new color. 5. Confirm the changes by clicking **Apply**. ### Removing profile tags --- You can organize your tags by removing those which are unused. 1. Go to Behavioral Data Hub icon **Behavioral Data Hub > Tags**. 2. Next to name of the tag you want to edit, click Three-dot icon 3. From the dropdown list, click **Delete**. **Result**: A pop-up appears. 4. Confirm the action by clicking **OK**. **Result**: A tag is deleted from the list of profile tags and removed from all profiles who were assigned with this tag. ## Assigning tags to profiles --- You can assign tags to profiles: - **Manually** - This option lets you assign a tag to individual profiles. 1. Go to Behavioral Data Hub icon **Behavioral Data Hub > Profiles**. 2. Open the card of any profile to whom you want to assign a tag. 3. On the left pane, under the personal information of a profile, in the **Tags** section, click **Add tag**. **Result**: A text field and list of tags appear. 4. From the list, select the tag or [create a new one](#on-the-profile-cards). - **Through the Automation Hub** - This option lets you create workflows which either mass-assign tags to profiles or assign tags to them based on specific conditions, for example, when a profile performs a particular action. Such workflows must contain the ["Update Profiles node"](/docs/automation/actions/change-attribute-node) which assigns a specific tag defined in the node configuration to a profile that goes through a workflow. - When you create or update profiles with Imports or the API.
You can read the ["Send messages only to unique phone numbers"](/use-cases/double-phone-number) use case in which the Update Profiles node is used to tag profiles whose phone number is unique. This way, you can prevent sending the same message to the profiles who have the same phone number. This may happen when a person creates two accounts with different personal data but the same phone number.
# Creating expressions To create an expression based on mathematical formulas or calculations that becomes a customer attribute, follow the procedure.
Segmentation, expression, and aggregate definitions are cached for 20 minutes after a node with the analysis is activated in a journey.
When another journey in the Automation Hub requests a result of the same analysis in that period, the cached definition is used to calculate the results. This means that if you edit a segmentation, aggregate, or expression used in a workflow, it takes 20 minutes for the new version to start being used in journeys.
This includes definitions of segmentations, expressions, and aggregates nested in other analyses and used in Inserts.
## Requirements --- - A tracking code implemented into the website. ## Creating an expression ---
A blank expression
A blank expression
1. Go to Behavioral Data Hub icon **Behavioral Data Hub > Expressions > New expression**. 2. To let other users know about the purpose of the expression, you can add a short description to it. 3. To select the type of expression you want to create, click the Blue arrow icon. 4. From the dropdown list, select **Attribute**. In practice it means that you can use this expression in different types of analyses (for example, aggregates, funnels, and more). 4. To start creating the formula of the expression, click the **Select** button. 5. You can choose one of four elements: customer, constant, dynamic key, or a [function](/docs/crm/expressions/functions-in-expressions). 6. To define the settings of the chosen element, click that element. 7. In case you choose a customer, from the **Choose attribute** dropdown, select the customer attribute you want to include in the formula. 8. In case you choose a constant, type a number or text.
It's impossible to use `null` as an element of the condition. The `null` value entered as a string will not ensure a desired result.
9. In case you choose a dynamic key, type in the key name (the ID of the key, for example `orderID`) and its default value. The default value will be replaced with the target one indicated in, for example, the request for expression result (when you request the expression result through Synerise Analytics API). 10. Define the dependencies between the elements in the expression by selecting the mathematical operators. 11. To complete creating the expression, click **Save**. # Creating profile aggregates You can summarize a data set created on the basis of a selected event within a specified time range. This analysis includes profile context, allowing for displaying the result for an individual profile. Within the aggregate preview, you can select a profile identifier to view the results for that specific profile. Examples of what you can calculate with profile aggregates: - You can [calculate the number of visits of a profile on desktop](/use-cases/channel-preference#aggregate-returning-number-of-visits-on-the-desktop) and [in the mobile application](/use-cases/channel-preference#aggregate-returning-number-of-visits-in-the-mobile-application) to help you understand profile preferences of a communication channel. - You can [calculate the duration of the latest visit on the website](/use-cases/calculate-time-spent-on-website#create-aggregates). - You can create an aggregate which returns the SKU of an item recently purchased by a profile.
Segmentation, expression, and aggregate definitions are cached for 20 minutes after a node with the analysis is activated in a journey.
When another journey in the Automation Hub requests a result of the same analysis in that period, the cached definition is used to calculate the results. This means that if you edit a segmentation, aggregate, or expression used in a workflow, it takes 20 minutes for the new version to start being used in journeys.
This includes definitions of segmentations, expressions, and aggregates nested in other analyses and used in Inserts.
## Creating a profile aggregate ---
A blank configuration form of an aggregate
A blank configuration form of a profile aggregate
1. Go to Behavioral Data Hub icon **Behavioral Data Hub > Live Aggregates > Create aggregate**. 2. As the aggregate type, select **Profile**. 2. Enter the name of the aggregate. 4. By clicking the Expander arrow icon button next to **Analyze profiles by**, define the type of aggregate result. You can choose from: | Function | Description | Profile aggregate | Event aggregate | |---|---|:---:|:---:| | **Exists** | Returns a boolean value informing you whether a chosen event occurred in the selected time range. | Green checkmark | Green checkmark | | **Sum** | Returns the total value of an event parameter from all matching event occurrences. | Green checkmark | Green checkmark | | **Min** | Returns the minimal value of an event parameter. | Green checkmark | Green checkmark | | **Median** | Returns the value separating the higher half from the lower half. For example, if you examine the total value of purchases for a single profile, the aggregate returns the middle value of amounts spent. | Green checkmark | Green checkmark | | **Quantile** | Returns the value dividing the ordered statistical population into equal parts. For example, selecting the `80` quantile shows the value above which 20% of results are higher and the rest are lower. | Green checkmark | Green checkmark | | **Max** | Returns the maximal value of an event parameter. | Green checkmark | Green checkmark | | **Average** | Returns the average value of an event parameter. | Green checkmark | Green checkmark | | **Count** | Returns the number of event occurrences. | Green checkmark | Green checkmark | | **Count Distinct** | Returns the number of unique occurrences of an event parameter. | Green checkmark | Green checkmark | | **Last** | Returns the latest value of an event parameter. | Green checkmark | Green checkmark | | **Last - Time Window** | Works the same as Last, with the addition of a time window that limits results to event occurrences within a defined period. The maximum time window is 5 years. | Red checkmark | Green checkmark | | **First** | Returns the first value of an event parameter. | Green checkmark | Green checkmark | | **First - Time Window** | Works the same as First, with the addition of a time window that limits results to event occurrences within a defined period. The maximum time window is 5 years. | Red checkmark | Green checkmark | | **First Multi** | Returns a list (of a size you define) of items. The list can include parameters from only the first event, or from the first event and subsequent events if the first one did not contain enough items. | Green checkmark | Green checkmark | | **First Multi - Time Window** | Works the same as First Multi, with the addition of a time window that limits results to event occurrences within a defined period. The maximum time window is 5 years. | Red checkmark | Green checkmark | | **Last Multi** | Returns a list (of a size you define) of items. The list can include parameters from only the last event, or from the last event and preceding events if the last one did not contain enough items. | Green checkmark | Green checkmark | | **Last Multi - Time Window** | Works the same as Last Multi, with the addition of a time window that limits results to event occurrences within a defined period. The maximum time window is 5 years. | Red checkmark | Green checkmark | | **Top** | Returns the most popular occurrence of an event parameter. | Green checkmark | Green checkmark | | **Bottom** | Returns the rarest occurrence of an event parameter. | Green checkmark | Green checkmark | | **Top Multi** | Returns a list (of a size you define) of items, showing the most popular occurrences of an event parameter. | Green checkmark | Green checkmark | | **Bottom Multi** | Returns a list (of a size you define) of items, showing the least popular occurrences of an event parameter. | Green checkmark | Green checkmark | 5. From the **Choose event** dropdown list, select an event. 6. If you want to be more specific and analyze a particular aspect of the event click the **Where** button, to select [event parameters](/docs/analytics/i_events-parameter-value). 6. To determine the time range from which the data will be analyzed, click the calendar icon. 7. Optionally, if you want to show this aggregate on a customer card, switch the **Show in Profiles** option on. As an effect, you can check the results of the aggregate for a particular customer on a customer card.
List of analyses on the profile card
List of analyses on the profile card
8. To complete the process, click the **Save** button. # Adding profiles A profile is a comprehensive collection of all information about an entity, like a customer, that is gathered by the application. This includes personal details as well as a complete record of activity within the application and website, such as page visits or adding items to a shopping cart. The profile also includes information about the [segmentations](/docs/analytics/segmentations/introduction-to-segmentations) to which the profile belongs, [screen view campaigns](/docs/campaign/screen-views/introduction-to-screen-views) they are the audience of as well as results of the [expressions](/docs/crm/expressions/introduction-to-expressions) and [aggregates](/docs/crm/aggregates/introduction-to-aggregates). In addition, you can customize the profile view by adding a custom dashboard which can provide you with overview of purchases, page visits, distribution of purchased item categories, to name a few, for the individual profile. Furthermore, the profile serves as a hub for various actions to be taken, such as sending a message, [manually generating an event for a profile](/docs/crm/adding-events-in-customer-cards), adding tags, and more. ### Why do you need profiles in your workspace - having a register of all profiles interacting with your brand, whether they are anonymous or recognized, lets you better track of user interactions and help you build a comprehensive database, - to understand your audience by building segmentations which organize profiles in terms of similar qualities or behavior, - to measure performance of your campaign efforts by creating reports, metrics, trends, and so on, - to predict profile behavior, inclination to a purchase, best item for a profile, and compare two segments of customers and find those who display similar qualities of performance, - to create and send personalized messages and reach the right people with the right messages, - to improve the overall customer experience (for example, automated notifications and updates regarding order status, shipping, and delivery to keep profiles informed and engaged with their purchase) ## Profile status ### Anonymous An anonymous profile refers to data that doesn't contain identifiable information, such as names or contact details. These profiles represent visitors or users whose identities are unknown or haven't been captured yet. ### Recognized A recognized profile belongs to known individuals whose information has been captured. These profiles are associated with identified customers or prospects, enabling personalized marketing efforts based on their behaviors, preferences, and interactions. ## Profile identifiers By default, an email address is a unique identifier of a profile created in the Synerise app and it’s used to recognize customers. However, you may change this configuration, so the customID becomes the primary identifier in your workspace.
You can read more about establishing other identifiers for recognizing profiles in [Identifiers](/docs/settings/configuration/non-unique-emails)
You can find the list of identifiers in ["Identities and identifiers" section in the Profile overview article](/docs/crm/crm-profile#identities-and-identifiers). ## Methods of adding profiles - [Add manually](#adding-manually) - This method is recommended for adding single profiles. A profile you add is anonymous, unless you provide one of the identifiers which make a profile recognized. - [Import](/docs/assets/imports/importing-clients) - If you have already a database with profiles, you can import them to Synerise. - [Through a form submission](/developers/web/tracking-form-data) - When a profile submits a form, a profile is created or updated if it exists already in the workspace. - [Implementation of the tracking code](/developers/web/installation-and-configuration) - When you implement a tracking code into your website, the SDK assigns a UUID for anonymous users on your website, if they already have a UUID, it recognizes them. You can preview then both anonymous and recognized profiles on the list of the profiles.
You can learn more about a [method for recognizing already logged users](/developers/web/tracking-form-data/tracking-form-data-sdk#recognizing-already-logged-users)
## Adding manually
Adding a new profile
Adding a new profile
You can add a new profile to your database manually. 1. Go to Behavioral Data Hub icon **Behavioral Data Hub > Profiles**. 2. At the top of the list, click **Add new**. 3. From the dropdown list, select **Profile**. You can save a profile without any data at this stage and add them directly on the profile card. 4. Optionally, you can fill in the following fields: - email address, - first name, - last name 5. Optionally, you can add attributes (properties) to the profile you add: 1. Click **Add attribute**. 2. From the dropdown list, from the attributes available in your workspace, select the name of the attribute. 3. In the **Value** text field, enter the value of the attribute (for example, `New York` for the `City` attribute). 4. To add more attributes, click **Add attribute**. ### Defining attributes In this part of the process, you can create attributes, however, you are not allowed to create [reserved parameters](/docs/assets/imports/importing-clients#reserved-parameters). 6. Optionally, you can define new attributes. 1. Click **New attribute**. 2. In the **Source name** field, enter the name of the attribute as sent by the SDKs/API. 3. In the **Display name** field, enter a human-readable label for display in the Synerise portal. 4. Optionally, in the **Description** field, you can add an explanation about the purpose of this attribute. 5. From the **Type** dropdown list, select the format of the attribute value as sent by the SDKs/API. 6. Confirm by clicking **Save**.
Adding a new property
Adding a new property
**Result**: The attribute is available in **Behavioral Data Hub > Attributes**. 7. To save a new profile, click **Save**. # Creating event aggregates Event aggregates let you analyze an occurrence of an event and occurrences before it. These aggregates act like custom event parameters which can be used in filters. You can select the event aggregate in the filters (as a [property or value](/docs/analytics/i_events-parameter-value#synerise-objects)) of other analyses, allowing for its application to events beyond those included in the aggregate. There is no preview option for this type of aggregates. ### Example To illustrate this definition with a real-life example, let's examine the event aggregate below, which is generated from a `transaction.charge` event containing a transaction summary. This aggregate will be used in the condition of the segmentation to analyze the second transaction in the customer's history. The other condition in this segmentation is transaction value of over $500, allowing you to group customers with a second purchase value exceeding $500. #### Transaction count This aggregate runs from now to the past and stops at every occurrence of a `transaction.charge` event in order to return the total number of transactions made so far.
The configuration of an aggregate that returns the number transaction that have been made
The configuration of an aggregate that returns the number transaction that have been made
Now, you can use this aggregate in a segmentation to group customers whose value of the second transaction exceeds $500.
The configuration of a one-step funnel that filters in customers whose value of the second transaction exceeds $500
The configuration of a one-step funnel that filters in customers whose value of the second transaction exceeds $500
## Creating an event aggregate --- 1. Go to Behavioral Data Hub icon **Behavioral Data Hub Hub > Aggregates > Create aggregate**. 2. As the aggregate type, select **Event**. 2. Enter the name of the aggregate. 4. By clicking the Expander arrow icon button next to **Analyze events by**, define the function according to which events will be aggregated: | Function | Description | Profile aggregate | Event aggregate | |---|---|:---:|:---:| | **Exists** | Returns a boolean value informing you whether a chosen event occurred in the selected time range. | Green checkmark | Green checkmark | | **Sum** | Returns the total value of an event parameter from all matching event occurrences. | Green checkmark | Green checkmark | | **Min** | Returns the minimal value of an event parameter. | Green checkmark | Green checkmark | | **Median** | Returns the value separating the higher half from the lower half. For example, if you examine the total value of purchases for a single profile, the aggregate returns the middle value of amounts spent. | Green checkmark | Green checkmark | | **Quantile** | Returns the value dividing the ordered statistical population into equal parts. For example, selecting the `80` quantile shows the value above which 20% of results are higher and the rest are lower. | Green checkmark | Green checkmark | | **Max** | Returns the maximal value of an event parameter. | Green checkmark | Green checkmark | | **Average** | Returns the average value of an event parameter. | Green checkmark | Green checkmark | | **Count** | Returns the number of event occurrences. | Green checkmark | Green checkmark | | **Count Distinct** | Returns the number of unique occurrences of an event parameter. | Green checkmark | Green checkmark | | **Last** | Returns the latest value of an event parameter. | Green checkmark | Green checkmark | | **Last - Time Window** | Works the same as Last, with the addition of a time window that limits results to event occurrences within a defined period. The maximum time window is 5 years. | Red checkmark | Green checkmark | | **First** | Returns the first value of an event parameter. | Green checkmark | Green checkmark | | **First - Time Window** | Works the same as First, with the addition of a time window that limits results to event occurrences within a defined period. The maximum time window is 5 years. | Red checkmark | Green checkmark | | **First Multi** | Returns a list (of a size you define) of items. The list can include parameters from only the first event, or from the first event and subsequent events if the first one did not contain enough items. | Green checkmark | Green checkmark | | **First Multi - Time Window** | Works the same as First Multi, with the addition of a time window that limits results to event occurrences within a defined period. The maximum time window is 5 years. | Red checkmark | Green checkmark | | **Last Multi** | Returns a list (of a size you define) of items. The list can include parameters from only the last event, or from the last event and preceding events if the last one did not contain enough items. | Green checkmark | Green checkmark | | **Last Multi - Time Window** | Works the same as Last Multi, with the addition of a time window that limits results to event occurrences within a defined period. The maximum time window is 5 years. | Red checkmark | Green checkmark | | **Top** | Returns the most popular occurrence of an event parameter. | Green checkmark | Green checkmark | | **Bottom** | Returns the rarest occurrence of an event parameter. | Green checkmark | Green checkmark | | **Top Multi** | Returns a list (of a size you define) of items, showing the most popular occurrences of an event parameter. | Green checkmark | Green checkmark | | **Bottom Multi** | Returns a list (of a size you define) of items, showing the least popular occurrences of an event parameter. | Green checkmark | Green checkmark | 5. From the **Choose event** dropdown list, select an event. 6. In the **Size** field, define the number of items to return. 7. For Time Window functions (for example, **First - Time Window**), in the **Time window** field, enter a numeric value and select the interval (**days**, **hours**, or **minutes**). The maximum allowed time window is 5 years. 8. If you want to be more specific and analyze a particular aspect of the event, click the **Where** button, to select [event parameters](/docs/analytics/i_events-parameter-value). 9. To exclude the event occurrence for which you are calculating this aggregate, enable **Ignore the most recent occurrence of the event**. 10. To determine the time range from which the data will be analyzed, click the calendar icon. 11. To complete the process, click the **Save** button. # Editing profiles Keeping your profile information up to date is crucial for precise targeting of your campaigns and for providing excellent customer service. On the Synerise platform, you can update profile data in the following ways: - [editing a single profile](#editing-a-single-profile) on the profile card - [batch editing](#batch-editing) either on the list of profiles by selecting the profiles on the list or performing a profile import - [launching a workflow](#launch-workflow-updating-profiles) which updates profile information when specific conditions occur (for example, a profile submits a form or performs other activity). ## Editing a single profile --- Go to the details of a profile by clicking them on the list of profiles in the Behavioral Data Hub icon **Behavioral Data Hub**. This way, you can edit the following information: - profile information (in the **Profile info** section) such as: first name, last name, city, province; except birthdate - contact information (in the **Contact info** section) such as: telephone or email address - other information (in the **Other** section) such as: anonymous_type (status of the profile, it defined whether they are recognized or anonymous), avatar_url (which is the avatar that displays in the upper left corner), sex (defined by the following values: `0`, `1`, or `2`) - assign or remove [tags](/docs/crm/customer-tag) - enable or disable marketing agreements for email, SMS, mobile push, and web push (in the **Subscriptions** section). - [add manually event to the profile activity list](/docs/crm/adding-events-in-customer-cards) - assign a profile to a company Each change of an attribute generates a [`profile.updated` event](/docs/assets/events/event-reference/profiles#profileupdated) on the activity list on the profile card. Custom profile attributes and birthdate can be updated by [batch edit](#batch-editing) or [submitting a form by a profile](/developers/web/tracking-form-data). ## Batch editing --- By editing several or group of profiles at the same time, you can conveniently perform the same change or set of changes for a large amount of profiles, which saves your time. You can do it on the interface on the Synerise platform or through API. The scope of changes covers information described in [editing a single profile](#editing-a-single-profile) and custom profile attributes and brithdate. ### On the profile list ---
Editing on the profile list doesn't allow removing profile tags; to do so [launch a workflow updating profiles](/docs/crm/editing-profiles#launch-workflow-updating-profiles).
1. Go to Behavioral Data Hub icon **Behavioral Data Hub > Profiles**. 2. On the list of profiles, select the checkboxes next to the profiles which you want to edit. **Result**: The **Edit** button appears. 3. Click the **Edit** button. **Result**:
A pop-up which lets you update attributes and profile tags
A pop-up which lets you update attributes and profile tags
2. From the **Select tag or attribute** dropdown list, you can: - select an existing attribute or tag, - create a new profile attribute or tag by clicking **Add profile attribute** or **Add profile tag**, respectively. 3. From the **Action** dropdown, select an action: - The **Clear field** option removes the old value and leaves the attribute empty (`""`). This option is available only for default profile attributes such as `email`. - The **Update** option defines a new value for profiles' attributes.
Only static values are supported.
- The **Add** option adds the selected tag to profiles. - The **Remove** option deletes custom attributes. 4. For the **Change** option: Next to the action selection dropdown, enter a value that replaces the old value.
Only static values are supported.
5. Confirm the operation by clicking **Edit profiles**. ### Import profiles --- You can update your profiles' information by importing their data to Synerise. You can do it by: - launching a [profile import](/docs/assets/imports/importing-clients) - API request to [Batch add or update profiles](https://hub.synerise.com/api-reference/profile-management#tag/Profile-management/operation/BatchAddOrUpdateClients) ## Launch workflow updating profiles --- You can automatically update profile attributes in response to specific circumstances, for example, an action a profile performs. You can achieve it by creating a [workflow](/docs/automation/creating-automation) that contains the [Update Profile node](/docs/automation/actions/change-attribute-node). **Example of use**: - [Newsletter sign-up](/docs/settings/configuration/newsletter-sign-up) - [Voucher-based referral program](/use-cases/voucher-codes-share) # Filtering the list of profiles Filtering profiles is a feature that allows you to efficiently sort and preview profiles based on shared characteristics or similar behavioral patterns. For instance, you can narrow down the list to display profiles who made purchases within a specific time frame, visited particular pages, participated in promotional campaigns, and more.
Filtered profiles
Filtered profiles on the list
You can filter the profiles using the following methods: - selecting predefined filters on the left side of the screen: - recognized, - anonymous, - [test](/docs/settings/configuration/test-profiles), - all profiles from the list on the left, - one of 10 segmentations available on the list - the list contains the first 10 segmentations from the list of segmentations, but you can use the search box to find the one you want to use; - defining the filter conditions on the list of profiles - this way you can create a segmentation from scratch which uses any attribute or event to filter out a group of profile/companies who share the same quality. ## Predefined filters 1. Go to Behavioral Data Hub icon **Behavioral Data Hub > Profiles**. 2. At the top of the page, click **Recognized**.
Filtering out customers who visited a website last month
Filtering out customers who visited a website last month
3. Select an option. ## Defining filters from scratch 1. Go to Behavioral Data Hub icon **Behavioral Data Hub > Profiles**. 2. At the top of the page, click Filter icon **Filter**. **Result**:
Filtering out customers who visited a website last month
Filtering out customers who visited a website last month
3. Click the **Add condition** button. 4. Define the conditions by selecting events and/or attributes. 5. To narrow down the scope of data, you can use the date filters. 6. Confirm by clicking **Apply**. **Results**: The list presents the filtered results and the filter icon looks as follows: Filter icon
Read more information about building [segmentations](/docs/analytics/segmentations).
# Behavioral Data Hub The Behavioral Data Hub is your central repository for all data related to your profiles, such as customers. It combines essential information like contact details and profile tags with deeper insights including behavior patterns, purchase history, and segment memberships—giving you a complete view of each profile. This section now also includes: - A detailed list of profile attributes available in your workspace - An overview of profile tags used for categorization - Expressions to create custom calculations or logic based on profile data - Aggregates to summarize and analyze large sets of profile information Together, these tools help you manage and understand your profiles better, enabling more personalized and data-driven actions. ## Required user permissions See: - [Behavioral Data Hub permissions](/docs/settings/identity-access-management/permissions/profiles-permissions) - [Profile attribute permissions](/docs/settings/identity-access-management/permissions/profiles-permissions#manage-profile-attributes) - [Profile tags permissions](/docs/settings/identity-access-management/permissions/profiles-permissions#work-with-profile-tags) - [Aggregate and Expression permissions](/docs/settings/identity-access-management/permissions/analytics-permissions#create-analyses) # Previewing aggregates You can check the results of profile aggregates. 1. Go to Behavioral Data Hub icon **Behavioral Data Hub > Live Aggregates**. 2. On the list of aggregates, find the profile aggregate you want to check the preview of. 3. Click the aggregate. 4. Select the identifier of a customer for whom you want to see the results. **Result**: You get the preview of the aggregate: construction of the aggregate preview # Importing profiles To learn how to import profiles to Synrise, see the [Importing profiles](/docs/assets/imports/importing-clients) article. # Exporting profiles You can export profiles (both recognized and anonymous) from the Behavioral Data Hub along with the data you collected about them to a file. You can choose from the following file formats: - `CSV` - `JSON` - `JSONL` ### Scope of exported data You can export profiles with the following information: - ID of the profile (automatically added), - [profile attributes](/docs/crm/customer-properties): value of the attributes you select for export or `true`/`false` values for the [tags](/docs/crm/customer-tag) selected for export, - [aggregates](/docs/crm/aggregates/introduction-to-aggregates): result of the selected aggregates for every profile, - [expressions](/docs/crm/expressions/introduction-to-expressions): result of the selected expressions for every profile, - [segmentations](/docs/analytics/segmentations/introduction-to-segmentations): `true`/`false` values; true if a profile belongs to the segmentation, false if they don’t. ### Limits There are some limits you must follow: - You can export up to 10,000,000 profiles per a single export. - The file containing profiles cannot exceed 5GB in size. ### Export methods The export methods are divided in terms of export frequency: - [**Single export**](#single-export) - This method is recommended if you want to perform a one-off export of profiles and upload a file to your device. - [**Exports in Automation Hub**](#export-in-automation-hub) with a pre-designed, configurable workflow - This method is designed for: - one-off and cyclical exports which generate a file containing profiles and their data, which you can then download. - individual and cyclical exports of the file with profile data to the following external resources: - Your server (using SFTP or HTTPS protocols), - Azure, - Amazon S3, - Google Cloud Storage. - You need to configure these settings of the workflow: - Define the export frequency. - Choose the conditions profiles must meet to be included in the export. - Define rules for transforming the file (if needed). - Specify the export destination and its specifics. ## Prerequisites --- Only for **Exports in Automation Hub**: - If the exported data must follow specific requirements (for example, specific column names), create a [data trasnformation rule](/docs/automation/data-transformation-and-imports/creating-data-transformation). - You must be assigned with a [user role](/docs/settings/identity-access-management/permissions) with the following [permissions](/docs/settings/identity-access-management/permissions#permissions): - to preview the **Save File** node configuration: **Data export > Save file** - **Read** - to run and resume workflows containing the **Save File** node: **Data export > Save file** - **Execute** - to edit the **Save File** node configuration: **Data export > Save file** - **Edit** ## Single export --- ### Selected profiles This method is recommended if you want to perform a one-off export of several profiles. The process involves selecting profiles from the list and filling out export configuration form (defining the name of the file to which profile data will be exported and the scope of profile data for export). The `CSV` file will be available for downloading in **Data Modeling Hub > Exports**. 1. Go to Behavioral Data Hub icon **Behavioral Data Hub > Profiles**. 2. To select a profile for export, on the list, next to the profile name, select a checkbox. **Result**: The **Export selected** button appears. 3. Click **Export selected**. **Result**: A pop-up appears.
A pop-up with export configuration form
A pop-up with export configuration form
4. In the **Name** field, enter the name of the file to which the profile data will be exported. 5. Optionally, in the **File expiration** field, define how long the exported file will be available for download. - The minimum value is 30 minutes. - If you leave this field empty, a default expiration period of 7 days will apply. 6. In **Attribute values**, by clicking **Select attributes**, select profile attribute values you want to export. 7. In **Expression values**, by clicking **Select expressions**, select expressions whose results will be exported. 8. In **Aggregates values**, by clicking **Select aggregates**, select aggregates whose results will be exported. 9. To check if a profile belongs to selected segmentations, under Segmentations, click Select segmentations. Each selected segmentation creates a property with its name. These properties can be assigned a true or false value; - true if a profile is belongs to the segmentation, - false if they don’t. 10. Click **Next**. **Result**: A summary of export settings is shown. 11. To run export, click **Next**. **Result**: An export status pop-up appears. 12. To close the window, click **Done**. **Result**: The `CSV` file is available for downloading in **Data Modeling Hub > Exports**. ### All profiles --- This method is recommended if you want to perform a one-off export of all profiles. The process involves defining the name of the file to which profile data will be exported, selecting a group of profiles and the scope of data you want to include in the file. The `CSV` file will be available for downloading in **Data Modeling Hub > Exports**. 1. Go to Behavioral Data Hub icon **Behavioral Data Hub > Profiles**. 2. In the upper-right corner, click **Export**. **Result**: A pop-up appears.
Selecting the export type
You can select the export type
4. On the pop-up, select **Export single file**. 5. Confirm your choice by clicking **Next**. **Result**: An export configuration form appears.
Export configuration form
A blank export configuration form
5. In the **Name** field, enter the name of the export. It will help you identify the export on the list of exports. 6. Optionally, in the **File expiration** field, define how long the exported file will be available for download. - The minimum value is 30 minutes. - If you leave this field empty, a default expiration period of 7 days will apply. 2. Select profiles whose data you want to export. There is a limit of 10,000,000 profiles. You can export profiles in the following ways:
Select all recognized profiles

Click the Everyone tab. No further configuration is needed.

Select profiles who belong to specific segmentations
  1. To select profiles who belong to specific segmentations, click the Segments tab.
  2. Click Select segments.
  3. On the pop-up, next to the segmentations you want to include in export, select the checkbox.
  4. Confirm your choice by clicking Apply.
define conditions the profiles must meet to be included in export
  1. To define the conditions profiles must meet to be included in the export, click the Filter profiles tab.
  2. Click Define conditions.
  3. On the pop-up, click Add condition.
  4. You can build conditions based on events, profile attributes, expressions, aggregates, segmentations, and tags.
    You can read more about building conditions in the Filtering article.
  5. Confirm the conditions by clicking Apply.
3. To add attributes and profile tags whose values you want to retrieve, under **Attributes values**, click **Select attributes**. - Each attribute is exported as a property with an assigned value. - Each selected tag creates a property with its name. They can be assigned a `true` or `false` value; - `true` if a profile is assigned with the selected tag, - `false` if it isn't. 4. On the pop-up, select the attributes and profile tags. 5. To select expression values you want to retrieve, under **Expressions values**, click **Select expressions**. 4. On the pop-up, select the expressions whose values you want to extract. 5. To select aggregate values you want to retrieve, under **Aggregate values**, click **Select aggregates**. 4. On the pop-up, select the aggregates whose values you want to extract. 5. To check if a profile belongs to selected segmentations, under **Segmentations**, click **Select segmentations**. Each selected segmentation creates a property with its name. These properties can be assigned a `true` or `false` value; - `true` if a profile is belongs to the segmentation, - `false` if they don't. 4. On the pop-up, select the segmentations which you want to check. 5. After you finish filling out the export form, click **Next** and review the settings. **Result**: A summary of the export appears.
When you fill out the configuration form, you'll be presented with an export summary that shows you which profile information will be exported
When you fill out the configuration form, you'll be presented with an export summary that shows you which profile information will be exported
6. If everything is in order, click **Next**. 7. On the confirmation pop-up, click **Run export**. **Result**: You can see the export logs in **Data Modeling Hub > Exports**. You can download the file from there by accessing the **Save File** logs. ## Export in Automation Hub --- 1. Go to Behavioral Data Hub icon **Behavioral Data Hub > Profiles**. 2. In the upper-right corner, click **Export**. **Result**: A pop-up appears.
Selecting the export type
Users can select the export type
4. On the pop-up, select **Export in Automation**. 5. Confirm your choice by clicking **Next**. 6. From **Where do you want to export the file?**, select the place to which a file will be exported: | Destination | Explanation | |--------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ["Save File" node](/docs/automation/actions/synerise-integrations/save-file) | - The workflow will contain the Save File node.
- The file will be available in the export logs for download. | | **SFTP Server** | - The workflow will contain a [SFTP - "Send File" node](/docs/automation/integration/sftp-integrations/sftp-send-file).
- The file will be sent to your server using secure file transfer protocol.
- In further steps, you will be able to provide details such as the server address, port, path to the directory, the name of the file, and its format. | | **HTTPS Server** | - The workflow will contain a [HTTPS - "Send File" node](/docs/automation/integration/http-integrations/http-send-file).
- The file will be sent to your server using hypertext transfer protocol.
- In further steps, you will be able to provide details such as the server address, the name of the file and its format, request headers. | | **Amazon S3** | - The workflow will contain an [Amazon S3 - "Send File" node](/docs/automation/integration/amazon-s3-bucket/send-file-amazon-s3-bucket).
- The file will be sent to your Amazon S3 resource.
- In further steps, you will be able to provide details such as an address of the container, path to the directory, the name of the file, and its format. | | **Azure** | - The workflow will contain an [Azure - "Send File" node](/docs/automation/integration/azure-blob-storage/send-file-azure-blob-storage).
- The file will be sent to your Azure resource.
- In further steps, you will be able to provide details such as an address to the container, path to the directory, the name of the file, and its format. | | **Google Cloud Storage** | - The workflow will contain a [Google Cloud Storage - "Send File" node](/docs/automation/integration/google-cloud-storage/send-file-to-gcp).
- The file will be sent to your Google Cloud Storage resource.
- In further steps, you will be able to provide details such as an address of the container, path to the directory, the name of the file, and its format. | 7. Click **Go to workflow template**. **Result**: You are redirected to a workflow template.
An example workflow template for export before adjusting to the individual needs
An example workflow template for export to the Save File node before adjusting to the individual needs
8. To configure the **Scheduled Run** node, click the node. This node starts the workflow at defined data and frequency. Configure it according to the instructions available in ["Scheduled Run" node](/docs/automation/triggers/scheduled-run). 9. To configure the **Get Profiles** node, click the node. This node retrieves profiles who meet the requirements and profile date defined in the node. Configure it according to the instructions available in ["Get Profiles" node](/docs/automation/actions/synerise-integrations/get-profiles). 10. Optionally, if the file with exported profiles must be modified to meet specific requirements (for example, when you export the data to an external source and data in the file must meet specific nomenclature), configure the **Data Transformation** node by clicking it. - In the configuration of the node, select [data transformation rule](/docs/automation/operation/data-transformation-node) you prepared as a part of [prerequisites](#prerequisites) according to which the data in the file will be transformed. - If you don't need to transform the data, remove the node from the workflow. 11. Depending on the choice of the file export destination you made earlier in the process, configure one of the following nodes: - [Save file](/docs/automation/actions/synerise-integrations/save-file) - [SFTP - "Send File" node](/docs/automation/integration/sftp-integrations/sftp-send-file) - [HTTPS - "Send File" node](/docs/automation/integration/http-integrations/http-send-file) - [Amazon S3 - "Send File" node](/docs/automation/integration/amazon-s3-bucket/send-file-amazon-s3-bucket) - [Azure - "Send File" node](/docs/automation/integration/azure-blob-storage/send-file-azure-blob-storage) - [Google Cloud Storage - "Send File" node](/docs/automation/integration/google-cloud-storage/send-file-to-gcp) 11. Leave the configuration of the **End** node at default. If you edit the workflow template so it contains more than one [**End** node](/docs/automation/flow-control/end-node), then in the configuration of this node, you can define the logic of terminating paths and processes in a workflow. 12. Optionally, you can change the name of the workflow. 12. If you want to: - save the workflow as a draft, in the upper-right corner, click **Save**. - save and start the workflow, click **Save & Run**. ## Accessing the exported files --- To download the exported profile data: 1. Go to Data Modeling Hub icon **Data Modeling Hub > Export**. 2. On the list of exports, find your export. 3. Click the name of the export. **Result**: A pop-up appears.
A pop-up with export logs appear when you preview the log details; by clicking the arrow down icon, you can access the details of each stage
A pop-up with export logs appear when you preview the log details; by clicking the arrow down icon, you can access the details of each stage
5. On the pop-up, next to **Save File**, click the downwards arrow.
Download file button shows up
Download file button shows up
6. Click **Download file**. 7. From the dropdown list, select one of the following file formats: - `CSV` - `JSON` - `JSONL` 8. Confirm the action. **Result**: A file is downloaded to your device. # Customers with multiple profiles - merging profiles
**Upcoming breaking change (effective July 6, 2026):** Synerise is introducing changes to how user identifiers and UUIDs are handled. These changes may affect profiles with accented or diacritical characters in identifiers, profiles with leading or trailing whitespace in identifiers, and profiles with duplicate UUIDs. For details and recommended actions, see [Upcoming changes to handling identifiers](/docs/settings/configuration/identifier-standardization).
For information about forcing a profile merge with dedicated endpoints, see [Merging profiles with the API](/developers/api/clients/merging-profiles).
Sometimes, multiple profiles refer to the same customer. In that case, they need to be merged. In such cases, a number of _source_ profiles are merged into a _target_ profile. The source profiles are deleted after merging. In the cases described in this article, the system determines which profile is the target. If you want to force a particular profile to be the target, use the [dedicated merge endpoints](/developers/api/clients/merging-profiles). **Merging profiles is irreversible. The deleted profiles can't be recovered.** After the merge is complete, a [client.merge](/docs/assets/events/event-reference/profiles#clientmerge) event is saved to the target profile. ## Merging overview
Overview of the merging process
Overview of the merging process
1. A request that causes some kind of a profile update uses identifiers that match multiple profiles (**other than `clientId`**). In most cases, only two profiles are involved. 2. Data of all the matching profiles is pulled from the database. 3. The system determines the target profile automatically. If you want to force the selection of the target profile, use the [dedicated endpoints](/developers/api/clients/merging-profiles). 4. Data is moved from source profiles to the target profile. Attributes that don't exist in the target profile are copied. Properties and tags from source profiles are lost. See ["Properties, tags, and attributes"](#properties-tags-and-attributes). 4. Assign identities (UUIDs) to target profile. This connects the event history of the source profiles to the target profiles. 5. The source profiles are deleted. 6. The original update request is processed. ## Merge triggers Profiles may be merged when an update request includes **identifiers (other than `clientId`) of multiple profiles** in the following situations: - Profiles are imported with simple imports. - Profiles are imported with the ["Import profiles" Automation node](/docs/automation/actions/synerise-integrations/import-customers). - A POST request is made to `/v4/clients` - Profiles are updated with the batch create/update request (`/v4/clients/batch`), including multiple updates of the same profile. Each element of a batch request is processed separately. For example, if three objects in a batch cause a merge of a profile, the result is three subsequent merge operations. - Profile create/update requests are made by the Web SDK with the `sendFormData` method. - One of the following events is sent: - `client.login` - `form.submit` - `page.visit`, `screen.view`, `client.applicationStarted`: can only merge anonymous profiles ### Examples
1. A customer visited your site. An anonymous profile is created with an UUID. 2. In a mobile app, that customer created a profile with an email. 3. For some time, data and activity history is collected separately by the website and the app. 4. The customer provides the email in a form on the website (same email as in the app). 5. The Web SDK tries to update the profile (identified by the UUID from the browser) with new data (the email and other data from the form, if applicable). 6. In the database, there are two profiles that match the request - one identified by the UUID, the other by the email. 7. The system attempts to merge the profiles as described in this article.
1. You make a profile update request to the `/v4/clients/batch` endpoint with two identifiers that match two different profiles: ``` { "uuid": "88f40b29-5ba8-437b-ba9d-6d3b99dff80f", "email": "sampleclient@synerise.com" "attributes": {...} } ``` 2. The system detects that two profiles match the request, so they must be merged. 3. The system attempts to merge the profiles as described in this article.
You can use this endpoint to force a merge, but only with the [Allowed combinations](#allowed-combinations). We recommend using the [dedicated endpoints](/developers/api/clients/merging-profiles) instead.
### What if clientId is one of the identifiers? If you want to merge profiles by using `clientId`, you must use the [dedicated endpoints](/developers/api/clients/merging-profiles). ## Properties, tags, and attributes _Properties_ are the data stored **outside of the `attributes` object** of a profile's data: `clientId, email, phone, customId, uuid, firstName, lastName, displayName, company, address, city, province, zipCode, countryCode, birthDate, sex, avatarUrl, anonymous, agreements (object), tags (list)` _Attributes_ are the data stored in the `attributes` object. **When [non-unique emails](/docs/settings/configuration/non-unique-emails) are enabled, the profile's email and marketing agreement are attributes!** To see the properties and attributes of a profile, fetch its data with [`/v4/clients`](https://hub.synerise.com/api-reference/profile-management#operation/GetClientData). When profiles are merged: - All properties (including tags) of the source profiles are ignored and lost. - If an attribute already exists in the target profile, it's not modified. In this case, attribute values from the source profiles are lost. - If an attribute from a source profile doesn't exist in the target profile, it's copied into the target profile.
Moving data when merging
Moving data when merging
If the merge was caused by an update request, the request is processed like a regular update after the merge is complete and can modify the properties, tags, and attributes of the target profile.
## Identities and event history UUIDs (including historical UUIDs) of the source profiles are added to the historical UUIDs of the target profile. Thanks to this, events of source profiles become associated with the target profile.
Moving identities and events when merging
Moving identities and events when merging
The identities (UUIDs) can be found on the profile's card:
Location of the Identities list on a profile's card
Location of the Identities list on a profile's card.
## Allowed combinations To prevent data loss, profiles from some groups cannot be merged into other groups. A recognized profile can never be a source when the target is anonymous. If the merge would result in a merge that's not allowed, the operation is cancelled. Profiles aren't merged and data from the original update request is ignored. | Column: target
Row: source
| To: Anonymous | To: Has email, recognized | To: Has custom ID, anonymous | To: Has custom ID, recognized (non-unique emails enabled) | | --------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------------------- | | From: Anonymous | Green checkmark | Green checkmark | Green checkmark | Green checkmark | | From: Has email, recognized | Red checkmark | Red checkmark | Red checkmark | Green checkmark1 | | From: Has custom ID, anonymous | Red checkmark | Red checkmark | Red checkmark | Red checkmark | | From: Has custom ID, recognized | Red checkmark | Red checkmark | Red checkmark | Red checkmark | 1See [Special case - email conflict](#special-case---email-conflict) ### Special case - email conflict **This can happen only when non-unique emails are disabled.** If a profile A (is recognized, has email) is merged into a profile B (is recognized, has custom ID) that also has an email, the email from A is lost, because properties are not transferred from source profiles to the target profile. **Exception**: If the update operation that caused the merge included the email from A as the identifier, the mail from A is retained. This is because the update operation is resumed after the merge, so the email from the update request (which is now treated as a regular update of B) is saved into the profile after the merge. # Adding events in profiles You can generate events manually directly in a profile. It's useful in situations when you want to change event parameters, but cannot do it in an automated way. An example of use is correcting the loyalty points when a customer submits a complaint, products are returned, and there is a need to return to the amount of points before the purchase. ## Prerequisites --- A tracking code implemented into the website.
Customer profile card in Behavioral Data Hub showing the section where custom events can be added manually
A section of a profile
1. Go to Behavioral Data Hub icon **Behavioral Data Hub > Profiles**. 2. Find a target profile. To make it faster, you can use the search box. 3. Go to the profile by clicking its name. 4. At the bottom of the activity list, click the Add event button button. 5. From the dropdown list, select an event to add to the profile by ticking the checkbox next to the name of the event. The list contains all tracked events.
You can find the whole list of the events and their parameters in Data Modeling Hub icon **Data Modeling Hub > Event List**.
6. Confirm your choice by clicking the **Save** button.
**Result:** A pop-up opens. The basic parameters of the event are added automatically. 7. You can add other event parameters as well by clicking the **+ Add field**. 8. Enter the name and value for the added parameter. If you add a parameter that does not exist in the system, it is added to the event's configuration system-wide. 9. To complete the process, click the **OK** button.
**Result:** An event appears on the activity list. # Adding aggregates to analytics dashboards When you create an analytical dashboard, you can add all types of analytics. ## Adding existing aggregates 1. Go to Decision Hub icon **Decision Hub > Dashboards > Add dashboard**. 2. Click the Aggregate icon icon on the dashboard. 3. Select from the list the aggregate you want to add. ## Adding a new aggregate 1. Go to Decision Hub icon **Decision Hub > Dashboards > Add dashboard** 2. Click the Aggregate icon icon on the dashboard. 3. Select the option **Create new** at the bottom of the list. 4. Follow instructions in [Creating profile aggregates](/docs/crm/aggregates/creating-profile-aggregates). # Creating event expressions You can create an event expression to enrich its parameters while creating different types of analyses (for example, metrics, segmentations, funnels, and so on). This means that you can use the result of the event expression as a special parameter of an event in other types of analytics.
You can use these expressions as event parameters for events in the remaining types of analyses (for example, segmentations, metrics, funnels, and so on).
## Requirements --- A tracking code implemented into the website. ## Creating an event expression --- 1. Go to Behavioral Data Hub icon **Behavioral Data Hub > Expressions > New expression**. 2. To let other users know about the purpose of the expression, you can add a short description to it. 3. To select the type of expression you want to create, click the Blue arrow icon icon. From the dropdown list select **Event**. 4. From the **Choose event** dropdown, select an event. 5. To start creating the formula of the expression, click the **Select** button. 5. You can choose one of four elements: customer, constant, dynamic key, or a [function](/docs/crm/expressions/functions-in-expressions). 6. To define the settings of the chosen element, click that element. - In case you choose a customer, select the customer attribute you want to include in the formula. - In case you choose a constant, type the number or text (users can write a number in words, `nine` instead of `9`). - In case you choose a dynamic key, type in the key name (the ID of the key, for example `orderID`) and its default value. The default value will be replaced with the target one indicated in, for example, the request for expression result (when you request the expression result through Synerise Analytics API). 10. Define the dependencies between the elements in the expression by selecting the mathematical operators. 11. To complete creating the expression, click **Save**. ## Example of use --- **Goal**: To create a metric that counts liters of sold liquid products. **Prerequisites**: Non-standard attributes for **bought product** event: `product quantity` and `product volume`. Instruction for adding event parameters available at the [link](/docs/assets/events/adding-event-parameters). **Steps**: 1. Go to Behavioral Data Hub icon **Behavioral Data Hub > Expressions > New expression**. 2. Enter the name of the expression.
The name of the event expression becomes also the name of the parameter of the event.
2. Select **Event** as a type of expression. 2. From the **Choose event** dropdown, select the `Bought products` event. 4. Click the **Select** button. **Result**: A dropdown list appears. 6. From the dropdown list select **Event attribute**. 5. To display the settings of the event attribute, click it. 6. From the **Choose parameter** dropdown, select `quantity`. 7. Next to the added event attribute, click the plus button. **Result**: A dropdown list appears. 8. From the dropdown list, select **Event attribute**. 9. To display the settings of the event attribute, click it. 10. From the **Choose parameter** dropdown, select `volume`. 11. Multiply those two attributes, by selecting the multiplication sign between two event attributes. 12. To complete, click **Save**.
A final form of an expression
A final form of an expression
1. Go to Decision Hub icon **Decision Hub > Metrics > New metric**. 2. Enter the name of the metric. 3. As a type, select **Simple metric**. 3. As the aggregator, set `Count`. 4. As the occurrence type, set `All`. 5. From the **Choose event** dropdown list, select `Bought product`. 6. Click where icon button. **Result**: The **Choose parameter** button appears. 7. Click the **Choose parameter** button. **Result**: A pop-up appears. 8. On the pop-up, click the three-dot button. **Result**: A dropdown shows. 9. From the dropdown, select **Expressions**. 10. In the list of expressions, find the event expression you have just created. 11. To select a specific time range, click the calendar icon. Confirm your choice with the **Apply** button. 12. To complete the process, click **Save**.
A final form of a metric
A final form of a metric
**Output**: The metric counts the number of liters of purchased products in the form of a liquid from 6th of May to 6th of June. In this example, the number of purchased products is changeable, however, the product capacity is always the same and sourced from the product feed. # Creating event expression for reports You can create an event expression that extracts a data from a timestamp and use them in reports to gain a time-related information for an analysis. ## Requirements --- A tracking code implemented into the website. ## Creating event expression for reports ---
Expression wizard
Expression wizard
1. Go to Behavioral Data Hub icon **Behavioral Data Hub > Expressions > New expression**. 2. Enter a name of the expression. 3. Optionally, you can let other users know about the purpose of the expression by writing a short description. 4. Define the kind of expression you are creating by selecting the **Events** option. To do so, click the Blue arrow button. 5. Select an event to analyze.
When applying an expression to a metric, the event in the expression must be the same as the event in the metric.
5. In the formula definition, click the **Select** button and on the dropdown list hover the mouse cursor over the **Function**. 6. Scroll down to options: - To timestamp - To convert the format of the timestamp to a universal format (ISO). - Day of month - To extract the number of the day in a month when an event occurred. - Day of week (1 stands for Monday, 7 for Sunday) - To extract the day of the week when an event occurred. - Day of year - To extract the day of the year when an event occurred. - Hour (0-23 format) - To extract an hour when an event occurred. - Week - To extract the number of the week when an event occurred. - Month - To extract the number of the month when an event occurred. - Year - To extract the number of the year when an event occurred. 7. Click the **Select** button in brackets and from the dropdown list, select **Event attribute**. As a result, an unnamed event attribute appears in brackets. 8. Open the settings of the unnamed attribute by clicking it. 9. To define the event attribute from which the date is extracted, click the **Choose parameter** button and use the search engine to find `TIMESTAMP`. 10. To complete the process, click the **Save** button. # Functions in expressions Functions allow you to perform mathematical operations on the values received from customer attributes or events. Many of those functions duplicate the functions that you can find in programs such as Excel. ## Abs --- It returns the absolute value of the results of a customer attribute or event. In cases when you want to convert a negative number, you may use absolute value to obtain a positive number in an expression. ## Add years --- This function returns a date, ahead of the given date by the number of given years **USE CASE**: *Check whether customers reached the legal age of adulthood.*
construction of the Add years formula
The construction of the Add years formula - stage 1
1. Add the `Add years` function that allows you to perform mathematical operations with regard to dates.
construction of the Add years formula
The construction of the Add years formula - stage 2
2. Then, place the `Now` function within the `Add years` function. In the next field, type in the number which you want to deduct from the current date (year), so you can verify if the customer is of legal age. In some countries, citizens who are 18 years old are considered adults, so in order to deduct 18 years from the current date, we entered `-18`. To complete the process, click the **Save** button.
construction of the Add years formula
The construction of the Add years formula - stage 3
3. Create a segment that consists of adult customers. Such segmentation needs to comprise of 2 steps. In the first step, use `birthdate` as the customer attribute and `Less than` as a logical operator. Then select the expression, which you created in previous steps, as the value of the `Less than` operator. In the second step, you need to select adult customers among those whose date of birth is available on the contact card. Use `birthdate` as the customer attribute in the second step. Then, determine its value as `true`. Between step 1 and 2 use `AND` as a logical operator. ## Ceil --- Ceiling rounds up the results of expression (e.g. 4.01 will be rounded up to 5). ## Exp --- The exponential function is a mathematical function denoted by f(x) = exp(x) or ex (where the argument x is written as an exponent). Therefore, the Exp function returns the result of e to the power given in the brackets. ## Floor --- This function rounds down the results of expressions (e.g. 4.99 will be rounded down to 4). ## IfNull --- This function checks if a given value is null (empty or undefined). If it is, the function returns a specified alternative value; otherwise, it returns the original value. This is useful for handling missing or undefined data. **Syntax**
IfNull function syntax
IfNull function syntax
1. The value in the node labeled 1 is checked. If it is not empty or undefined, this value is returned. 2. If the value in node 1 is empty or undefined, the alternative value in node 2 is returned instead. **Example**
IFNULL expression in Decision Hub checking the firstname attribute for null and returning No name as the fallback value
Example of use
The value of the `firstname` attribute is checked. If it is not empty or undefined, that value is returned; otherwise, `No name` is returned. ## Ln --- This function returns the natural logarithm of a given number. ## Max --- This function returns the highest value in a set of values. ## Min --- This function returns the lowest value in a set of values. ## Mod --- This function returns the remainder after division of one number by another The result has the same sign as the divisor. ## Round --- This function rounds the expression value to an integer number. According to mathematical principles, values from 01 do 49 are rounded down and values higher than 49 are rounded up. ## If --- Allows logical comparisons between values. The system creates the desired structure automatically when you select this function.
construction of the If formula
The construction of the If formula
1. After you choose the If function, the expression will be constructed in the specific pattern explained points 2-5. 2. The first field in the brackets is taken by the condition that needs to be met, if you want a specific action to happen (**3**). In this case, the condition consists of the segment of customers who made a purchase on the current day. 3. The next place is taken by the expression that is executed when the condition is met/is true (**2**). In this example, the expression `Last transaction` will be the subject of action. If the condition is true, the value of the last transaction will be multiplied by the number in the next field (**4**). 4. This place is taken by the value which will be considered if the condition (**2**) is true. In this example, the value of the last transaction in the current day will double. 5. This place is taken into consideration if the condition (**2**) is false. If the condition is false, the value of the expression will be equal 0.
You can extend the conditions, include analytics and add subsequent functions to expressions.
## Equals --- It allows you to check if two values are equal. Returns `true` if they are. ## Greater --- This function checks if the first given value is larger than the second one. Returns `true` if it is. ## Greater or equals --- This function checks if the first given value is larger than or equal to the second one. Returns `true` if it is. ## Less --- This function checks if the first given value is smaller than the second one. Returns `true` if it is. ## Less or equals --- This function checks if the first given value is smaller than or equal to the second one. Returns `true` if it is. ## Not equals --- This function allows you to check if two values are different. Returns `true` if they are. ## Now --- This function allows you to insert the current date or time to your formula. ## To string --- This function allows you to convert the result of an expression to a string. ## To number --- This function allows you to convert the result of an expression to a numerical value. ## To money --- The function rounds to the second decimal place. - If the third decimal place is `>= 5`, it's rounded up, for example: - `1.006` becomes `1.01` - `5.005001` becomes `5.01` - `0.0050000` becomes `0.01` - If the third decimal place is `< 5`, it's rounded down, for example: - `0.004` becomes `0.00` - `2.0049` becomes `2.00` #### Example You can create an [event expression](/docs/crm/expressions/creating-event-expression) for `product.buy` event which converts the parameter value that contains the item price to the money data type.
An event expression with To money function
An event expression which converts the $regularPrice parameter to the money data type
This [event expression](/docs/crm/expressions/creating-event-expression) is useful for building a [profile aggregate](/docs/crm/aggregates/creating-profile-aggregates) that uses the **Max** function to return the price of the most expensive item a customer has purchased in a selected period. By using this [event expression](/docs/crm/expressions/creating-event-expression) instead of a regular event parameter in this aggregate, you avoid treating item prices as strings, which could lead to inaccurate analysis results.
An event expression with To money function
An profile aggregate that returns the value of the priciest purchased item; the aggregate uses the event expression as an event parameter
## To date --- This function converts an ISO date-time string (for example, `2024-11-15T18:00+05:00` or `2024-11-15T18:00Z`) value into a value that's only a date (`2024-11-15`). The date doesn't have any timezone and the original timezone of the string is ignored when converting into a date. You can use this function to create expressions whose results will be used in other analyses (for example, segmentations) without consideration of the original timezone of the attribute that was converted to a date - the analysis will treat the date as being in the timezone of the workspace. ## To timestamp --- A timestamp is a sequence of characters or encoded information identifying when a certain event occurred. Because timestamps may take various formats, you can use this function to convert a date (for example, `2024-11-19`) into a timestamp in the ISO8601 format with the timezone of the workspace (for example, `2024-11-19T01:00:00+01:00`). Later, you can perform actions on dates. It is especially useful when you want to use a [time dimension](/docs/crm/expressions/event-expression-for-reports) in reports. You can also use this behavior to recalculate date-times from different timezones into the timezone of the workspace. For example, `2024-11-20T01:30:00+09:00` becomes `2024-11-19T17:30:00.000+01:00` in a workspace whose timezone is `+01:00`. ## Concat --- This function joins two or more strings together and returns the joint string as the result. ## Regexp --- This function lets you search for a phrase which matches the pattern defined by a regular expression in an event parameter, customer attribute, dynamic key, or a constant value.
For an example of using regex in practice, see the ["Change date format for analytics"](/use-cases/change-date-format) use case.
The Regexp function syntax looks as follows:
The Regexp function broken down into syntax components
The Regexp function broken down into syntax components
1. In the `1` node, you select an event parameter, customer attribute, dynamic key in which the system will search for the pattern. 2. In the `2` node, you select the **Constant** option and enter the regular expression formula.
Example
Example regexp function
In the example above, values of the `$sku` parameter of the `product.buy` event will be searched through for phrases starting with `123-` and followed by at least one character. ## Day of month --- This function returns the day of the month.
The construction of the Day of month formula
The construction of the Day of month formula
Use this function in [event expressions](/docs/crm/expressions/creating-event-expression). Later you can use them as a dimension in [reports](/docs/analytics/reports/creating-reports).
Expression with the Day of month formula used as dimension in reports
Expression with the Day of month formula used as dimension in reports
## Day of week --- This function returns the day of the week in the form of a number (values from 1 [*Monday*] to 7 [*Sunday*]).
The construction of the Day of week formula
The construction of the Day of week formula
Use this function in [event expressions](/docs/crm/expressions/creating-event-expression). Later you can use them as a dimension in [reports](/docs/analytics/reports/creating-reports).
## Day of year --- This function returns the number of the day of the year (values from 1 to 366).
The construction of the Day of year formula
The construction of the Day of year formula
Use this function in [event expressions](/docs/crm/expressions/creating-event-expression). Later you can use them as a dimension in [reports](/docs/analytics/reports/creating-reports).
## Hour --- This function returns the hour (values from 1 do 23).
The construction of the Hour formula
The construction of the Hour formula
Use this function in [event expressions](/docs/crm/expressions/creating-event-expression). Later you can use them as a dimension in [reports](/docs/analytics/reports/creating-reports).
## Week --- This function returns the number of week in a year (values from 1 to 52).
The construction of the Week formula
The construction of the Week formula
Use this function in [event expressions](/docs/crm/expressions/creating-event-expression). Later you can use them as a dimension in [reports](/docs/analytics/reports/creating-reports).
## Month --- This function returns the number of the month (values from 1 to 12).
The construction of the Month formula
The construction of the Month formula
Use this function in [event expressions](/docs/crm/expressions/creating-event-expression). Later you can use them as a dimension in [reports](/docs/analytics/reports/creating-reports).
## Year --- This function returns the year (e.g. 2018).
The construction of the Year formula
The construction of the Year formula
Use this function in [event expressions](/docs/crm/expressions/creating-event-expression). Later you can use them as a dimension in [reports](/docs/analytics/reports/creating-reports).
# Versioning expressions Expression versioning allows you to save modifications to existing expressions as their subsequent versions. This way, you can track the changes made to expressions and return to previous versions when needed. Changes to expressions can be saved in a draft mode as well.
Expression versioning is applicable only to the existing expressions.
Version selector bar in Decision Hub expressions allowing users to switch between saved versions of an expression
Choosing a version of an expression
1. To access an expression, go to Behavioral Data Hub icon **Behavioral Data Hub > Expressions**. 2. Click the chosen expression. 3. Make the changes to the expression. - To save the changes as a draft, click the **Finish later** button. - If you want to publish the changes, click the **Publish** button. - If you want to go back to the previous version: 1. In the right upper corner, click the Expression version icon icon. 2. On the list of versions, find the one you want to restore. 3. Hover the mouse cursor over the version and click the Three-dot icon icon icon. 4. From the dropdown list, click either the **Publish** (to restore the other version of the expression) or **Edit** (to make changes to other version of the expression) button.
All analytics that contain expressions use the published version of the expression. When the expression version is changed, the analytics that contain them are updated automatically.
The list also contains drafts of the expression versions. They are not differentiated from the older, published versions of the expression.
# Removing aggregates When you don't need an aggregate, you can delete it from the system. 1. Go to Behavioral Data Hub icon **Behavioral Data Hub > Live Aggregates**. 2. Click the Three dot icon icon available on the aggregate you want to remove.
The removal will affect any analytics dashboards you've added the aggregate to as well as any nested analysis that this aggregate is a part of.
3. From the dropdown, select the **Delete** option. # Previewing expressions You can check the results of an expression. Because expressions are analyses counted individually for every customer, you must indicate the identificator of a customer to see the result of an expression.
preview of the expression
Preview of an expression
1. Go to Behavioral Data Hub icon **Behavioral Data Hub > Expressions**. 2. On the list of expressions, find the expression you want to preview. 3. Click the expression. 4. To switch on the preview mode, click the **Preview analyze** button. 5. To choose a customer for whom you want to analyze the expression: - Click the search engine. - Enter the email address of a customer. - Optionally, you can change the search attribute for a tag, city or phone number. # Adding expressions to analytics dashboards When you create an analytical dashboard, you can add all types of analytics to it. ## Adding existing expressions 1. Go to Decision Hub icon **Decision Hub > Dashboards > Add dashboard**. 2. Click the Expression icon icon on the dashboard. 3. From the list, select the expression you want to add. ## Adding a new expression 1. Go to Decision Hub icon **Decision Hub > Dashboards > Add dashboard**. 2. Click the Expression icon icon on the dashboard. 3. At the bottom of the list, Select the **Create new** option. 4. Follow the steps in the procedure described [here](/docs/crm/expressions/creating-expressions). # Deleting profiles Managing profiles in a workspace is crucial for keeping data accurate. You must also delete old or unnecessary profiles to maintain data hygiene and comply with regulations. This helps protect customer trust and loyalty. You can delete profiles using the following methods: - [On the profile list](#on-the-profile-list) - From the profile list, you can select the profile which you want to delete - [Launching a workflow](#launching-a-workflow) - You can set up an automated process to delete profiles based on specific conditions, such as when a customer requests to delete their account. - Through an API request - By making a request to the [Delete a profile](https://hub.synerise.com/api-reference/profile-management#tag/Profile-management/operation/DeleteAClient) endpoint.
Deleting profiles is irreversible.
## On the profile list --- This method lets you conveniently single out several profiles for deletion. 1. Go to Behavioral Data Hub icon **Behavioral Data Hub > Profiles**. 2. On the list of profiles, select the checkbox next to the name of the profile. **Result**: The **Delete** button appears. 3. Click the **Delete** button. **Result**: A pop-up appears. ## Launching a workflow --- This method allows you to establish automated processes for deleting profiles, for example when they receive an event after a customer deletes their account on your website, or for groups of profiles that meet a filter. In such case, you must [create a workflow](/docs/automation/creating-automation) that contains the [Delete Profile node](/docs/automation/actions/delete-profile). # Loyalty point count expression This expression can be used for [Promotions for selected items](/docs/ai-hub/promotions/creating-promotions). It allows you to check whether customers gathered enough loyalty points to use the promotion. ## Requirements --- - Paste the tracking code to the website source. If you want to create exactly the same expression as described in this article, you need to: - Create an analysis that counts a daily number of transactions. - Create an analysis that counts the sum of the product value. - Create an analysis that checks whether the customer is blocked. - Create an analysis that checks whether the customer is in a segmentation for the VIP customers. - Create an analysis that counts the number of boosted products. - Create an analysis that counts the value of boosted products.
It's best to use either [aggregates](/docs/crm/aggregates/creating-profile-aggregates) or [expressions](/docs/crm/expressions/creating-expressions) for this purpose.
## Description ---
Stage 1 of the creating expression
Stage 1 of creating the expression
1. The `If` function is the starting point of the analysis. The formula of this function includes three elements. The first element defines the condition, the second defines what happens it the condition is met, the third one defines what happens if the condition isn't fulfilled.
Stage 2 of the creating expression
Stage 2 of creating the expression
2. The condition is defined - the `Less than` function is used and it specifies that the number of transactions cannot be larger than 10.
Stage 3 of the creating expression
Stage 3 of creating the expression
3. The **If true** section consists of 3 expressions (formulas).
Stage 4 of the creating expression
The structure of Expression 1
- Sum of product value is the total value of products in one transaction. This calculation is possible due to a dynamic `orderID` parameter which is used in the analysis. The analysis counts the products which were not excluded nor canceled. The transaction value is multiplied by 5. The result of multiplication is multiplied by the expression that checks if the customer is blocked (if the customer is blocked, the result of the expression is 0, if not, it's 1).
Stage 5 of the creating expression
The structure of Expression 2
- The result of the first expression is multiplied by the result of the second expression. The second expression uses the `If` function to check whether the customer belongs to a special group. If so, the expression returns 1, if not it's 0.
Stage 6 of the creating expression
The structure of Expression 3
- The third expression contains two functions. It begins with the `If` function which checks the number of boosted products. The `If` function contains the `Less or equals` function to check if the number of boosted products exceeds a specific number (in this case 2). If it's equal or less than 2, then the prices of those products are rounded and multiplied by 10. If the number of boosted products is 3 or more, the product prices are multiplied by 0.
Stage 6 of the creating expression
The final form of the expression
4. Define the **If false** section. If the conditions of `If` function are not met (in this example, if the number of daily transactions is higher than 11), the result of the whole expression is 0. 5. To complete the process, click **Save**. # Live Aggregates An aggregate is a summarized data about a selected event from a specified time range. You can determine the desired output – whether it is the latest or first value for a particular event parameter, median, average, sum, minimum, maximum, and more. In Synerise, you can create the following aggregate types: - [**Profile**](/docs/crm/aggregates/creating-profile-aggregates) - Profile aggregates include customer-context, allowing for displaying the result for individual customer. Within the aggregate preview, you can select a customer identifier to view the results tailored for that specific customer. - [**Event**](/docs/crm/aggregates/creating-event-aggregates) - Event aggregates let you analyze an occurrence of an event and occurrences before it. These aggregates act like custom event parameters which can be used in filters (as a [property or value](/docs/analytics/i_events-parameter-value#synerise-objects)). Event aggregates can be applied to filters with different events than the event in the aggregate, which can help you create complex analyses. Aggregates serve more than just analytical purposes; they are essential components within larger use cases and complement other Synerise features, such as Predictions and AI recommendations. The table below showcases what you can do with aggregates: | Purpose | Practical examples | Aggregate type | |-----------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------| | Simple analysis | - [Discover a customer's preferred channel](/use-cases/channel-preference)
- Discover a customer's preferred category
- [Calculate duration of the latest session](/use-cases/calculate-time-spent-on-website) | Profile | | Complex analysis | - [RFM analysis](/use-cases/rfm-analysis)
- [Dashboard for a call center that contains transaction statistics](/use-cases/customer-dashboard-call-center#create-aggregates) (for example, name of the product purchased the most recently, transaction value, number of transactions, and so on) | Profile | | Providing context for AI features | - [Recommendation of similar products filtered by favorite category of a customer](/use-cases/dynamic-content-item-context-recommendation) (the favorite category is provided by the aggregate result)
- [Recommendation boosted by the results of AI prediction for best brand for a customer](/use-cases/bestfit-brand) (results of the prediction are retrieved from an aggregate) | Profile | | Creating custom event parameters | - Gather a group of customers whose average transaction value exceeds $500 after second visit in the store
- Calculate recommendation revenue after the first click within 24 hours
- [Count transactions attributed to a triggering action within a defined time window](/use-cases/time-window-event-attribution) | Event | ## Contents # Removing expressions If you don't need an expression anymore, you can remove it from the application.
The expression will be removed permanently.
1. To remove an expression, go to Behavioral Data Hub icon **Behavioral Data Hub > Expressions**. 2. On the list of expressions, find the expression you want to remove.
The removal will affect the analytics dashboards which include this expression and other types of analytics this expression is used in.
3. Click the Three-dot icon= icon on the right side and select the **Remove** option on the dropdown list. # Expressions Expressions allow you to create your own indicators based on mathematical formulas or calculations for both profiles and events and use them as custom attributes. Expressions for events work as event attributes while expressions for customers work as profile attributes. ## Business benefits - Expressions are a great tool for building loyalty programs and scoring structures. Expressions for attributes will perform perfectly well in this role. Thanks to this, you can award points and bonuses to your profiles if they perform a specific action. - Expressions are helpful with building custom profile attributes which values are calculated in real time. ## Example use cases --- - [Earn and Burn - Exchange points for rewards](/use-cases/earn-burn) - [Creating event parameters out of event expressions](/use-cases/multi-params-expression) - [Calculating Customer Age from Birthdate Attribute](/use-cases/age-calculation) ## Contents