purchased, clicked, signed_up. You report events as they happen; Curious attributes each one to the decisions that preceded it and learns from the result.
The fields
name: past tense, matched exactly against the names in your rewards and constraints. Use one name with properties rather than many names:email_openedwith{ "email_name": "welcome" }, notwelcome_email_opened, so a reward can match the whole family or one member. Names starting with$are reserved for the browser SDK’s own system events.value: optional, defaults to 1 (nullalso means 1). The amount for asemicontinuousorcontinuousreward; ignored bybinaryand counted once bycount.properties: facts about the event. Rewards and constraints can filter on them. Never written to the user.context: the situation at event time, such as device or page. Kept with the event, not a filter, not written to the user.timestamp: when the event happened. Defaults to the moment it is received. Declare it for buffered or backfilled events so a late event still attributes to the right decision.id: your idempotency key for this event. A repeat is deduplicated. See Idempotency.
How an event attributes
Attribution is by user and by window. An event foruser_123 named purchased attributes to the decision made for user_123 on an element whose rewards or constraints name purchased (and whose properties filter, if any, matches), provided the event’s timestamp falls inside that decision’s window: from the decision until window_seconds later, or until a newer decision for the same user and element ended it. Each event lands in exactly one window per element, so nothing is double-counted and no touch-attribution rule is needed.
Three consequences follow:
- Use the same
user_idyou decided with. An event under a different id attributes to nothing untilidentifylinks the two. - Report events for every user, including the ones Curious did not decide for. Attribution finds the decision if there is one; an event without a preceding decision is simply stored.
- Timestamps matter. A buffered event sent an hour late with no
timestampis attributed at receipt time and may fall outside its window. Send the real time.