---
title: "Send Events"
method: POST
path: "/api/measurement/events"
tags: ["Measurement"]
---

# Send Events

`POST /api/measurement/events`

## Request

- Base URL: `https://revnu.com`
- URL: `https://revnu.com/api/measurement/events`
- Auth: HTTP bearer

Tell Revnu from your server when a visitor signs up, books a call or pays, so the result is tied back to where they came from.

**Response.** ```json
{
  "accepted": true,
  "matched": false,
  "counted": false,
  "not_counted_reason": "\"signup\" is not in this site's win definition, which counts \"trial_started\". It was recorded, but it will not count as a win until the definition in Revnu includes it.",
  "duplicate": false,
  "enriched": false,
  "event_id": "signup_8412",
  "event_name": "signup",
  "roles": [],
  "attribution_status": "pending"
}
```

- `counted` says whether the event counts as a win under your site's win definition.
- `not_counted_reason` appears when an event can never count because the definition does not include its `event_name`. Change the definition in Revnu, or send the event it names.
- `matched` says whether the event was credited to one of your Revnu ad campaigns. It stays `false` until you run campaigns through Revnu, and that is expected.
- `qualification_status` appears when your definition has requirements, such as a work email or company size: `qualified`, `not_qualified`, or `pending_evidence` while Revnu still researches the company. `qualification_missing` names what's missing.

| Code | Meaning |
|---|---|
| 200 | Recorded and credited to one of your Revnu ad campaigns, or a duplicate of an event already recorded |
| 202 | Recorded, not credited to a campaign. Check `counted` to see whether it counts as a win |
| 401 | Missing or invalid event key |
| 409 | The same `event_id` was sent before with different values |
| 413 | Body over 64 KB |
| 422 | A field failed validation; `error` says which |
| 429 | Rate limited; retry later with the same `event_id` |

### Why an event didn't count

| `not_counted_reason` starts with | What it means | Fix |
|---|---|---|
| `This site has no win definition yet` | No outcome is set up, so nothing counts. | Set one up in **Ads → Revnu Tag**. See [set up outcomes](/docs/set-up-outcomes). |
| `"signup" is not in this site's win definition` (with your event name) | The event arrived, but your outcomes count other event names. The message lists them. | Send the event name it lists, or ask Revnu to add this one as an outcome and approve the change in **Ads → Revnu Tag**. |

`counted: false` with no `not_counted_reason` means the event name is in your definition but this one didn't meet its requirements, or Revnu is still researching the company. Check `qualification_status` and `qualification_missing`. A refund or cancellation sent with `reversal_of` never counts as a win itself.

## Request body

- object

## Response `200`

Recorded and credited to one of your Revnu ad campaigns, or a duplicate of an event already recorded

- object
  - `campaign_id` string
  - `duplicate` boolean, required
  - `enriched` boolean, required
  - `event_id` string, required
  - `event_name` string, required
  - `roles` string[], required
  - `qualification_status` 'not_qualified' | 'pending_evidence' | 'qualified'
  - `qualification_missing` string[]
  - `attribution_status` 'ambiguous' | 'direct' | 'outside_window' | 'pending' | 'stitched' | 'unattributed', required
  - `not_counted_reason` string
  - `accepted` true, required
  - `matched` boolean, required
  - `counted` boolean, required

## Other responses

- `202`: Recorded, not credited to a campaign. Check counted to see whether it counts as a win
- `400`: The request is malformed; the error names the problem.
- `401`: Missing or invalid event key
- `409`: The same event_id was sent before with different values
- `413`: Body over 64 KB
- `422`: A field failed validation; error says which
- `429`: Rate limited; retry later with the same event_id

---

[API](https://skmtc.dev/revnu/apis/revnu-api.md) · [All operations](https://skmtc.dev/revnu/apis/revnu-api/llms.txt) · [OpenAPI document](https://skmtc.dev/revnu/apis/revnu-api/revisions/52e523c2db61?raw)
