A client asked us to support uninstall notifications for an integration we were building. Simple enough request. They wanted to trigger some cleanup logic and maybe flag accounts for outreach when users disconnected.
Which got us curious: how many platforms actually support this? We had a hunch it was inconsistent. We didn't realize how inconsistent until we started digging.
The Problem, Briefly
When a user uninstalls your app (or revokes your OAuth authorization), what happens?
From their side: tokens get revoked, features turn off, maybe data gets cleaned up. Pretty clean.
From your side as the integration partner: your code tries a request and gets a 401. Unauthorized. Now you're guessing. Was the token revoked? Did the user uninstall? Is it a temporary auth issue? Should you run cleanup? Should you reach out and help them set up a different integration? Are they a churn risk?
Some providers indicate "revoked" in the 401 response. Most don't. You're left polling endpoints and checking token status, hoping to figure out what happened.
The ideal solution is an uninstall notification webhook. The provider tells you "hey, this user just disconnected your app." You run your cleanup, update your records, maybe trigger a win-back flow. Done.
But how many providers actually offer this?
What We Found
We reviewed 88 platforms. Here's the breakdown:
Clear support: 23 platforms (~26%)
Partial/workarounds: 3 platforms (~3%)
No support: 62 platforms (~71%)
Seventy percent. More than two-thirds of the platforms we reviewed have no documented way to know when a user disconnects your app.
And even among the platforms that do support it, the mechanisms are all over the place.
The Good News: When It Exists, It's a Callback
For the platforms that do support uninstall notifications, the implementation is pretty consistent: it's some form of callback. Webhook, Events API, lifecycle endpoint, deauthorization notification—different names, same concept. Your app registers a URL, the platform hits it when a user disconnects.
The naming varies (Shopify calls it APP_UNINSTALLED, Slack calls it app_uninstalled, Stripe calls it account.application.deauthorized), but you're not dealing with fundamentally different architectures. It's a POST to your endpoint with event data.
A few outliers exist:
- HubSpot recently added
app_uninstallevents to their Webhooks v4 Journal (you poll the journal; push webhook coming soon) - Google Workspace Marketplace and Box require parsing audit logs
- Salesforce AppExchange runs an Apex script inside the subscriber's org rather than calling out to you
But for most platforms with support, you're subscribing to a webhook and handling a callback. The real problem isn't mechanism inconsistency—it's that 70% of platforms don't offer any mechanism at all.
Some marketplaces are raising the bar here. Jobber requires apps to subscribe and respond to APP_DISCONNECT webhooks before publishing. Pipedrive's approval process explicitly tests that you handle their uninstall callback. As a partner, these requirements add friction—one more thing to build and test before you can ship. But in the long run, it's better for you and your shared users. You're not left guessing when someone disconnects, and users get cleaner data hygiene on both sides.
Platforms With Clear Support
These providers have documented uninstall or deauthorization notifications:
| Platform | Mechanism | Event/Signal |
|---|---|---|
| Jobber | Webhook (required for listing) | APP_DISCONNECT |
| Shopify | Webhook | APP_UNINSTALLED |
| Slack | Events API | app_uninstalled |
| monday.com | App lifecycle events | app_uninstalled |
| Stripe Connect | Webhook | account.application.deauthorized |
| Square | Webhook | oauth.authorization.revoked |
| GitHub | GitHub App webhooks | installation (action: deleted) |
| Atlassian Connect (Jira/Confluence) | Lifecycle callback | /uninstalled event |
| Microsoft Teams | Graph change notifications | teamsAppInstallation delete |
| Wix App Market | App lifecycle webhook | App uninstalled |
| Pipedrive | Callback | DELETE to callback URL |
| Zoom | Deauthorization endpoint | app_deauthorized |
| BigCommerce | Callback handler | GET /uninstall |
| HubSpot | Webhooks v4 Journal (push coming) | app_uninstall |
| HighLevel (GoHighLevel) | Marketplace webhook | AppUninstall |
| Google Chat | Interaction event | REMOVED_FROM_SPACE |
| Zoho Cliq | Uninstallation handler | In-platform cleanup handler |
| Salesforce AppExchange | Apex uninstall script | Runs in subscriber org |
| AWS Marketplace (SaaS) | SNS notifications | Subscription cancellation |
| Google Cloud Marketplace | Pub/Sub | Entitlement changes |
| Microsoft Commercial Marketplace | Partner Center webhook | Unsubscribe event |
(Note: Some platforms appear twice in our data because they have multiple integration surfaces. We've consolidated here.)
Platforms With Partial Support
These have workarounds but no first-class uninstall webhook:
| Platform | What's Available |
|---|---|
| Google Workspace Marketplace | Detect via audit logs / Reports API (polling) |
| Box | Enterprise events / admin audit logs |
| RingCentral App Gallery | Uninstall flow guidance, notification pattern |
Platforms With No Support
These have no documented uninstall notification mechanism. Your options are polling token status or catching 401s:
B2B SaaS / Productivity:
Airtable, Asana, ClickUp, Coda, DocuSign, Dropbox, Figma, Freshworks, Intercom, Mailchimp, Miro, Notion, PagerDuty, ServiceNow, Smartsheet, Trello, Webflow, Wrike, Zendesk
HR / Recruiting / Payroll:
ADP, BambooHR, Greenhouse, Lever, Personio, Rippling, UKG, Workable, Workday
Finance / ERP:
Intuit QuickBooks Online, NetSuite, Oracle Cloud, SAP, Xero
Developer / DevOps:
Azure DevOps, Datadog, New Relic, Splunk
Data / Analytics:
Databricks, Segment, Snowflake
Identity:
Okta, OneLogin
iPaaS / Automation:
Boomi, Make, MuleSoft, n8n, Tray.io, Workato, Zapier
Other:
Aha!, Canva, Cisco Webex, Egnyte, Lucid, Mural, SendGrid, Twilio, Zoho (CRM, Creator, Desk)
Some of these are surprising. QuickBooks, Zendesk, ServiceNow, and Workday are massive ecosystems with thousands of integration partners. Notion and Figma have rapidly growing developer platforms. The entire iPaaS category (Zapier, Make, Workato, etc.) doesn't have documented uninstall notifications for apps built on their platforms.
(Side note on Miro: They had experimental webhooks for board content changes, which they sunset in December 2025. But those were never app lifecycle events. Miro has never had an app uninstall notification, as far as we can tell.)
What This Means for Integration Builders
If you're building integrations, plan for the worst case: assume you won't get an uninstall notification.
Your fallback pattern should be:
- Catch 401s and check if the response indicates revocation (some providers include this, most don't)
- Periodically validate token status via the provider's API (if available)
- Flag connections that fail auth repeatedly
- Surface "reconnect or disconnect" prompts to users when auth fails
- Build your cleanup logic to be idempotent and triggerable from multiple paths
If the platform does support uninstall notifications:
Subscribe to them. They're worth the implementation effort. You get cleaner data, faster response to churn signals, and less guessing about connection state.
When evaluating new platforms:
Check for app lifecycle webhooks early. If they don't exist, factor that into your maintenance estimates. You'll be writing more defensive code and handling more ambiguous states.
A Note on "Deauthorization" vs "Uninstall"
Some platforms (Stripe, Square, Zoom) send deauthorization events rather than uninstall events. These aren't quite the same thing:
- Uninstall: User explicitly removed your app from their account
- Deauthorization: User revoked your OAuth tokens (which might happen during uninstall, or separately)
For most integration use cases, deauthorization is close enough. If your tokens are revoked, you can't do anything anyway. But if you're tracking app installs for marketplace metrics, the distinction matters.
GitHub actually sends both: installation (deleted) for the app being removed, and github_app_authorization (revoked) for token revocation. That's the cleanest separation we've seen.
We're Adding This to Our Platform Profiles
We're incorporating uninstall notification support into the API and platform definitions on lefthook.com. If you're evaluating a specific platform, you'll be able to check whether it supports app lifecycle events alongside other integration considerations.
Last updated: February 2026
Have corrections or additions? Email us at hello@lefthook.com or hit us up on LinkedIn.
