Search documentation

Search for pages in the documentation

System Events Reference

Complete reference for workflow trigger events

This reference documents all system events that can trigger workflows, their payloads, and use cases.

Event Types Overview

Event TypeDescriptionCommon Use
MEETING_ENDEDMeeting has finishedPost-meeting automation
MEETING_STARTMeeting is startingJoin reminders
MEETING_START_MINUS_*Before meeting startsPre-meeting prep
MEETING_ENDED_FOR_DEAL_ROOMDeal room meeting endedDeal automation
MANUALManually triggeredTesting, on-demand
SCHEDULEDCron schedule firesPeriodic tasks

Meeting Events

MEETING_ENDED

Fires when a meeting has ended.

When it fires:

  • After the meeting end time passes
  • When a recorded meeting's recording is available

Payload:

json
{
  "eventType": "MEETING_ENDED",
  "meetingId": "mtg-12345",
  "organizationId": 123,
  "timestamp": "2024-01-15T11:00:00Z"
}

Use Cases:

  • Generate meeting summaries
  • Send follow-up notifications
  • Create CRM tasks
  • Update deal status

Available Data (after Load Meeting):

json
{
  "meeting": {
    "id": "mtg-12345",
    "title": "Weekly Team Sync",
    "startTime": "2024-01-15T10:00:00Z",
    "endTime": "2024-01-15T10:30:00Z",
    "durationMinutes": 30,
    "attendees": [...],
    "type": "internal",
    "organizer": {...}
  },
  "callRecording": {
    "transcriptSummary": "...",
    "transcript": "...",
    "duration": 1800
  }
}

MEETING_START

Fires when a meeting begins.

When it fires:

  • At the scheduled meeting start time

Payload:

json
{
  "eventType": "MEETING_START",
  "meetingId": "mtg-12345",
  "organizationId": 123,
  "timestamp": "2024-01-15T10:00:00Z"
}

Use Cases:

  • Send join reminders
  • Update status in other systems
  • Log meeting start

MEETING_START_MINUS_24H

Fires 24 hours before a meeting starts.

When it fires:

  • 24 hours prior to scheduled start time

Use Cases:

  • Send preparation reminders
  • Generate prep materials
  • Research attendees

MEETING_START_MINUS_6H

Fires 6 hours before a meeting starts.

Use Cases:

  • Final prep reminders
  • Brief generation
  • Team notifications

MEETING_START_MINUS_1H

Fires 1 hour before a meeting starts.

Use Cases:

  • Last-minute prep
  • Agenda distribution
  • Join link reminders

MEETING_START_MINUS_30M

Fires 30 minutes before a meeting starts.

Use Cases:

  • Final reminders
  • Mobile notifications
  • Quick prep review

MEETING_START_MINUS_15M

Fires 15 minutes before a meeting starts.

Use Cases:

  • Immediate reminders
  • Technical prep (camera, mic)
  • Document pull-up

MEETING_ENDED_FOR_DEAL_ROOM

Fires when a meeting associated with a deal room ends.

When it fires:

  • Meeting must be linked to a deal room
  • After meeting end time

Payload:

json
{
  "eventType": "MEETING_ENDED_FOR_DEAL_ROOM",
  "meetingId": "mtg-12345",
  "dealRoomId": 67890,
  "organizationId": 123,
  "timestamp": "2024-01-15T11:00:00Z"
}

Additional Data Available:

json
{
  "dealRoom": {
    "id": 67890,
    "name": "Acme Corp Deal",
    "stage": "negotiation",
    "value": 50000,
    "crmOpportunityId": "opp-123"
  }
}

Use Cases:

  • Update deal status
  • Create CRM tasks
  • Notify sales team
  • Track deal signals

Non-Meeting Events

MANUAL

Triggered manually by user action.

When it fires:

  • User clicks Trigger button in the workflow editor
  • API call to trigger endpoint

Payload:

json
{
  "eventType": "MANUAL",
  "meetingId": "mtg-12345",  // Optional, if meeting selected
  "organizationId": 123,
  "userId": 456,
  "timestamp": "2024-01-15T14:30:00Z"
}

Use Cases:

  • Testing workflows
  • On-demand processing
  • Re-running failed executions
  • Ad-hoc automation

SCHEDULED

Triggered by cron schedule.

When it fires:

  • At times defined by cron expression

