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.
What JetStack AI Captures
Section titled “What JetStack AI Captures”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)
Dependencies
Section titled “Dependencies”Workflows frequently reference other assets. JetStack AI automatically resolves dependencies on:
| Dependency Type | Where It Appears |
|---|---|
| Lists | Enrollment 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 |
| Properties | Enrollment criteria filters, “set property” actions, “copy property” actions |
| Owners | ”Set owner” actions, “rotate owner” actions (owner ID arrays) |
| Subscription types | ”Set subscription” actions |
| Lifecycle stages | Enrollment criteria, “set lifecycle stage” actions |
| Custom objects | Object-type-based enrollment, custom object property actions |
| Template modules | Referenced 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.
Deploy Remapping
Section titled “Deploy Remapping”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
inListfilter 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
Action Remapping
Section titled “Action Remapping”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
Suppression List Remapping
Section titled “Suppression List Remapping”All suppression list IDs are replaced with their corresponding destination list IDs.
Edge Cases and Special Handling
Section titled “Edge Cases and Special Handling”Custom Code Actions
Section titled “Custom Code Actions”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 Request Bodies
Section titled “Webhook Request Bodies”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.
UNIFIED_EVENTS Data Source
Section titled “UNIFIED_EVENTS Data Source”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.
inListType Metadata Filters
Section titled “inListType Metadata Filters”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.
Troubleshooting
Section titled “Troubleshooting”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
Template String Remapping Failures
Section titled “Template String Remapping Failures”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.