Appearance
Behaviors
Behaviors allow us to move beyond simple event-based tracking, which is a point-in-time insight (e.g. the user's current location) to more valuable and complex insights based on previous events.
Usually, converting event data into behavioral data requires complicated streaming infrastructure, like Flink, Kafka Streams, etc. However, Honeypot allows us to define custom aggregations and behaviors using a simple configuration syntax.
Not only do we remove the need for dedicated infrastructure for enriching / aggregating data, but we also derive insights much earlier: as soon as the events are generated. This is sometimes called a "shift left" approach.
Configuration Structure
Alternative Approach
Don't like writing JSON? Or want a simpler approach? You can specify the behavior you want to track in plain English using the Honeypot UI, which will generate the configuration for you.
Each behavior is configured using a JSON configuration syntax:
json
{
"name": "behavior_name",
"description": "Human-readable description",
"group_by": "field_to_group_by",
"operation": "operation_type",
"fields": ["field1", "field2"],
"window_duration_seconds": 3600,
"filters": {
"field": "event_name",
"operator": "equals",
"value": "login"
},
"operation_config": {...}
}Core Configuration Properties
Required Properties
| Property | Type | Description |
|---|---|---|
name | string | Feature name used for referencing results. For example, if you name the feature login_count_10m, then Honeypot will return the computed feature data under the same key name in the behaviors object. See the response schema here. |
group_by | object | Defines data source and grouping strategy. Can be any valid identifier or customer event property. Common values include:
|
operation | string | Type of aggregation to perform. Common values include:
|
window_duration_seconds | number | Time window for data retention (in seconds). Common values include:
|
Optional Properties
| Property | Type | Description |
|---|---|---|
description | string | Human-readable description of the feature |
fields | string[] | Fields required for the operation |
filters | object | Rules to filter which events are processed. See filters for more information. |
operation_config | object | Operation-specific configuration options |
timestamp_field | string | Custom timestamp field (defaults to event_time) |
Supported Group By Fields
device_id- Group by device identifieridentity- Group by user identity/emailsession_id- Group by sessionip_address- Group by IP addressevent_properties.phone- Group by phone number (nested field)event_properties.email- Group by email from event properties
Note: Use dot notation for nested fields.