Skip to main content Skip to footer

HubSpot Developer Changelog

Custom Actions Support for Enrolled & Non-Enrolled Records

HubSpot workflows are becoming more flexible with expanded support for event-based processes. Traditionally, workflows and their custom actions have relied on a specific “enrolled object” (contact, company, deal, ticket, etc.) to execute logic, which limits their usage when no object enrollment occurs. With the introduction of new workflow types that aren’t tied to a single enrolled object (such as event-based workflows), there is a need for custom actions to adapt accordingly. 

To support these workflows, we’re introducing a new requiresObject boolean flag to extend support for "target objects" in custom actions on November 24th, 2025. This update addresses a long-standing limitation in HubSpot's custom action framework by allowing actions to function in workflows even when no object is enrolled. Additionally, the objectTypes field will now apply at the action level rather than the workflow level. This means each action within a workflow can independently specify which object type it targets. Actions will interpret the data according to the object type selected or, by default, the workflow’s enrolled object.

With these changes, custom actions will now present customers with a dropdown to select a “target object”. By default, this will be set to the workflow’s enrolled object, preserving existing behavior for current workflows.

How things worked before: 

    • Action definition: The objectTypes field determines which workflow object type the action is available for. 
    • Execution payload: An object field is included in the payload (with object type and ID)
    • Fetch options: The workflow’s objectTypeId is included in the request payloads

Because these elements always depended on the enrolled object, custom actions could not function in workflows that weren’t tied to an object type.

What's changing?

As mentioned above, we’re introducing a requiresObject boolean flag (defaulting to true) on all custom actions. When this flag is set to true, a target object will automatically be added to the action, allowing it to work with any object, not just the enrolled one. The workflow runtime will populate the object in the execution payload.

What does this mean for developers?

This change affects all custom actions built using the Custom Workflow Actions API or Developer Projects that include custom actions.

By default, all actions will have requiredObject: true, meaning the target object selector will appear in workflows. See example below:

{ "actionUrl": "https://webhook.site/94d09471-6f4c-4a7f-bae2-c9a585dd41e0", "requiresObject": true, "objectTypes": ["CONTACT"], "inputFields": [ { "typeDefinition": { "name": "staticInput", "type": "string", "fieldType": "text" }, "supportedValueTypes": ["STATIC_VALUE"], "isRequired": true }

Note: In the example of the custom action definition above, because the action includes objectTypes: [“CONTACT”], it cannot set requiresObject: false, as defining required objectTypes means the action depends on an object.

If your action does not need to receive a target object and you don’t want end users to see the object selector dropdown,  you can set requiresObject: false in your custom action definition.

When is it happening?

This change goes into effect in 30 days on Monday, November 24th, 2025

Questions or comments? Join us in the developer forums for a peer-to-peer discussion.