Profile Traits: From Raw Events to Smart Data
Growcado extracts and computes traits from your events — turning chaos into clarity, at the profile level.
🧩 What are Traits?
Traits provide essential information about a customer, including demographic details and business-specific characteristics such as name, region, total orders and favorite product Growcado supports two types of traits:
Custom Traits — pulled directly from event payloads
Computed Traits — calculated using aggregations, logic, or formulas
Once computed, traits are attached to each unified profile and stored in your warehouse for querying, joining, and powering segments.
🔍 Custom Traits
You can extract fields from incoming events and assign them to profiles automatically. These are typically high-signal identifiers or attributes, like:
mobile_number
email
region
user_type
is_first_time_buyer
Example
Let’s say a user logs in with this event:
{
"user_id": "user_123",
"context_traits": {
"email": "jamie@example.com",
"region": "north-west"
}
}
Growcado extracts email
and region
and attaches them to the profile for user_123
.
These values are always the latest observed values (or follow a configured merge rule).
🧠 Computed Traits
These go further — you define logic in your YAML config to calculate advanced traits, using your event data and warehouse power.
Supported computation types:
aggregation — sum, count, min, max, avg
most_frequent
derived — custom formulas
⏳ More types soon
🧪 Example YAML Config
computed_traits:
- name: lifetime_value
computation_type: aggregation
aggregation: sum
field: property_total
event: OrderCompleted
type: float
- name: total_disconut_used
computation_type: aggregation
aggregation: sum
field: property_products.$.discount // suport nested properties
event: OrderCompleted
type: float
name: most_added_to_cart_product_id
computation_type: most_frequent
field: product_id
event: BkOrderCompleted
type: string
filter_expression: "price > 30"
- name: customer_loyalty_badge
computation_type: derived
source_trait: total_orders
formula: "CASE WHEN source_value > 6 THEN 'gold' WHEN source_value BETWEEN 4 AND 6 THEN 'silver' ELSE 'bronze' END"
type: string
💡 Key Features
Supports aggregation, frequency, and derived logic
Can extract from nested fields using
$.
syntaxAllows filters on the data (
price > 30
)
📦 Where Traits Live
Growcado writes all traits into a normalized traits table, not flattened JSON or blob fields.
computed_traits
table structure:
computed_traits
table structure:profile_123
region
north-west
string
custom
profile_123
lifetime_value
234.50
float
computed
profile_123
total_discount_used
42.90
float
computed
profile_123
customer_loyalty_badge
gold
string
computed
Last updated