Payload:

json
{
  "eventType": "SCHEDULED",
  "scheduleId": "sched-123",
  "cronExpression": "0 0 9 * * *",
  "timezone": "America/New_York",
  "organizationId": 123,
  "timestamp": "2024-01-15T09:00:00Z",
  "fireAt": "2024-01-15T09:00:00Z"
}

Use Cases:

  • Daily reports
  • Weekly summaries
  • Periodic cleanup
  • Scheduled syncs

Event Filtering

Filter by Meeting Properties

Configure triggers to fire only for specific meetings:

External meetings only:

json
{
  "rules": {
    "meeting.type": "external"
  }
}

Meetings with recordings:

json
{
  "rules": {
    "hasRecording": true
  }
}

Filter by Attendees

Meetings with specific domain:

json
{
  "rules": {
    "attendeeDomains": ["important-client.com"]
  }
}

Minimum attendee count:

json
{
  "rules": {
    "minAttendees": 3
  }
}

Event Payload Reference

Common Fields

All events include:

FieldTypeDescription
eventTypestringEvent type identifier
organizationIdnumberOrganization ID
timestampstringWhen event was created (ISO 8601)

Meeting Event Fields

Meeting events add:

FieldTypeDescription
meetingIdstringMeeting identifier (UUID)

Deal Room Event Fields

Deal room events add:

FieldTypeDescription
dealRoomIdnumberDeal room identifier

Scheduled Event Fields

Scheduled events add:

FieldTypeDescription
scheduleIdstringSchedule identifier
cronExpressionstringCron expression
timezonestringIANA timezone
fireAtstringScheduled fire time

Accessing Event Data

In CEL Expressions

cel
trigger.eventType == "MEETING_ENDED"
trigger.meetingId != null
trigger.timestamp > "2024-01-01T00:00:00Z"

In Liquid Templates

liquid
Event: {{ trigger.eventType }}
Meeting: {{ trigger.meetingId }}
Time: {{ trigger.timestamp | date: "%B %d, %Y" }}

After Load Meeting

liquid
{% if trigger.eventType == "MEETING_ENDED" %}
Meeting {{ json.meeting.title }} has ended.
{% endif %}

Event Deduplication

Events are deduplicated by:

  • Organization ID
  • Event type
  • Event ID (meeting ID, schedule occurrence)

This prevents duplicate workflow executions for the same event.

External Event Key Format:

text
org:{orgId}:event:{eventType}:id:{eventId}

Event Timing

Meeting End Events

Meeting end events fire when:

  1. Meeting end time has passed
  2. Recording processing is complete (if recorded)

There may be a delay of several minutes after the scheduled end time.

Pre-Meeting Events

Pre-meeting events fire at the specified offset:

  • MINUS_24H: 24 hours before start
  • MINUS_6H: 6 hours before
  • MINUS_1H: 1 hour before
  • MINUS_30M: 30 minutes before
  • MINUS_15M: 15 minutes before

Timing is approximate (±1-2 minutes).

Scheduled Events

Scheduled events fire based on the cron expression with:

  • Timezone-aware calculation
  • Lookahead materialization for reliability
  • Approximate timing (±1 minute)

Best Practices

Choose the Right Event

ScenarioRecommended Event
Post-meeting summaryMEETING_ENDED
Deal room updatesMEETING_ENDED_FOR_DEAL_ROOM
Pre-meeting prepMEETING_START_MINUS_1H
Daily reportSCHEDULED
TestingMANUAL

Handle Missing Data

Not all meetings have all data:

liquid
{% if json.callRecording %}
{{ json.callRecording.transcriptSummary }}
{% else %}
No recording available
{% endif %}

Consider Timing

For time-sensitive actions, account for event delivery timing:

  • Pre-meeting events: Build in buffer time
  • Post-meeting events: Expect delays for recording processing

Troubleshooting

Event Not Firing

Check:

  1. Is workflow released and Active?
  2. Is trigger configured correctly?
  3. Does meeting match filter rules?
  4. Is event type correct?

Duplicate Executions

Check:

  1. Multiple workflows with same trigger?
  2. Event key collision?
  3. Retry from DLQ creating duplicate?

Wrong Meeting Data

Check:

  1. Event type matches use case?
  2. Load Meeting node included?
  3. Filter rules correct?