Identify the workflow ID from the HubSpot UI (Settings > Workflows > workflow URL contains the ID) or via GET /automation/v3/workflows to list all workflows
Verify the target workflow has enrollment trigger type set to allow manual enrollment — workflows with only list-based or property-based triggers may reject manual enrollments
POST to /automation/v3/workflows/{workflowId}/enrollments/contacts/{contactId} with an empty body and your private app token as the Bearer token in the Authorization header
Expect a 204 No Content response on success; a 400 indicates the contact is already enrolled or the workflow does not permit re-enrollment
To unenroll, send DELETE to the same path — this removes the contact from the active workflow execution without marking them as completed
For bulk enrollments across many contacts, rate-limit your requests to stay within HubSpot's API rate limits and use a queue with retry logic for 429 responses
Known gotchas
A contact cannot be enrolled in the same workflow more than once at the same time — re-enrollment requires first unenrolling and waiting for the workflow to clear the contact's active status
Enrolling a contact via the API bypasses any enrollment filters or suppression lists configured on the workflow — contacts excluded by list membership or active status can still be enrolled programmatically
Workflows API endpoints may differ across HubSpot account tiers; confirm endpoint availability for your portal's subscription level before building an integration that depends on this API
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