Fix Notion ‘Webhook Cannot Be Registered’ on Integration Capability Limit
🔍 WiseChecker

Fix Notion ‘Webhook Cannot Be Registered’ on Integration Capability Limit

You are trying to register a new webhook in a Notion integration but see the error message “Webhook Cannot Be Registered.” This error means the integration has reached its maximum allowed number of active webhook subscriptions. Notion enforces a strict limit on how many webhooks a single internal or public integration can maintain at one time. This article explains the exact limit, why the error occurs, and the steps to resolve it by removing unused webhooks or upgrading your integration plan.

Key Takeaways: Fixing the Webhook Registration Limit in Notion Integrations

  • Integration Capabilities > Webhook Subscriptions: Notion limits integrations to 3,000 active webhook subscriptions for Plus and Business plans, and 1,500 for Free plans.
  • Notion API > List Webhooks endpoint: Use the GET /webhooks endpoint to retrieve all registered webhooks and identify which ones are no longer needed.
  • Notion API > Delete Webhook endpoint: Use the DELETE /webhooks/{webhookId} endpoint to remove obsolete webhooks and free up capacity.

ADVERTISEMENT

Why Notion Blocks New Webhook Registration

Notion uses a per-integration webhook subscription limit to prevent abuse and ensure API stability. Each integration, whether internal or public, can register a maximum number of webhooks. The limit depends on the workspace plan:

  • Free plan workspace: 1,500 active webhooks per integration
  • Plus, Business, and Enterprise plan workspaces: 3,000 active webhooks per integration

A webhook subscription is counted as active from the moment it is created until it is explicitly deleted via the API. Deleted or expired webhooks do not count toward the limit. The error “Webhook Cannot Be Registered” appears when the integration already has the maximum number of active subscriptions. This can happen if your automation creates webhooks dynamically but never cleans them up, or if multiple developers share the same integration token and register webhooks without coordination.

Steps to Resolve the Webhook Registration Limit Error

  1. Identify your workspace plan
    Go to Settings & Members > Settings > Workspace Settings. Look for the plan name at the top of the page. If you are on the Free plan, the limit is 1,500 webhooks per integration. On Plus or Business, the limit is 3,000.
  2. List all registered webhooks for the integration
    Send a GET request to the Notion API endpoint https://api.notion.com/v1/webhooks. Include the integration token in the Authorization header. The response returns an array of webhook objects with their IDs, URLs, and statuses. Example using cURL:
    curl -X GET 'https://api.notion.com/v1/webhooks' -H 'Authorization: Bearer YOUR_INTEGRATION_TOKEN' -H 'Notion-Version: 2022-06-28'
  3. Review the webhook list for unused subscriptions
    Compare each webhook URL against your current automation workflows. Any webhook pointing to a decommissioned endpoint, a test server, or a service that no longer runs should be removed. Also look for duplicate webhooks that subscribe to the same event and page.
  4. Delete obsolete webhooks
    For each webhook you want to remove, send a DELETE request to https://api.notion.com/v1/webhooks/{webhookId}. Replace {webhookId} with the actual ID from the list. Example:
    curl -X DELETE 'https://api.notion.com/v1/webhooks/abc123-def456' -H 'Authorization: Bearer YOUR_INTEGRATION_TOKEN' -H 'Notion-Version: 2022-06-28'
    After deletion, the webhook no longer counts toward the limit. Repeat for all unused webhooks.
  5. Retry registering the new webhook
    Send a POST request to https://api.notion.com/v1/webhooks with the required JSON body, including the target URL, events array, and optional filter. If the total active webhooks are now below the limit, the registration will succeed.

ADVERTISEMENT

If Notion Still Refuses to Register the Webhook

Webhook limit is still exceeded after deleting webhooks

If you deleted webhooks but still receive the error, check that the deletions completed successfully. The DELETE endpoint returns a 200 OK response with an empty body. If you received a 404 or 400 error, the webhook ID might be incorrect or the deletion failed. Run the list command again to confirm the total count has decreased. Also note that deleted webhooks may take up to 60 seconds to be removed from the limit count in some cases. Wait one minute and retry.

Multiple integrations share the same token

If your team uses the same integration token across different services, each service may register webhooks independently, pushing the total over the limit. Create a separate internal integration for each distinct automation service. Each integration has its own webhook limit. Go to https://www.notion.so/my-integrations and create a new integration for the service that needs the webhook.

Webhooks created by deleted pages still count

When a page that a webhook subscribes to is deleted, the webhook subscription itself remains active in Notion’s system. These orphaned webhooks still count toward the limit. You must delete them manually using the DELETE endpoint as shown above. There is no automatic cleanup for webhooks on deleted pages.

Notion Plan Webhook Limits Compared

Item Free Plan Plus / Business / Enterprise
Maximum webhooks per integration 1,500 3,000
Webhook retention after page deletion Webhook stays active until manually deleted Webhook stays active until manually deleted
API rate limit per integration 3 requests per second 3 requests per second (higher limits available on Enterprise)
Webhook event types supported All (page_updated, page_created, etc) All

If you consistently need more than 3,000 webhooks, consider restructuring your automation to use fewer webhooks by subscribing to parent pages or using database-level events instead of individual page events. For Enterprise workspaces, contact your Notion representative to request a higher webhook limit.

You can now identify and remove unused webhook subscriptions to free up capacity for new registrations. Next, set up a recurring script that runs weekly using the List Webhooks and Delete Webhook endpoints to automatically purge orphaned webhooks. As an advanced tip, use the filter property when creating webhooks to subscribe only to specific database pages, which reduces the total number of webhooks needed for granular monitoring.

ADVERTISEMENT