This document provides information on creating a target based on behavioral events.
Behavioral events are a way using which brands track the behavioral properties of their customers. For example:
- Whether a user has updated the profile picture?
- Whether a user has provided the product review?
- Whether a user has walked 5000 steps?
Using the milestones, brands can track these behavioral events and reward their users. For example:
- Give 100 points to the user for updating the profile picture 2 times a month.
- Give a $1 coupon to the user for giving 3 product reviews in a quarter.
- Give a fitness badge to the user for walking 5000 steps in 2 days.
Note
Unlike targets such as QUANTITY, SALES, GROSS_SALES, REGULAR_POINTS, PROMOTIONAL_POINTS,
ALL_POINTS, EXTENDED_FIELD, where the user has to make 3 API calls (target-group, period, and target) to create a single target, the behavioural type of targets can be created using a single call by placing the entire information in the single call itself. It means the definition of all the keys will be the same except for the following:
- targetEntity = "Event".
- eventName = "name of the behavioral event".
- This key will be present in the request body for the behavioural event type of targets.
- targetType = "COUNT"/"VISIT"/"EVENT_ATTRIBUTE". Only these 3 are supported.
- When the targetType is given as "EVENT_ATTRIBUTE", then:
- An "extendedFieldInfo object is applicable that contains 2 parameters:
- aggregateFunction: "SUM"
- name: Name of the attribute of the behavioral event on which SUM needs to happen.
-
"targetEntity": "EVENT", "eventName": "removedFromCart", "targetType": "EVENT_ATTRIBUTE", "extendedFieldInfo": { "name": "cartId", "aggregateFunction": "SUM"}
"targetEntity": "EVENT", "eventName": "removedFromCart", "targetType": "COUNT"/"VISIT", "extendedFieldInfo": { "name": "cartId", "aggregateFunction": "SUM"}
- An "extendedFieldInfo object is applicable that contains 2 parameters:
- When the targetType is given as "EVENT_ATTRIBUTE", then:
Note
For detailed information about our APIs and for hands-on testing, refer documentation in API overview and step-by-step guide on making your first API call in Make your first API call .
API endpoint example
Using create target group: https://eucrm.cc.capillarytech.com/v3/targetGroups
Prerequisites
- Authentication: Basic/OAuth authentication
- Default access group
Resource information
URI | v3/targetGroups |
HTTP method | POST |
Pagination | NA |
Rate limit | NA |
Batch support | NA |
Request body parameters
Parameter Name | Data Type | Description |
---|---|---|
active | Boolean | Indicates if the tracking is active or not. |
description | String | A brief description of the target group. |
name* | String | The name identifier for the target group. The character limit for the name is 200 characters. |
preferredTillId | Number | Identifier for a preferred till. |
trackingType | Enum | The type of tracking the milestone is created for. Supported values: - Default (single target tracking), - Unified (tracking multiple targets as a unit), - Streak (Tracking the achievement of a user across the cycles continuously), - Capping (Tracking the number of points a user has got over a period, so that capping can be applied). - Non continuous streak (Non-continuous streaks is a variation of streak, where the user is not required to perform specified activity continously). |
targetEvaluationType | Enum | The evaluation strategy for the targets. Supported values: FIXED_CALENDAR_WINDOW - Each cycle runs for a defined period from the selected start date. CYCLIC_WINDOW - Cycle starts after customer's 1st transaction post enrolment. PERIOD_AGNOSTIC_WINDOW - The cycle continues until the user achieves the specified target. |
totalPeriods | Number | The total number of periods over which the tracking is evaluated. |
frequencyType | Enum | The frequency of each cycle in which the user has to achieve the target value. Supported values: Monthly, Quarterly, Half-yearly, Yearly, Weekly, Daily, CUSTOM. |
frequency | Number | The frequency count, relevant to the frequencyType. |
recurringCycles | Number | The number of cycles for which the tracking recurs. |
periods | Object | An array of period objects, each containing details about the individual periods within the tracking. |
active | Boolean | Indicates if the period is active. |
description | String | A brief description of the period. |
endDate | Date Time | The end date and time of the period. |
periodStatus | Enum | Indicates if the cycle of the Milestone is running or upcoming. Supported values: RUNNING, UPCOMING, NOT_STARTED. |
refCode | String | A reference code for the period. |
startDate | Date Time | The start date and time of the period. |
targets | Object | An array of target objects. |
active | Boolean | Indicates if the target is active. |
description | String | A brief description of the target. |
expression | String | A string representing the condition to meet the target aka rule. |
expressionJson | String | A JSON expression that specifies the conditions required to achieve the target. |
defaultValues | Object | An array of objects providing default values related to the target. |
defaultValue | String | The default value for the target |
filters | Object | In this object, you can define the entity to which the specified expressions related to the target will be applied. |
enrolmentMethod | Enum | The method of enrolment for the target. Supported values: TRANSACTION, IMPORT |
entityType | Enum | The entity to which the specified expressions related to the target will be applied. For example: The user has to make a purchase of shoes from ABC store. Here, purchase of shoes is the expression and the entity is ABC store. Supported values: STORE, ZONE, CONCEPT. |
entityIds | Array | The IDs of the entities to which the is filter applied on. |
name | String | The name identifier for the target. |
targetEntity | Enum | The KPI on which the target is tracked. Supported values: TRANSACTION, LINEITEM, EVENT, REWARDS. To track the transactional KPIs, use TRANSACTION and LINEITEM . To track the Behavioural events & EMF events, use EVENT. To track the tracking based on rewards such as points, use REWARDS. |
eventName | String | The behavioral name of the event that triggers the target. Only valid in the case of behavioral events & EMF events. |
targetType* | Enum | The type of target. Supported values: SUM, VISIT, and COUNT (These are only 3 supported for behavioral event type of targets) To use SUM, set the value as EVENT_ATTRIBUTE and then define the details in the extendedFieldInfo object. |
extendedFieldInfo | Object | Includes the details of the event attribute that needs to be tracked. This object is applicable only when targetType is SUM. |
name | String | Event on which the sum calculation is performed. For example, the number of adding to cart events. |
aggregateFunction | Enum | The aggregate function checks whether the behavioral event is satisfied based on the sum. Supported values: SUM |
defaultValues | Object | An array of objects providing default values related to the target. |
defaultValue | Integer | A default value used in the target evaluation. |
Request body parameters (that are related to target)
Parameter | Data Type | Description |
---|---|---|
active | Boolean | Indicates if the target is active. |
description | String | A brief description of the target. |
expression | String | A string representing the condition to meet the target. |
expressionJson | JSON | A JSON expression that specifies the conditions required to achieve the target. |
filters | Array | In this object, you can define the entity to which the specified expressions related to the target will be applied. |
- entityIds | Array | The IDs of the entities to which the is filter applied on. |
- entityType | Enum | The entity to which the specified expressions related to the target will be applied. For example: The user has to make a purchase of shoes from ABC store. Here, purchase of shoes is the expression and the entity is ABC store. Supported values: STORE, ZONE, CONCEPT. |
name* | String | Name assigned to the target. |
targetEntity | Enum | The KPI on which the target is tracked. Supported values: TRANSACTION, LINEITEM, EVENT, REWARDS. To track the transactional KPIs, use TRANSACTION and LINEITEM . To track the Behavioural events, use EVENT. To track the tracking based on rewards such as points, use REWARDS. |
enrolmentMethod | Enum | The method of enrolment for the target. Supported values: TRANSACTION, IMPORT |
targetGroupId* | Integer | ID of the target group. |
targetType* | String | The type of target. Supported values: SUM, VISIT, and COUNT. To use SUM, set the value as EVENT_ATTRIBUTE and then define the details in the extendedFieldInfo object. |
defaultValues | Array | An array of objects providing default values related to the target. |
- targetName | String | Name of the target. |
- periodId | Integer | Unique identifier for the period. |
- defaultValue | Integer | A default value used in the target evaluation. |
extendedFieldInfo | Object | Includes the details of the event attribute that needs to be tracked. This object is applicable only when targetType is SUM. |
- name | String | Event on which the sum calculation is performed. For example, the number of adding to cart events. |
- aggregateFunction | String | The aggregate function checks whether the behavioral event is satisfied based on the sum. Supported values: SUM |
{
"active": true,
"fromDate": "2024-02-19T00:00:00.529Z",
"name": "GoodNightForNightly",
"preferredTillId": 50692127,
"toDate": "2024-05-31T08:41:00.529Z",
"trackingType": "DEFAULT",
"totalPeriods": 2,
"frequency": 1,
"recurringCycles": 1,
"targetEvaluationType": "FIXED_CALENDAR_WINDOW",
"targetCycleStartDate": "2024-02-19T00:31:00.529Z",
"periods": [
{
"active": true,
"description": "p66912",
"endDate": "2024-02-22T23:45:12.063",
"periodStatus": "RUNNING",
"refCode": "period66921",
"startDate": "2024-02-19T00:00:00.529Z"
},
{
"active": true,
"description": "p66222",
"endDate": "2024-04-30T23:45:12.063",
"periodStatus": "NOT_STARTED",
"refCode": "period6628911",
"startDate": "2024-04-01T23:45:12.063Z"
}
],
"targets": [
{
"targetEntity": "EVENT",
"targetType": "VISIT",
"eventName": "goodNight",
"defaultValues": [
{
"defaultValue": "2"
},
{
"defaultValue": "3"
}
],
"targetMilestoneTriggers": [],
"expression": "true",
"expressionJson": "{\"arity\":\"literal\",\"value\":\"true\",\"type\":\"boolean:primitive\"}",
"filters": [],
"name": "goodNightTargetRule",
"enrolmentMethod": "TRANSACTION"
}
]
}
{
"active": true,
"description": "generic fixed group1",
"fromDate": "2024-02-19T02:00:00.063",
"name": "genericFixedTest1",
"preferredTillId": 50697469,
"toDate": "2024-10-31T08:41:00.529Z",
"trackingType": "DEFAULT",
"totalPeriods": 1,
"frequency": 0,
"recurringCycles": 0,
"periods": [
{
"active": true,
"description": "p1",
"endDate": "2024-10-31T08:41:00.529Z",
"periodStatus": "RUNNING",
"refCode": "period444f5",
"startDate": "2024-02-19T02:00:00.063"
}
],
"targets": [
{
"active": true,
"description": "string",
"expression": "true",
"expressionJson": "{\"arity\":\"literal\",\"value\":\"true\",\"type\":\"boolean:primitive\"}",
"filters": [],
"defaultValues": [
{
"defaultValue": 4.000
}
],
"name": "fixedTarget1",
"targetEntity": "EVENT",
"enrolmentMethod": "TRANSACTION",
"targetType": "EVENT_ATTRIBUTE",
"eventName": "test",
"extendedFieldInfo": {
"name": "step",
"aggregateFunction": "SUM"
}
}
]
}
Response parameters
Field | Datatype | Description |
---|---|---|
id | integer | Unique identifier for the tagrget group. |
name | string | Name of the target group. |
active | boolean | Indicates if the group is active. |
preferredTillId | integer | Preferred till ID. |
totalPeriods | integer | Total number of periods specified. |
description | string | Description of the target. |
targetEvaluationType | Enum | The evaluation strategy for the targets. Supported values: FIXED_CALENDAR_WINDOW - Each cycle runs for a defined period from the selected start date. CYCLIC_WINDOW - Cycle starts after customer's 1st transaction post enrolment. PERIOD_AGNOSTIC_WINDOW - The cycle continues until the user achieves the specified target. |
targetCycleStartDate | string (date-time) | Start date and time for the target cycle. |
targetCycleEndDate | string (date-time) | End date and time for the target cycle. |
frequencyType | Enum | The frequency of each cycle in which the user has to achieve the target value. Supported values: Monthly, Quarterly, Half-yearly, Yearly, Weekly. |
trackingType | Enum | The type of tracking the milestone is created for. Supported values: - Default (single target tracking), - Unified (tracking multiple targets as a unit), - Streak (Tracking the achievement of a user across the cycles continuously), - Capping (Tracking the number of points a user has got over a period, so that capping can be applied). - Non continuous streak (Non-continuous streaks is a variation of streak, where the user is not required to perform specified activity continously). |
fromDate | string (date) | Start date for the target. |
toDate | string (date) | End date for thetarget. |
recurringCycles | integer | Number of recurring cycles specified. |
frequency | integer | Frequency value set for the setting. |
id | integer | Unique identifier for each period. |
startDate | string (date) | Start date for each period. |
endDate | string (date) | End date for each period. |
refCode | string | Reference code for each period. |
periodStatus | Enum | Status of each period. Supported values: RUNNING, NOT_STARTED, UPCOMING. |
targetGroupId | integer | Identifier linking each period to a target group. |
description | string | Description of each period. |
active | boolean | Indicates if each period is active. |
id | integer | Unique identifier for each streak. |
name | string | Name of each streak. |
targetCountOfSequence | integer | Target count of sequence for each streak. |
id | integer | Unique identifier for each target. |
name | string | Name of each target. |
targetType | Enum | The type of target. Supported values: COUNT, VISIT, SUM To use SUM, set the value as EVENT_ATTRIBUTE and then define the details in the extendedFieldInfo object. |
targetEntity | Enum | The KPI on which the target is tracked. Supported values: TRANSACTION, LINEITEM, EVENT, REWARDS. To track the transactional KPIs, use TRANSACTION and LINEITEM . To track the Behavioural events, use EVENT. To track the tracking based on rewards such as points, use REWARDS. |
eventName | string | Name of the event associated with each target. |
description | string | Description of each target. |
active | boolean | Indicates if each target is active. |
expression | string | Expression defining the criteria for each target. |
expressionJson | string (JSON) | Target expression in JSON format for each target. |
entityType | Enum | The entity to which the specified expressions related to the target will be applied. For example: The user has to make a purchase of shoes from ABC store. Here, purchase of shoes is the expression and the entity is ABC store. Supported values: STORE, ZONE, CONCEPT. |
entityIds | array of integers | IDs of entities for the filter of each target. |
enrolmentMethod | string | Method of enrolment for each target. |
defaultValue | float | Specifies a default value for the target criteria for each target. |
{
"data": [
{
"id": 9067,
"attribution": {
"createdOn": "2023-09-25T11:42:35.850+0530",
"lastUpdatedOn": "2023-09-25T11:42:35.850+0530",
"lastUpdatedBy": {
"id": 50666468,
"code": "amanv2",
"description": "",
"name": "amanv2",
"type": "TILL"
},
"createdBy": {
"id": 50666468,
"code": "amanv2",
"description": "",
"name": "amanv2",
"type": "TILL"
}
},
"name": "test_name",
"emfRuleSetId": 1246657,
"emfUnrolledRulesetId": 1246656,
"targetType": "COUNT",
"targetEntity": "EVENT",
"targetGroupId": 5869,
"description": "test210",
"active": true,
"expression": "true",
"expressionJson": "{\"arity\":\"literal\",\"value\":\"true\",\"type\":\"boolean:primitive\"}",
"filters": [
{
"entityType": "ZONE",
"entityIds": [
0
]
}
],
"enrolmentMethod": "TRANSACTION",
"defaultValues": [
{
"id": 10083,
"periodId": 1,
"defaultValue": 20
}
],
}
],
"errors": null,
"warnings": null
}
{
"data": [
{
"id": 9067,
"attribution": {
"createdOn": "2023-09-25T11:42:35.850+0530",
"lastUpdatedOn": "2023-09-25T11:42:35.850+0530",
"lastUpdatedBy": {
"id": 50666468,
"code": "amanv2",
"description": "",
"name": "amanv2",
"type": "TILL"
},
"createdBy": {
"id": 50666468,
"code": "amanv2",
"description": "",
"name": "amanv2",
"type": "TILL"
}
},
"name": "test_name",
"emfRuleSetId": 1246657,
"emfUnrolledRulesetId": 1246656,
"targetType": "EVENT_ATTRIBUTE",
"targetEntity": "EVENT",
"targetGroupId": 5869,
"description": "test210",
"active": true,
"expression": "true",
"expressionJson": "{\"arity\":\"literal\",\"value\":\"true\",\"type\":\"boolean:primitive\"}",
"filters": [
{
"entityType": "ZONE",
"entityIds": [
0
]
}
],
"enrolmentMethod": "TRANSACTION",
"defaultValues": [
{
"id": 10083,
"periodId": 1,
"defaultValue": 20
}
],
"extendedFieldInfo": {
"name": "tax_amount",
"aggregateFunction": "SUM"
}
}
],
"errors": null,
"warnings": null
}
API error codes
Code | Description |
---|---|
310069 | Target group name already exists |
300004 | Invalid input, check all values and ensure they are correct. |
310008 | Length of Target rule name cannot exceed 200 |