> For the complete documentation index, see [llms.txt](https://docs.cuoral.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.cuoral.com/api-reference/churn-intelligence/events/send-custom-events.md).

# Send custom events

Log and published custom events to the real-time processing pipeline for immediate analysis (health scoring, anomaly detection, abandonment detection).

## Send custom events

<mark style="color:green;">`POST`</mark> /external/v1/custom-events/log<br>

Log and published custom events to the real-time processing pipeline for immediate analysis (health scoring, anomaly detection, abandonment detection).

**Customer resolution**: Each event should include at least one of:

* `session_id` - Cuoral session ID
* `customer_id` - Your customer ID as stored in Cuoral
* `customer_email` - Customer email address<br>

**Headers**

| Name         | Value              |
| ------------ | ------------------ |
| Content-Type | `application/json` |
| x-api-key    | `<api_key>`        |

**Body**

```json
{
  "events": [
    {
      "name": "string",
      "category": "string",
      "properties": {
        "custom_props1":"",
        "custom_props2":""
      },
      "event_timestamp": "2026-02-26T14:44:17.435Z",
      "url": "string",
      "session_id": "string",
      "customer_id": "string",
      "customer_email": "string"
    },
  ]
}
```

**Response**

{% tabs %}
{% tab title="200" %}

```json
{
  "status": "success",
  "saved": 0,
  "skipped": 0,
  "errors": [
    "string"
  ]
```

{% endtab %}

{% tab title="422" %}

```json
{
  "detail": [
    {
      "loc": [
        "string",
        0
      ],
      "msg": "string",
      "type": "string",
      "input": "string",
      "ctx": {}
    }
  ]
}
```

{% endtab %}
{% endtabs %}
