POST to the HubSpot workflows API to create a new workflow, specifying the type as CONTACT_DATE_CENTERED or the appropriate CRM-based trigger type for the target object
Define the enrollment trigger criteria using a filter branch that specifies the property conditions (e.g., lifecycle stage equals a target value) that must be true for a contact to enroll
Add a webhook action to the workflow's action list, specifying the target URL, HTTP method (POST), and any static or property-token-based request body fields
Activate the workflow by updating its status to ACTIVE via the API or confirming activation in the UI
Test enrollment by updating a contact to meet the trigger criteria and confirming the webhook is called with the expected payload
Retrieve workflow execution history via the API or HubSpot UI to diagnose any action failures
Known gotchas
The Automation API for creating workflows programmatically has limited support for all action types compared to what is available in the UI; verify that the webhook action type is supported in the API version you are using
Workflow enrollment criteria use HubSpot's filter branch syntax, which is distinct from the CRM Search API filter syntax even though both involve property comparisons
Webhooks delivered by HubSpot workflows do not include the v3 webhook signature header used by the webhook subscriptions API; they require separate authentication configuration on the receiving endpoint
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp