Projects App Guide
Back to guide hub

Choose the likely migration command path.

hs app migrate vs hs project migrate

Use app structure and platform version to decide which path to verify. Non-project legacy public app, existing project app, and private app cases should not be collapsed into one generic migration step.

Last source check: 2026-08-29

Citation Summary

Use this page as an unofficial, source-linked planning reference for choose the likely migration command path. The key takeaway is: Use app structure and platform version to decide which path to verify. Non-project legacy public app, existing project app, and private app cases should not be collapsed into one generic migration step.

Suggested citation: Projects App Guide, "hs app migrate vs hs project migrate," last source check 2026-08-29, https://projectsappguide.com/hs-app-migrate-vs-hs-project-migrate

Answer Snapshot

Short Answer
Choose between `hs app migrate` and `hs project migrate` only after inspecting whether the app is non-project legacy, already project-based, public, private, and which platform version it uses.
Applies To
Developers with an existing HubSpot app who need to identify the likely migration command path to verify.
Verify
Open the migration overview, public app migration, latest-platform migration, and project command docs before running a command.
Boundary
Treat commands as paths to verify, not commands to run from memory.

Independent educational guide. Not affiliated with, endorsed by, or sponsored by HubSpot. Verify critical commands and platform behavior against official HubSpot documentation before deploying.

Decision rule

Do not choose between `hs app migrate` and `hs project migrate` from memory. Start by inspecting the app: does the repo have `hsproject.json`, what `platformVersion` is recorded, and is the app public, Marketplace-oriented, project-based, or private? Confirm the latest CLI first; the current 2026.03 migration page recommends CLI 8.4.0 or above.

Use the current 2026.03 matrix: a project already on 2025.2 updates top-level `hsproject.json` from `platformVersion` 2025.2 to 2026.03 and runs `hs project upload`; a project on 2023.1, 2023.2, 2025.1, or predating platform versions runs `hs project migrate` from the project working directory; an existing non-project legacy public app uses `hs app migrate` from the parent directory where the new project should be downloaded.

A legacy non-project private app cannot currently migrate to 2026.03 through this path. Stop and use the private-app planning guide rather than substituting a public-app command. Also treat the older public-migration page as feature/limitation evidence, not the authority for the latest target version, because that live page still contains 2025.2 wording while the latest-platform page defines the 2026.03 routes.

What to inspect before running either command

Inspect the repository root for `hsproject.json`, then record `platformVersion`. Also find the app configuration files, including `app-hsmeta.json` where relevant, and list any serverless functions, app cards, OAuth settings, webhooks, scopes, and Marketplace listing dependencies.

For an existing public app, check active installs and test-install implications before migration. For a project app, understand whether the work is a platform-version update or a broader feature migration. For a private app, capture backend and token implications because the public-app migration decision tree does not automatically apply.

Write down the command as a path to verify, not a command to run immediately. The final pre-run step should be opening the relevant official HubSpot docs and confirming they still match the local source archive.

Expected output, verification, and recovery

For `hs app migrate`, expect prompts to select the app, confirm compatible components, provide a project name and local path, and set required UIDs. The documented successful operation creates the HubSpot project, converts supported features to source files, builds and deploys Build #1, downloads the new local project, and, when an existing project is migrated, moves the prior `src` files into `archive` before populating the new `src`.

Before making follow-up changes, confirm the new project exists locally and in HubSpot, preserve UID values, record Build #1, open Builds & Deploys, and test existing authentication, installs, and supported features. HubSpot documents Build #1 as the baseline that can be redeployed to revert later project changes; that is a recovery point for later builds, not permission to skip pre-migration backups or feature testing.

If serverless functions used `environment` entries in legacy `serverless.json`, the current 2026.03 guide says those variables are not migrated automatically; recreate them as secrets with the documented `hs secret add` flow before testing functions. If the app has v1/v3 timeline events, move occurrence requests to v4 within seven days because the older endpoints then return 401. Do not schedule migration until that backend cutover has an owner and test window.

Common wrong turns

Wrong turn 1: using `hs project create` for an existing app modernization project. That command belongs to new Projects-based app creation, while migration paths require a separate review.

Wrong turn 2: treating every older project app as a non-project legacy public app. If `hsproject.json` exists, inspect platform-version guidance before selecting a migration path.

Wrong turn 3: promising automatic private app migration. Private app cases have documented limitations and may need manual planning or a net-new app approach depending on features.

Checklist

  • Run `hs --version`; the current 2026.03 guide recommends CLI 8.4.0 or above.
  • Find `hsproject.json`, record `platformVersion`, app distribution, and whether the app is legacy or project-based.
  • Select exactly one current path: 2025.2 edit-and-upload, older-project migrate, non-project public app migrate, or unsupported non-project private review.
  • Inventory serverless `environment` values, timeline events, UIDs, OAuth, installs, and unsupported features before confirmation.
  • For `hs app migrate`, record the generated project path, `src`/`archive` result, Build #1, auth/install checks, and feature tests.
  • Plan `hs secret add` work for legacy serverless environment values and a seven-day v4 cutover for migrated v1/v3 timeline events when applicable.
  • Open the current official migration docs immediately before running a command.

Claim / Source Map

These are the main claims this page relies on. Re-open the linked official HubSpot source before production-affecting commands, uploads, submissions, or client delivery.

ClaimOfficial source
`hs app migrate` belongs to public app migration guidance, not new app creation.Migrate an existing public app
For 2026.03, a 2025.2 project updates `platformVersion` then uploads, while 2023.1, 2023.2, 2025.1, and pre-version projects use `hs project migrate`.Migrate an existing app to 2026.03
The migration path depends on app state and current project structure.Determine your migration path to 2026.03
A successful non-project public app migration creates and deploys Build #1 as a baseline that HubSpot says can be redeployed to revert later project changes.Migrate an existing app to 2026.03
Migrated v1/v3 timeline-event requests must move to v4 within seven days or the old event endpoints return 401 errors.Migrate an existing public app

FAQ

How do I choose between hs app migrate and hs project migrate?

Inspect the repo and app state first. Existing non-project legacy public apps, already project-based apps, and private apps point to different official migration guidance.

Should I run a migration command immediately?

No. Treat the command as a path to verify after app classification, file inspection, install-risk review, and a current official source check.

What proves that hs app migrate completed?

Confirm the new local project and HubSpot project, expected source files, Build #1, preserved auth and installs, and feature tests. Keep Build #1 recorded as the documented baseline for reverting later project changes.

Get the full Projects CLI Skill Pack

Includes the agent skill, command cheatsheet, checklist, CSV tracker, handoff template, and official source map.

Independent educational product. Gumroad checkout opens in a separate page; no official affiliation or guarantee is implied.

View products