SafeWebhook/ HubSpot
Launch Workbench
Productivity & CRM Integration Guide

Test HubSpot Webhooks Online

Test HubSpot CRM contact created, deal updated, and workflow action webhooks with v3 signature check.

Direct Answer / Quick Summary

To test HubSpot webhooks, open HubSpot Developer Account > Apps > Webhooks, set your target URL to your SafeWebhook endpoint, subscribe to contact or deal events, and trigger an edit in your HubSpot CRM.

Key Capabilities & Testing Highlights

  • Validate complex HubSpot v3 signature schemes.
  • Inspect contact.creation, deal.propertyChange, and company.associationChange.
  • Test HubSpot workflow custom code action payloads.
  • Forward CRM events to localhost development servers.
Signature Header
X-HubSpot-Signature-v3
Cryptographic Scheme
HMAC-SHA256 (Method + URI + Body + Timestamp Scheme)
Payload Retention
100% Client-Side

Step-by-Step HubSpot Webhook Setup

Follow these 4 simple steps to capture real-time HubSpot events in your browser:

1
In HubSpot Developer Account, open your App settings.
2
Click "Webhooks" in the sidebar and enter your SafeWebhook URL into "Target URL".
3
Click "Create subscription" and select event types (e.g. contact.creation).
4
Create a test contact in HubSpot CRM to trigger an event.

Sample HubSpot Webhook Payload

application/json
[
  {
    "eventId": 100,
    "subscriptionId": 2891029,
    "portalId": 8921849,
    "appId": 102938,
    "occurredAt": 1755541200000,
    "subscriptionType": "contact.propertyChange",
    "attemptNumber": 0,
    "objectId": 12345,
    "propertyName": "email",
    "propertyValue": "lead@example.com",
    "changeSource": "CRM"
  }
]

HubSpot Signature Verification Recipes

Copy-paste production-ready HMAC verification code for your backend:

Node.js / Express Recipecrypto.timingSafeEqual
const crypto = require('crypto');

function verifyHubSpotV3(method, uri, rawBody, timestamp, signature, clientSecret) {
  const sourceString = method + uri + rawBody + timestamp;
  const hash = crypto.createHmac('sha256', clientSecret).update(sourceString).digest('base64');
  return crypto.timingSafeEqual(Buffer.from(hash), Buffer.from(signature));
}
Python / Flask / FastAPI Recipehmac.compare_digest
import hmac
import hashlib
import base64

def verify_hubspot_v3(method, uri, raw_body, timestamp, signature, secret):
    source = f"{method}{uri}{raw_body.decode('utf-8')}{timestamp}".encode('utf-8')
    computed = base64.b64encode(hmac.new(secret.encode('utf-8'), source, hashlib.sha256).digest()).decode('utf-8')
    return hmac.compare_digest(computed, signature)

Frequently Asked Questions: HubSpot Webhooks

What is included in the HubSpot v3 signature hash?

HubSpot v3 signatures concatenate HTTP Method + Request URI + Request Body + Timestamp header before HMAC-SHA256 hashing.

Ready to test HubSpot webhooks in real-time?

Get your free, private edge endpoint instantly. Zero signup, zero credit card, 100% free forever.

Launch Webhook Workbench →

Related Productivity & CRM Webhook Guides