Define attribute keys
An attribute key is the identifier that attributes are calculated against. All attribute groups need an attribute key.
Signals includes four built-in attribute keys, based on commonly used identifiers from the atomic user-related fields in all Snowplow events.
- Console
- Python SDK
The built-in attribute keys are available to select when creating an attribute group in Snowplow Console: domain_userid, domain_sessionid, network_userid, and user_id.
Import the built-in attribute keys directly:
from snowplow_signals import (
domain_userid,
domain_sessionid,
user_id,
network_userid,
)
Custom attribute keys
You can define custom attribute keys to calculate attributes against any other Snowplow atomic property. Atomic properties are those defined in the atomic fields of the core Snowplow event, not properties tracked as part of an entity.
- Console
- Python SDK
Navigate to Signals > Attribute keys in Console. Click the Create attribute key button.

You will need to provide:
- A unique name
- An optional description
- An optional email address for the primary owner or maintainer
- Which atomic property you want to calculate attributes against
To edit or delete a custom attribute key, go to the key details page and click the Edit button, or the ⋮ button followed by Delete.
Use the AttributeKey class to define a custom attribute key:
from snowplow_signals import AttributeKey
app_id_attribute_key = AttributeKey(
name="app_id_attribute_key",
description="The id for the app",
key="app_id",
)
The table below lists all available arguments:
| Argument | Description | Type | Required? |
|---|---|---|---|
name | The name of the attribute key | string | ✅ |
description | A description of the attribute key | string | ❌ |
key | The atomic property to join against (defaults to name if not set) | string | ❌ |
owner | The owner of the attribute key | string | ❌ |
ttl | Time attributes for this key will live in the Profiles Store | timedelta | ❌ |
Here's a full example using the atomic platform property:
from datetime import timedelta
from snowplow_signals import AttributeKey
platform_attribute_key = AttributeKey(
name="platform_tracking_attribute_key",
description="Attribute key for analyzing user behavior patterns across different platforms",
key="platform",
owner="analytics-team@company.com",
ttl=timedelta(days=365),
)
Custom attribute keys are used in attribute groups in the same way as built-in keys.