Notifications
How you hear when a client's connection changes, in the dashboard, by email and by webhook.
A workflow fails the moment a client's access ends. Operate As tells you first, and also tells you when a new client is ready to go. Your team is only emailed when someone has to act, or when a client is ready.
Who hears
Everyone who can manage clients
Dashboard notifications and connection emails. Nobody signs up one by one: if your role can manage clients, you get them.
Everyone who can manage billing
The two usage emails, at 80% of your API calls and at the limit. Each goes once a billing period.
Your client
Only if you saved their email. They're emailed when their access ends, with a Reconnect button, and whenever something they connected changes, so they'd notice a change they didn't make.
Your webhook
Every event in the table, so your systems and n8n workflows can react on their own.
Save your clients' emails
When access ends, we email the client their link straight away and your team's email says so. Most clients reconnect in a minute, before anyone has to chase them.
Events
| Event | Sent when |
|---|---|
connection.connected | A client connects a service, by signing in or pasting a key. Reconnecting sends it too |
client.completed | A client has connected everything you asked for. Once per client, again if you ask for more |
connection.expired | The provider refused to renew access, or refused a pasted key at the daily check: the client removed it on their side, deleted the key, or it lapsed |
connection.removed | A connection is removed, by the client from their page or by your team |
connection.account_changed | A provider was connected with a different account from the one before. Worth checking |
connection.limited | A client paused a connection, resumed it, or allowed only reads, from their page |
client.passkey_saved | A client opened their link and saved a passkey, so they can connect what you asked for |
api_key.new_address | An API key was used from a network it hadn't been used from before |
api_key.refused_address | An API key was tried from outside the networks it's limited to, and refused |
webhook.test | You press Send test on the API & webhooks page |
What the emails say
| To | Says | |
|---|---|---|
| Client is ready | Team | Their workflows can start |
| Access ended | Team | Which client and provider, that workflows will fail until they reconnect, their link, and whether we emailed them |
| Please reconnect | Client | Your agency needs them to reconnect, with a button to their link |
| Client removed a connection | Team | Which client removed which provider |
| Different account connected | Team | Which client, which provider, and the account before and after |
| What changed | Client | Each connection made or removed, a different account connected, and passkeys added or removed |
| New passkey invite | Client | The link to save a new passkey after losing theirs. Never the code, which you give them yourself |
| 80% of API calls used | Billing | How much is used and when it resets |
| All API calls used | Billing | Calls are refused until the reset, or until you upgrade. See Plans and limits |
No email for these
Your team isn't emailed when a single service connects (you get one email once everything is connected), or when your own team removes a connection (you did it). Both still show in the dashboard.
Why you hear before your workflows do
Access usually ends at a renewal, and the daily check renews every connection. So the alert often lands before a workflow runs. See Keeping access alive.
Pasted keys have nothing to renew, so the daily check asks the service whether each key still works instead. A key the client deleted is marked expired and sends connection.expired. If a workflow uses it before the next check, the service's refusal comes back in the call's status, usually 401 or 403.