Skip to main content
Events return { "status": "success" }, but the dashboard shows no rewards on the experiment. Attribution is by name, user and window; one of them is not lining up.

The name does not match

Rewards match events.name exactly. purchase is not purchased; Purchased is not purchased. Compare the declared reward names with the names you send.

The properties filter does not match

A reward declared with "properties": { "plan": "pro" } attributes only events whose properties carry "plan": "pro". An event with { "plan": "Pro" } or with the plan in context does not match. Put the facts the filter needs in properties, with the same keys and values.

The user id differs

An event for user_123 credits a decision made for user_123. If the decision was made for an anonymous id and the event for the account id, nothing attributes until identify links the two. The same applies when the client and the server disagree on the id format.

The event fell outside the window

Each reward has a window_seconds (one day by default) that starts at the decision. An event after it does not count. A newer decision for the same user and element also ends the earlier decision’s window, so a page that calls decide on every render keeps restarting the clock. See Assignment and stickiness.

The timestamp is wrong

A buffered event sent without a timestamp is stamped at receipt and may land outside its window. Send the real time, with an explicit timezone. A naive datetime is rejected with timestamp must be an ISO-8601 datetime with an explicit timezone; an offset applied twice puts the event hours away from the decision.

The environments differ

A test key’s user_123 and a live key’s user_123 are different users. A decision under a live key and an event under a test key never meet. See Keys and environments.

The event is being rejected

In the batch form, a bad item is reported inside the 200, not as a failed request. Walk results for "status": "error". A $-prefixed name is rejected for anyone but the browser SDK; rename it at the source.

Still nothing?

Find the decision in the dashboard and compare its time with the event’s. Quote the two X-Request-Id values to support.