Recommendations event properties
Recommendations events track how items are served and interacted with across each request. Each event includes properties that record the interaction type, the source that filled each slot, and how many items each source contributed—giving you the data to build accurate analytics dashboards and diagnose recommendation quality.
Event properties reference
Properties table
| Property | Description | Data type |
|---|---|---|
action | Type of user interaction tracked for the event | String |
recommendation_source | Source that filled each individual slot. While the count properties give aggregate totals, recommendation_source shows which source filled each specific slot. | String |
model_personalized_count | Personalized recommendations returned by the primary model | Integer |
personalized_count | Personalized recommendations in the event | Integer |
model_non_personalized_count | Non-personalized recommendations from primary models, such as top sellers | Integer |
model_fallback_count | Items from the structured backup when the primary model can't fill the full request | Integer |
fallback_count | Items from random catalog selection when the primary model and structured backup fall short | Integer |
non_personalized_count | Total non-personalized items (non-personalized model + structured backup) | Integer |
Property details and relationships
action
actionAction types:
click: User clicked a recommended item.impression: Recommendations were shown to the user.purchase: User purchased a recommended item.view: User viewed the recommended items.
How to use: Use the action property to distinguish different user interactions in your analytics and reporting.
recommendation_source
recommendation_sourceValues:
| Value | Tier | Corresponds to |
|---|---|---|
model_personalized | Tier 1—primary AI model | personalized_count |
model_non_personalized | Tier 1—primary non-personalized model | model_non_personalized_count |
model_fallback | Tier 2—precomputed popular or top-interacted items | model_fallback_count |
fallback | Tier 3—random catalog fill | fallback_count |
How to use: Use recommendation_source alongside the count properties to see both the aggregate split and the per-slot breakdown.
model_personalized_count and personalized_count
model_personalized_count and personalized_countKey relationship: These fields always have the same value.
Why both exist: Both properties exist for backward compatibility after a system update. Both appear in all event data.
model_non_personalized_count
model_non_personalized_countExample: A "top sellers" or "most viewed" model.
Impact: Adds to non_personalized_count.
model_fallback_count
model_fallback_countWhen it's used: Used when the primary model can't return enough items to fill the request—for example, by serving precomputed top-interacted or popular items.
When it's zero: model_fallback_count is zero in two cases:
- The primary model returned enough items to fill the full request.
- The template has no Tier 2 fallback. The following templates skip Tier 2 and go straight from the primary model to random selection:
| Template | Fallback behavior |
|---|---|
| Similar attributes | Primary→random |
| Filter based | Random is the primary engine |
| Recently viewed | Controlled by fill_with_random only |
Impact: Adds to non_personalized_count.
fallback_count
fallback_countWhen it's used: Used when the primary model and structured backup can't fill the full request.
Disable random fill: Set fill_with_random=false to prevent random items from being added when not enough results are available.
What a high value can indicate:
- Insufficient data—not enough user or item data for the model to generate results.
- Overly strict catalog filters—precomputed and interaction-based templates fetch a pool of item IDs, then apply static and dynamic filters. If too few items pass, Tier 3 random fill completes the request—even when the primary model has results.
Key difference from model_fallback_count: fallback_count is true random selection. model_fallback_count uses structured, model-based backup logic.
non_personalized_count
non_personalized_countHow it's calculated:
non_personalized_count = model_non_personalized_count + model_fallback_count
fallback_count isn’t included in this total. See Understand count relationships for the full formula.
How to use: Use this property to measure total non-personalized output in recommendations events.
Understand count relationships
Use these formulas when building analytics on recommendations event data.
Non-personalized items per event:
non_personalized_count = model_non_personalized_count + model_fallback_count
Total items served per event:
total = personalized_count + non_personalized_count + fallback_count
Because fallback_count isn’t included in non_personalized_count, add it separately to get the full total.

