---
title: "App Installation Deleted"
method: POST
path: "app_installation.deleted"
tags: ["App Installations"]
---

# App Installation Deleted

`POST app_installation.deleted` (webhook)

Sent to your app's own webhooks when an account removes your app. The installation stops appearing in `GET /app_installations`, and your app can no longer act on that account. The envelope's `account_id` is the account that removed it

Required permissions:
 - `webhook_receive:app_installations`

## Headers

- `webhook-id` string, required: A unique identifier for this webhook request
- `webhook-signature` string, required: The signature of the webhook request with the webhook version prepended
- `webhook-timestamp` string, required: The timestamp in seconds since the Unix epoch that the webhook was sent at on the server

## Payload

- object
  - `account_id` string, nullable: The account ID that this webhook event is associated with
  - `api_version` 'v1', required: The API version for this webhook
  - `api_version_date` string, nullable, required: The dated API version (Api-Version-Date) the payload is serialized to
  - `data` AppInstallation, required
    - `account` AccountSummary, required
      - `id` string, required: Account ID, prefixed `biz_`.
      - `title` string, required: Account display name.
    - `app` AppSummary, required
      - `developer` AccountSummary, required
        - `id` string, required: Account ID, prefixed `biz_`.
        - `title` string, required: Account display name.
      - `icon` AppIcon, required
        - `url` string, required: Icon image URL. Always present — the default app icon when none is uploaded.
      - `id` string, required: App ID, prefixed `app_`.
      - `name` string, required: App display name.
    - `created_at` string, required: When the app was first installed on the account, as an ISO 8601 timestamp. Installing the app again later keeps the original time.
    - `external_id` string, nullable, required: Your app's own identifier for this installation, such as the ID of the linked account in another system, or `null` when none is set. At most 255 characters and unique across your app's installations, so you can find an installation with `GET /app_installations?external_id=`; setting one another installation already has returns a `409`. Only the app and its developer see it; for the account the app is installed on it is always `null`.
    - `id` string, required: App installation ID, prefixed `aag_`.
    - `metadata` object, nullable, required: String keys and values your app stores about this installation, such as a sync cursor or the ID of the linked account in another system. Empty until your app sets a key, and kept if the account removes the app and installs it again. At most 50 keys; keys are at most 100 characters and values at most 500. Only the app can change it. Only the app and its developer see it; for the account the app is installed on it is always `null`.
    - `requesting_reauthorization` boolean, required: Whether the app now asks for permissions the account hasn't approved yet.
    - `updated_at` string, required: When the installation last changed, such as a `metadata` update or the account changing the app's permissions, as an ISO 8601 timestamp.
  - `id` string, required: A unique ID for every single webhook request
  - `previous_attributes` object: For some `.updated` events, the old values of the payload fields that changed, keyed by field name. Omitted when no capture is available for the event
  - `timestamp` string, date-time, required: The timestamp in ISO 8601 format that the webhook was sent at on the server
  - `type` 'app_installation.deleted', required: The webhook event type

## Acknowledgement `200`

Return a 200 status to indicate that the data was received successfully

---

[API](https://skmtc.dev/whop/apis/whop-api.md) - [All operations](https://skmtc.dev/whop/apis/whop-api/llms.txt) - [OpenAPI document](https://skmtc.dev/whop/apis/whop-api/revisions/9993d9eaebc8?raw)
