- Example:
client_ip + request_header_user_agent - Example:
cookie + path pattern - Example:
ip + referer + action
System starter entities
Esper currently seeds new tenants with these system-defined entity definitions:ip-user-agent:client_ip + user_agentbot-crawlers:user_agentwhen the request matches known crawler tokens from OpenAI, Anthropic, Google, Apple, Meta, and Cloudflare
What you define for an entity
When creating an entity definition, you usually choose:name: A clear label for the identity rule.description: Optional context about what the entity represents.key_fields: The fields Esper should combine to identify the same actor, device, account, or session across requests.match_expression: An optional condition that limits when this entity definition applies.
Why this matters
Entity definitions tell Esper how to:- Group related traffic.
- Accumulate state.
- Analyze repeated behavior.
- Bind policies to the right identity semantics.
Choosing key fields
Key fields tell Esper which values should stay stable when two requests belong to the same real-world actor, device, session, or account. In the builder, you are usually choosing from the tenant’s available field catalog directly. For match expressions, you may also use request-oriented conditions such as method, header, query parameter, cookie, or body data reference. Examples of strong key fields:- Account or customer identifiers.
- Stable device identifiers.
- Source identifier plus browser identity.
- Client IP plus user agent when you need a practical edge-oriented fallback.
- Well-defined session fields.
- Request timestamps.
- Values that are often blank.
- Values that change on every request.
- Fields that are too broad on their own, such as only the request path.
Where the field list comes from
The field list in the Entities builder is tenant-specific. Esper shows the fields currently available for this tenant, including:- Captured fields.
- Derived fields.
- Action fields.