> ## Documentation Index
> Fetch the complete documentation index at: https://docs.omneo.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Custom Events

> Firing custom events in Omneo to trigger reactions from external systems.

Custom events let you push an event into Omneo from an external system, triggering reactions without an Omneo-native action occurring. This is useful for:

* Triggering a reaction based on behaviour in another platform (e.g., completing a survey, reaching a milestone in a third-party app)
* Firing a scheduled or manual automation from an external orchestration system
* Testing reaction configurations without waiting for real events

## Firing a custom event

```shell theme={null}
curl -X POST https://api.[tenant].getomneo.com/api/v3/events \
  -H "Authorization: Bearer ${TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "event": "custom.survey_completed",
    "profile_id": "9332c9b2-e31c-4d49-8ec3-62a9466d339c",
    "data": {
      "survey_id": "NPS-2025-Q2",
      "score": 9
    }
  }'
```

## Using custom events in reactions

Configure a reaction with `"trigger": "custom.survey_completed"` (or whatever event name you use). When the custom event fires, the reaction chain executes with the event payload available as context.

```json theme={null}
{
  "name": "NPS Survey Completed",
  "trigger": "custom.survey_completed",
  "is_active": true,
  "actions": [
    {
      "name": "filter",
      "sort_order": 1,
      "arguments": [
        {
          "name": "condition",
          "value": { ">=": [{"var": "data.score"}, 9] },
          "is_dynamic": null
        }
      ]
    },
    {
      "name": "benefit.create",
      "sort_order": 2,
      "arguments": [
        { "name": "profile_id", "value": {"var": "profile_id"}, "is_dynamic": true },
        { "name": "definition", "value": "promoter-thank-you", "is_dynamic": null }
      ]
    }
  ]
}
```

## Custom event naming

Omneo custom event names follow the `namespace.event_name` convention. Use a consistent namespace for your integration to avoid collisions with Omneo's native events.

<Note>Content needed: full custom event API specification, payload size limits, available context fields in custom event reactions, and rate limits.</Note>
