Skip to content

Workflows

Workflows are one of the most complex asset types JetStack AI handles. A single workflow can reference dozens of other assets — lists, forms, emails, pipelines, properties, owners, and even other workflows. JetStack AI captures the full workflow definition during import and intelligently remaps every internal reference when deploying to a destination portal.

During import, JetStack AI pulls the complete workflow definition from HubSpot’s automation API. This includes:

  • Enrollment criteria — the full filter tree of conditions that determine which records enter the workflow, including nested OR/AND branches
  • Actions — all action nodes in the workflow graph (HubSpot supports 40+ action types), including delays, if/then branches, email sends, property sets, list adds/removes, webhook calls, custom code actions, and internal notifications
  • Suppression lists — lists that prevent specific records from entering or re-entering the workflow
  • Goals — conditions that, when met, cause a record to exit the workflow early
  • Data sources — the object type and any associated data source configuration (contacts, companies, deals, tickets, custom objects, or UNIFIED_EVENTS)

Workflows frequently reference other assets. JetStack AI automatically resolves dependencies on:

Dependency TypeWhere It Appears
ListsEnrollment criteria, suppression lists, “add to list” actions
Forms”Form submission” enrollment triggers
Emails”Send email” actions, A/B email actions
Other workflows”Enroll in workflow” actions, goal criteria
Pipelines”Set pipeline stage” actions, enrollment filters on deal/ticket stage
PropertiesEnrollment criteria filters, “set property” actions, “copy property” actions
Owners”Set owner” actions, “rotate owner” actions (owner ID arrays)
Subscription types”Set subscription” actions
Lifecycle stagesEnrollment criteria, “set lifecycle stage” actions
Custom objectsObject-type-based enrollment, custom object property actions
Template modulesReferenced inside email or page actions that use template strings

All dependencies are resolved during the import phase and stored as part of the asset’s dependency graph. During deploy, JetStack AI processes dependencies in the correct order so that referenced assets exist before the workflow is created.

Deploying a workflow to a new portal requires extensive ID remapping. JetStack AI performs the following transformations:

Filter Transformation (Enrollment Criteria and Goals)

Section titled “Filter Transformation (Enrollment Criteria and Goals)”

Enrollment criteria use a recursive OR/AND branch structure. JetStack AI walks the entire filter tree and remaps:

  • Property names that differ between portals (especially custom properties)
  • List IDs in inList filter conditions
  • Owner IDs in owner-based filters
  • Pipeline stage IDs in deal/ticket stage filters
  • Enum option values for properties with mapped options
  • Subscription type IDs for email subscription filters

Each action node in the workflow graph is inspected and remapped:

  • Email IDs in “send email” actions are replaced with the destination email’s ID
  • Workflow IDs in “enroll in workflow” actions are replaced with the destination workflow’s ID
  • List IDs in “add to list” or “remove from list” actions
  • Owner ID arrays in rotation actions are remapped to destination owner IDs
  • Pipeline stage IDs in “set pipeline stage” actions
  • Template string replacement — strings using {{ enrolled_object.propertyName }} syntax are scanned and property names are remapped to their destination equivalents

All suppression list IDs are replaced with their corresponding destination list IDs.

Workflows may contain custom code actions (serverless functions). JetStack AI preserves the code body as-is during import and deploy. Custom code that references portal-specific IDs (hardcoded API keys, portal IDs, or object IDs) will not be automatically remapped. Review custom code actions after deploy.

Webhook actions include the full request body configuration. JetStack AI preserves these payloads without modification. If webhooks contain hardcoded URLs or portal-specific tokens, they must be updated manually in the destination portal.

Workflows using the UNIFIED_EVENTS data source (behavioral event triggers) require special handling. The event definitions must exist in the destination portal. JetStack AI captures the event references but cannot create behavioral event definitions — these must be pre-configured.

Certain enrollment filters include inListType metadata that is not accepted by the HubSpot create API. JetStack AI automatically strips these metadata filters during deploy to prevent validation errors.

Complex Enrollment Criteria Fail to Deploy

Section titled “Complex Enrollment Criteria Fail to Deploy”

Workflows with deeply nested enrollment criteria (multiple levels of OR/AND branching) may hit HubSpot’s filter complexity limits in the destination portal. If a workflow fails to deploy with a filter validation error:

  • Check whether the destination portal’s HubSpot tier supports the filter types used (some filters require Marketing Hub Professional or Enterprise)
  • Review the enrollment criteria for references to assets that failed to deploy earlier in the process
  • Look for filter conditions referencing properties that do not exist in the destination portal

If a workflow action contains template strings like {{ enrolled_object.custom_property }} and the custom property was not included in the import, the template string will be preserved as-is. This can cause runtime errors in the destination portal if the property does not exist. Ensure all properties referenced in template strings are included in the import selection.

Workflow Shows as “Needs Review” After Deploy

Section titled “Workflow Shows as “Needs Review” After Deploy”

Workflows are always deployed in a paused state. This is intentional — it allows you to review the workflow configuration in the destination portal before activating it. HubSpot may flag certain actions as needing review if referenced assets (like emails) are still in draft state.