HubSpot contact.propertyChange webhook payload example

HubSpot · event: contact.propertyChange · content type: application/json

This is a representative sample — fake IDs, real structure. To see a payload with your data, point the provider at a capture URL (button below).

See it live, not frozen

One click creates a free capture bin with this exact payload already in it — pretty-printed, headers inspectable, replayable to your own endpoint:

Then paste the bin's URL into HubSpot's webhook settings to capture a real delivery. No signup.

Headers

content-type: application/json
x-hubspot-signature-v3: oRuEXAMPLEbase64hmacEXAMPLEQfLmDzq5H30v0i8U=
x-hubspot-request-timestamp: 1787961600123

Body

[
  {
    "eventId": 100,
    "subscriptionId": 12345,
    "portalId": 62515,
    "appId": 20202,
    "occurredAt": 1787961600000,
    "subscriptionType": "contact.propertyChange",
    "attemptNumber": 0,
    "objectId": 123,
    "changeSource": "CRM",
    "propertyName": "email",
    "propertyValue": "jane.doe@example.com"
  }
]

Things that bite people

Send it yourself

Reproduce this delivery against any endpoint (your handler, a bin, staging):

$ curl -X POST https://your-endpoint.example/hook \
  -H 'content-type: application/json' \
  -H 'x-hubspot-signature-v3: oRuEXAMPLEbase64hmacEXAMPLEQfLmDzq5H30v0i8U=' \
  -H 'x-hubspot-request-timestamp: 1787961600123' \
 -d '[{"eventId":100,"subscriptionId":12345,"portalId":62515,"appId":20202,"occurredAt":1787961600000,"subscriptionType":"contact.propertyChange","attemptNumber":0,"objectId":123,"changeSource":"CRM","propertyName":"email","propertyValue":"jane.doe@example.com"}]'

← All payload examples · Related guide · Signature debugger · Docs