Quick tipDeveloperSmart CRM

HubSpot webhooks: subscriptions, batching and retries

Webhooks replace polling. They arrive in batches, out of order, and sometimes more than once.

Subscription
Requires an app
Permissions
Developer access to the app
Time
5 min · Advanced
Last verified

Short answer

App webhook subscriptions tell HubSpot which events to send to your URL. Requests are POSTs with a JSON array of under 100 events, with up to 10 concurrent requests per installing account by default (adjustable, minimum above five). Events are not ordered and can arrive in separate batches. HubSpot signs requests with X-HubSpot-Signature and retries failed deliveries up to 10 times. Setting changes can take five minutes to apply.

1. Where apps live now

In my demo portal, Development, Legacy Apps notes that legacy private apps are still available in sandbox and test accounts, while production accounts should use service keys or project-based apps.

Legacy Apps page with a notice about legacy private apps in sandbox and test accounts and a list of apps
Legacy Apps (1) and the notice (2).

2. A delivery

[
  {
    "eventId": 100,
    "subscriptionType": "contact.propertyChange",
    "objectId": 123,
    "propertyName": "lifecyclestage",
    "propertyValue": "customer",
    "occurredAt": 1759800000000
  }
]

3. Build it to survive

  • Make processing idempotent; use eventId to ignore repeats.
  • Association change subscriptions fire twice, once per side.
  • For workflow-driven calls instead, see the Send a webhook action. For keys, see service keys.

Sources

New field notes by email

One email when a new article publishes.

Still stuck?

If this did not fix it, the problem is probably specific to your setup. Book a call and we will look at it together.

Book a call with Sam