Connect a service
A connector is a source that feeds cues into a stream. Point one at the things that already happen in your stack - signups, payments, deploys, errors - and they land as quiet rows in one inbox.
Streams and connectors are different
Keep the two straight and the rest follows. A stream is an inbox lane you name and own - it does not fetch anything by itself. A connector is the source that fills a lane. Any connector can route into any stream, and you can point several connectors at the same stream. One collects; one delivers.
The catalog
Cue ships two dozen connector types, grouped by the pillar each one feeds. Need something that is not listed? The generic Webhook connector accepts any service that can POST JSON, and agents connect over MCP rather than as a webhook source.
How a service reaches Cue
Most connectors are webhook sources. When you add one to a stream, Cue gives you a private ingest URL for that connector and walks you through pointing the service at it. Every delivery is authenticated before it becomes a cue - Cue never trusts an unverified payload.
POST https://api.attentioncue.com/ingest/<connectorId>Who holds the signing secret
How a delivery is verified depends on the service. There are three modes, and the app picks the right one for the connector you choose:
generatedCue mints the secretCue shows you a secret once. You set it on the source, which then sends it back with each delivery in the X-Cue-Secret header (or the header that service expects). Used by GitHub, Vercel, Sentry, Linear, and the generic webhook.
providerThe source issues the secretThe service signs each delivery with its own signing secret. You paste that secret (e.g. Stripe's whsec_…) into Cue, and Cue verifies every payload against it. Used by Stripe, Clerk, WorkOS, PagerDuty, and others.
noneNo secretThe unguessable ingest URL is the credential. Point the source at it and you are done. Used by sources that cannot send a custom header or signature.
A delivery, end to end
For a generated-secret connector - the generic webhook, for example - the source POSTs its event to the ingest URL and sends the secret Cue gave you in the X-Cue-Secret header:
POST https://api.attentioncue.com/ingest/connector_4c5b6a70-8d2e-4f19-9a3b-7c1e2d4f6a80
X-Cue-Secret: cuesec_9a3b7c1e2d4f6a808d2e4f199a3b7c1e
Content-Type: application/json
{ /* the event payload your source sends */ }202 Accepted
{ "ok": true }
// The event is verified, mapped to a cue via the connector's
// eventMapping, and dropped into its stream. A 202 is also returned
// when an event doesn't map to anything - it is simply ignored.The ingest endpoint answers with a status that says what it did with the delivery:
202- accepted (also returned when an event does not map to a cue, so a retrying source is not stuck).401- the signature or secret did not verify.404- no connector with that id.400- the body was not valid JSON.
From event to cue
A verified event is mapped to a cue through the connector's eventMapping - each source event name becomes a cue with a title and a kind. Most land as quiet notification cues. Your alert rules can then raise a cue's severity to needs_you when it genuinely warrants the one amber signal; everything else stays calm. The raw event is kept on the cue so the detail panel can show it.
Next steps
- REST API reference - create, list, rotate the secret of, and remove connectors programmatically, and read the
ConnectorandeventMappingshapes. - Connect an AI agent over MCP - the one connector that is not a webhook: agents raise blocking decisions with
request_decision.