Domains

Domain Deleted

Sent when a domain is deleted, including when Whop removes a domain it added once nothing uses it. The payload is the domain as it was when it was deleted

Required permissions:

  • webhook_receive:domains
postWebhookdomain.deleted

Headers

webhook-idstring required

A unique identifier for this webhook request

Example:msg_xxxxxxxxxxxxxxxxxxxxxxxx
webhook-signaturestring required

The signature of the webhook request with the webhook version prepended

Example:v1,BASE64ENCODEDSIGNATURE
webhook-timestampstring required

The timestamp in seconds since the Unix epoch that the webhook was sent at on the server

Example:1727606400

Payload

account_idstring nullable

The account ID that this webhook event is associated with

api_version'v1' required

The API version for this webhook

api_version_datestring nullable required

The dated API version (Api-Version-Date) the payload is serialized to

idstring required

A unique ID for every single webhook request

previous_attributesobject

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

timestampstring date-time required

The timestamp in ISO 8601 format that the webhook was sent at on the server

type'domain.deleted' required

The webhook event type

Example payload

{
  "account_id": "biz_xxxxxxxxxxxxxx",
  "api_version": "v1",
  "api_version_date": "2026-07-20",
  "data": {
    "account_id": "biz_xxxxxxxxxxxxxx",
    "apple_pay": {
      "state": "pending"
    },
    "availability": {
      "available": true,
      "price": {
        "amount": "-1234.56",
        "currency": "usd",
        "decimals": 2,
        "display_decimals": 2
      },
      "renewal_price": {
        "amount": "-1234.56",
        "currency": "usd",
        "decimals": 2,
        "display_decimals": 2
      },
      "score": 75,
      "transfer_price": {
        "amount": "-1234.56",
        "currency": "usd",
        "decimals": 2,
        "display_decimals": 2
      }
    },
    "created_at": "2026-01-01T12:00:00.000Z",
    "domain": "shop.com",
    "email": {
      "state": "pending"
    },
    "id": "dom_xxxxxxxxxxxxxx",
    "issues": [
      {
        "capability": "verification",
        "code": "verification_required",
        "dns_records": [
          {
            "name": "_whop.shop.example.com",
            "type": "TXT",
            "value": "whop-domain-verification=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
          }
        ],
        "message": "Publish this TXT record to prove you own the domain. Verification runs automatically."
      }
    ],
    "metadata": {
      "project": "website"
    },
    "owned_by": {
      "id": "biz_xxxxxxxxxxxxxx",
      "route": "biz_xxxxxxxxxxxxxx",
      "title": "Rival Shop"
    },
    "pixel": {
      "state": "pending"
    },
    "platform": {
      "state": "pending"
    },
    "public_record": {
      "expires_at": "2026-01-01T12:00:00.000Z",
      "name_servers": [
        "ns1.example.com"
      ],
      "registered_at": "2026-01-01T12:00:00.000Z",
      "registrant": {
        "address": "Burlington\nMA",
        "contact_url": "https://registrar.example/contact/example.com",
        "country": "US",
        "organization": "Privacy Protect, LLC"
      },
      "registrar": {
        "iana_id": "9999",
        "name": "Example Registrar, Inc.",
        "url": "https://registrar.example"
      },
      "statuses": [
        "client transfer prohibited"
      ],
      "updated_at": "2026-01-01T12:00:00.000Z"
    },
    "registration": {
      "amount_due": {
        "amount": "-1234.56",
        "currency": "usd",
        "decimals": 2,
        "display_decimals": 2
      },
      "auto_renew": true,
      "method": "transfer",
      "phase": "awaiting_payment",
      "purchase_url": "https://whop.com/checkout/ch_xxxxxxxxxxxxxx/",
      "renewal_price": {
        "amount": "-1234.56",
        "currency": "usd",
        "decimals": 2,
        "display_decimals": 2
      },
      "state": "pending"
    },
    "status": "pending",
    "transfer": {
      "destination": "internal",
      "state": "ready"
    },
    "updated_at": "2026-01-01T12:00:00.000Z",
    "verification": {
      "state": "pending",
      "verification_expires_at": "2026-01-01T12:00:00.000Z"
    },
    "website": {
      "app": {
        "base_url": "https://domains-spec-site.whop.site",
        "id": "app_xxxxxxxxxxxxxx"
      },
      "state": "pending"
    }
  },
  "id": "msg_xxxxxxxxxxxxxxxxxxxxxxxx",
  "timestamp": "2025-01-01T00:00:00.000Z",
  "type": "domain.deleted"
}

Response

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

Changes

Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.