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

# Emit event node

> Record a project event from a workflow

Records a project event and then advances through the `next` edge. Use this node for outcomes, scores, labels, or workflow-derived facts that should be queryable later or trigger other workflows.

## Configuration

* `event_name`: Project event name to emit
* `properties`: Flat scalar JSON properties to store with the event
* `occurred_at`: Optional ISO 8601 timestamp or workflow variable. Leave blank to use the current time.

Event names can be any non-empty string. We recommend lowercase dotted snake case, such as `conversation.csat_scored`, to keep names consistent. Properties can contain strings, numbers, booleans, or `null`.

## Workflow library example

```javascript theme={null}
workflow.addNode("record_csat", {
  type: "emit_event",
  eventName: "conversation.csat_scored",
  properties: {
    score: "{{vars.csat_score}}",
    source: "workflow"
  }
});
```

## API payload shape

When using the Platform API directly, use snake\_case keys:

```json theme={null}
{
  "node_type": "emit_event",
  "config": {
    "event_name": "conversation.csat_scored",
    "properties": {
      "score": 5,
      "source": "workflow"
    },
    "occurred_at": "{{vars.scored_at}}"
  }
}
```

## Limits and behavior

* A workflow execution can emit at most 10 project events.
* A workflow execution can emit at most 3 events with the same name.
* Workflows started by project event triggers cannot emit project events.
* In test mode, event emission is validated and shown in workflow events, but project events are not stored.

See [Events](/docs/platform/events) for event format, retention, querying, webhooks, and plan limits.

## Usage patterns

**Record conversation outcome**

```mermaid theme={null}
graph LR
    A[Function<br/>Score conversation] --> B[Emit event<br/>conversation.csat_scored]
    B --> C[End]
```

**Start a follow-up workflow**

```mermaid theme={null}
graph LR
    A[Decide<br/>Qualified?] --> B[Emit event<br/>lead.qualified]
    B --> C[Send text<br/>Confirmation]
```
