Triggers

When something happens in a connected app (a new Slack message, a GitHub commit, an incoming email), a trigger sends that event to your app as a structured payload. You write the handler. Composio handles the connection to the provider, delivery, retries, and signing.

triggers.deliveryone webhook URL

Connected apps

  • GitHubrealtime
  • Slackrealtime
  • Gmailpolling
Composio

Your application

Your webhook URL
POST /webhooks/composio

One URL receives every event.

app event Composio your webhook URL

Where events arrive

Composio delivers every event to one destination you control: your webhook URL. You register it once per project, and Composio POSTs every trigger event there, signed so you can verify it.

Realtime vs polling

Under the hood, Composio learns about events in one of two ways. You don't configure this. It's a property of the trigger type, and it only affects how quickly an event reaches you.

KindHow Composio learns about the eventLatencyExamples
RealtimeThe provider pushes the event to Composio the moment it happens.Near-instantSlack, Asana, Notion, Outlook
PollingComposio checks the provider on a schedule.Up to ~15 min on Composio-managed authGmail, Google Calendar

Either way, the event lands in the same place: your subscription or webhook URL, in the same payload shape.

If you bring your own OAuth app, some providers only deliver to URLs registered on that app, so you register Composio's ingress URL there once. See Custom OAuth webhooks.

Trigger types and instances

A trigger type is a kind of event you can listen for, like GITHUB_COMMIT_EVENT or a new Slack message. Each toolkit has its own set.

A trigger instance is a trigger type you've activated for one user's connected account. It has its own ti_* ID that you can enable, disable, or delete independently.

Working with triggers

  1. Authenticate the user for the toolkit: an auth config and a connected account. See Authentication.
  2. Create a trigger for the user's connected account. See Creating triggers.
  3. Receive its events: locally with subscribe(), or in production at your webhook URL. See Receiving events.
  4. Manage triggers: enable, disable, or delete. See Managing triggers.

Next

Creating triggers

Activate a trigger for a user so events start flowing