Skip to main content
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

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:
{
  "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 for event format, retention, querying, webhooks, and plan limits.

Usage patterns

Record conversation outcome Start a follow-up workflow