Webhook Event Lifecycle
When a fleet opens your invitation link and completes onboarding, the following events fire in order:Onboarding events
| Event | When it fires |
|---|---|
invitation.created | You call the Create Invitation endpoint. |
invitation.viewed | The fleet opens the magic link in their browser. |
invitation.accepted | The fleet accepts the invitation and begins connecting their TSP(s). |
invitation.declined | The fleet declines the invitation. The payload includes a decline_reason if one was provided. |
invitation.expired | The magic link expired before the fleet acted. You can create a new invitation to retry. |
invitation.deleted | The invitation was deleted before it was accepted. |
share_agreement.created | A data sharing agreement is created between you and the fleet. This defines which resources you can access. |
connection.created | A connection is established between the fleet and a TSP. May be skipped if the fleet already has an existing connection to that TSP — Catena reuses connections so data is only ingested once, even across multiple partners. |
fleet_connection.created | The connection is associated with the fleet. This is the final event — data ingestion begins shortly after. |
Operational events
After a fleet is connected and data is flowing, these events indicate issues with the connection or data ingestion:| Event | When it fires |
|---|---|
connection.staled | The TSP credentials are no longer valid. Catena stops fetching data until the fleet re-authenticates using the same invitation link. |
execution.failed | A single data fetch attempt failed (e.g., TSP returned an error or timed out). Catena retries automatically. |
schedule.deactivated | The data fetch schedule has been disabled after repeated failures exceed the consecutive error threshold. No further data will be ingested until the issue is resolved and the schedule is reactivated. |
The
invitation.sent event is also emitted when an invitation is delivered by email, but this only applies if email delivery is configured.Subscribing to Lifecycle Events
The recommended approach is to create one webhook subscription per event type without any filters using the Notifications API. This gives you a single, organization-wide stream of events that covers all fleets — both current and future ones you onboard. For example, to receive all invitation events:fleet_id field, so you can route events to the correct fleet in your system. Use your Share Agreements to map fleet_id back to your internal fleet_ref.
See the Webhook Setup Guide for details on creating subscriptions, filtering, and signature verification.
Alternative: Using callback_url
If you prefer not to manage webhook subscriptions manually, you can set a callback_url when creating the invitation. Catena automatically creates webhook subscriptions for the lifecycle events scoped to that specific invitation.
Redirect URLs
In addition to webhooks, you can configure redirect URLs to send the fleet back to your application after they complete (or fail) onboarding:Where to redirect the fleet after successful onboarding. Catena appends
?invitation_id={id}&fleet_ref={ref} as query parameters so you can identify which fleet completed onboarding.Where to redirect the fleet if they decline the invitation, the link expires, or an error occurs. The same query parameters are appended.