Skip to main content
An account can become disconnected for many reasons, including the following:
  • A user resets their password or clicks Sign Out of All Devices, invalidating any access tokens Seam may be using to authenticate to the third-party API.
  • The third-party service invalidates access tokens due to excessive usage or as part of a system update.
  • An access token used internally by Seam expires.

Detect a Disconnection

When an account becomes disconnected, Seam emits a connected_account.disconnected event. Subscribing to this event through a webhook is the recommended way to detect a disconnection, because it tells you the moment the account needs attention instead of on your next poll.
Do not rely on device.disconnected for this. That event fires only when a device transitions from online to offline, so it does not fire when an account-level authorization problem is added to a device that was already offline. A device can end up in the account_disconnected state without any further device.disconnected event, which means an integration listening only for device.disconnected will tell the owner “your device is offline” when the real problem is “your account needs reconnection.” See Displaying Device Health.
Seam also records the disconnection on the connected_account itself, so you can inspect the current state at any time. When an account is disconnected, Seam emits an error like the following example on the connected_account:
Seam recommends adding error handling logic to you application for this error. Your app should also include a fallback case if it encounters an unknown generic error code. To resolve this error, create a new Connect Webview that the user can use to log in. You may need to instruct them to use the same email address that they used previously. You can use connected_account.user_identifier to learn the user’s email address. For more information about creating Connect Webviews, see Connect Webview Process.