Dependencies & Auto-Import
HubSpot assets frequently reference other assets. A workflow might send an email, enroll contacts from a list, and update a pipeline stage. Each of those references is a dependency — an asset that must exist for the parent asset to function correctly.
JetStack AI automatically detects these dependencies during import and fetches them alongside your explicitly selected assets. This page explains how dependency detection works, provides the full dependency map, and covers edge cases.
How Auto-Detection Works
Section titled “How Auto-Detection Works”When you select an asset for import, JetStack AI’s specialized parser for that asset type scans its configuration for references to other assets. Each discovered reference becomes a dependency that is also imported.
This process is recursive. If a dependency has its own dependencies, those are discovered and imported too. The recursion continues until all dependencies at every level have been resolved.
For example, if you select a single workflow:
- JetStack AI parses the workflow and finds it references List A and Email B
- List A is imported — its parser finds it references Form C
- Form C is imported — its parser finds it references a redirect page (Page D)
- Email B is imported — its parser finds it references Template E
- Template E is imported — no further dependencies
- Page D is imported — its parser finds it references Template F
- Template F is imported — no further dependencies
- The workflow is imported last, with all dependencies already in place
You selected 1 asset but ended up with 7 assets in your library. This is expected and intentional.
Explicit vs. Dependency Assets
Section titled “Explicit vs. Dependency Assets”Your Asset Library distinguishes between two categories:
- Explicit assets — assets you directly selected in the import wizard
- Dependency assets — assets that were automatically imported because another asset references them
This distinction helps you understand why assets appear in your library that you did not manually select. Both types are fully functional and can be deployed — the label is purely informational.
Full Dependency Map
Section titled “Full Dependency Map”The following table shows what each asset type can depend on. During import, JetStack AI scans for all of these reference types.
Workflows
Section titled “Workflows”Workflows have the broadest dependency footprint:
| Dependency Type | Where Found |
|---|---|
| Lists | Enrollment criteria, suppression lists, branch conditions |
| Forms | Form submission triggers, enrollment criteria |
| Emails | Send-email actions, A/B email actions |
| Other Workflows | Enroll-in-workflow actions, goal criteria |
| Pipelines | Set-deal-stage actions, pipeline-based enrollment |
| Properties | Set-property actions, branch conditions, enrollment criteria |
| Owners | Set-owner actions, rotation actions |
| Subscription Types | Email send actions |
| Lifecycle Stages | Set-lifecycle-stage actions |
| Custom Objects | Object-based workflow enrollment and actions |
| Dependency Type | Where Found |
|---|---|
| Nested Lists | ”Is member of list” filter criteria |
| Forms | ”Has filled out form” filter criteria |
| Emails | ”Has received/opened/clicked email” filter criteria |
| Workflows | ”Is enrolled in workflow” filter criteria |
| Pages | ”Has visited page” filter criteria |
| Owners | ”Contact owner” filter criteria |
| Subscription Types | Subscription-based filter criteria |
| Lifecycle Stages | Lifecycle-based filter criteria |
| Pipelines | Deal/ticket pipeline filter criteria |
| Dependency Type | Where Found |
|---|---|
| Workflows | Form submission workflows, follow-up workflows |
| Pages | Redirect URL after submission |
| Properties | Form fields mapped to contact/company properties |
| Owners | Default owner assignment |
| Teams | Team-based routing on submission |
| Lifecycle Stages | Lifecycle stage set on submission |
| Subscription Types | Consent/subscription fields |
Emails
Section titled “Emails”| Dependency Type | Where Found |
|---|---|
| Templates | Email template reference |
| Blogs | Blog RSS feed configuration (for blog emails) |
| Workflows | Linked workflow references in smart content |
| Lists | Smart content list-based rules |
| Subscription Types | Email subscription type assignment |
| Dependency Type | Where Found |
|---|---|
| Templates | Page template reference |
| Blogs | Blog listing references |
| Forms | Embedded form modules |
| HubDB Tables | Dynamic content data sources |
| Template Modules | Custom module instances on the page |
Templates
Section titled “Templates”| Dependency Type | Where Found |
|---|---|
| Parent Templates | Template inheritance (extends) |
| Modules | Module references in template source |
| HubDB Tables | HubDB data lookups in HubL code |
| Forms | Default form references in template configuration |
Pipelines
Section titled “Pipelines”| Dependency Type | Where Found |
|---|---|
| Workflows | Stage-entry automation workflows |
| Emails | Stage-entry automated emails |
| Owners | Default stage owners |
| Properties | Required properties per stage |
Blog Posts
Section titled “Blog Posts”| Dependency Type | Where Found |
|---|---|
| Blogs | Parent blog container |
| Templates | Post template reference |
| Blog Authors | Post author reference |
HubDB Tables
Section titled “HubDB Tables”| Dependency Type | Where Found |
|---|---|
| Other HubDB Tables | Foreign key column references |
Why Extra Assets Appear in Your Library
Section titled “Why Extra Assets Appear in Your Library”The most common question after an import is: “I only selected 5 assets, but 20 showed up in my library. Why?”
The answer is dependency auto-import. Every asset that your selected assets reference — directly or transitively — is imported to ensure a complete, deployable set. Without these dependencies, deployment would fail because the destination portal would be missing required referenced assets.
You can identify which assets were auto-imported by checking the asset’s import type in the library. Dependency assets are labeled accordingly.
Circular Dependencies
Section titled “Circular Dependencies”In rare cases, two assets may reference each other. Common examples:
- A workflow adds contacts to a list, and that list’s filter criteria include “is enrolled in” that same workflow
- Two workflows reference each other through enroll-in-workflow actions
JetStack AI detects circular dependencies by tracking the processing path during depth-first traversal. When a cycle is detected:
- The traversal stops recursing along the circular path
- The asset that would create the cycle is imported with a partial result — its own data is stored, but the back-reference is flagged for deferred resolution
- All other non-circular dependencies continue importing normally
- The circular reference is resolved during deployment using a two-pass approach
Circular dependencies do not cause import failures. They are handled gracefully and logged for visibility.
Best Practices
Section titled “Best Practices”- Select top-level assets only. Do not manually select assets you think might be dependencies — JetStack AI discovers them automatically. Selecting them explicitly just creates duplicate work.
- Review the import summary. Before confirming, check the grouped summary in Step 3 of the wizard. If unexpected asset types appear, it is because your selected assets depend on them.
- Start small for complex portals. If you are importing from a portal with hundreds of interconnected assets, start with a small set to understand the dependency footprint before importing everything.
- Check the Activity Log. After import, the Activity Log shows every asset that was processed, including which were explicit selections and which were auto-detected dependencies.
Next Steps
Section titled “Next Steps”- Creating Modules from Imports — Bundle your imported assets for reuse
- Troubleshooting Import Failures — Resolve dependency-related import issues
- How Deployment Works — See how the dependency graph is used during deployment