HubSpot Webhook API

Receive and process webhook events from HubSpot CRM, resolving settings from the M4 Connect configurator app.

API Version

Configuration

Request Preview

URL:
POST /api/v1/test-location-123/webhook/hubspot
Headers:
{
  "Content-Type": "application/json",
  "m4-connect-key": "[your-api-key]"
}
Body:
"{\n  \"objectId\": 123456,\n  \"propertyName\": \"lifecyclestage\",\n  \"propertyValue\": \"subscriber\",\n  \"portalId\": 123456,\n  \"appId\": 123456,\n  \"occurredAt\": 1788934743014,\n  \"subscriptionId\": 123456,\n  \"attemptNumber\": 0\n}"

API Reference

Endpoint (v1, current)

POST /api/v1/[locationId]/webhook/hubspot

Endpoint (legacy, deprecated)

POST /api/hubspot-webhook/[uuid]

Parameters

locationId (v1)
GHL Location ID; settings resolved from the M4 Connect configurator app (subFeature: hubspot)
uuid (legacy, deprecated)
UUID of the Notion page containing the webhook configuration

Request Body

The request body contains the HubSpot webhook payload with contact and deal event information.

Standard HubSpot Webhook Fields:

  • objectId - The ID of the HubSpot object (contact, deal, etc.)
  • propertyName - The property that changed (e.g., lifecyclestage, email)
  • propertyValue - The new value of the property
  • portalId - Your HubSpot portal ID
  • occurredAt - Unix timestamp of when the event occurred

Response

{
  "success": true,
  "data": {
    "processed": true,
    "objectId": 123456,
    "timestamp": "2026-09-09T06:19:03.014Z"
  }
}

Supported Events

  • Contact property changes (lifecyclestage, email, etc.)
  • Deal updates (stage changes, property updates)
  • Custom object events
  • Association changes

Features

  • Support for multiple HubSpot event types
  • Notion page-based configuration for flexible routing
  • Event validation and processing
  • Error recovery and detailed logging