Prepare a safer project upload.
HubSpot hs project upload Checklist
`hs project upload` uploads a HubSpot project and creates a build. Teams should verify account targeting, auto-deploy behavior, UID stability, auth configuration, and Marketplace implications before using it for meaningful changes.
Last source check: 2026-08-29
Citation Summary
Use this page as an unofficial, source-linked planning reference for prepare a safer project upload. The key takeaway is: `hs project upload` uploads a HubSpot project and creates a build. Teams should verify account targeting, auto-deploy behavior, UID stability, auth configuration, and Marketplace implications before using it for meaningful changes.
Suggested citation: Projects App Guide, "HubSpot hs project upload Checklist," last source check 2026-08-29, https://projectsappguide.com/hubspot-project-upload-checklist
Answer Snapshot
- Short Answer
- `hs project upload` uploads the current project to HubSpot and creates a build; if auto-deploy is enabled, a successful build may deploy automatically.
- Applies To
- Developers moving a Projects-based HubSpot app from local work toward a sandbox, test account, or main account upload.
- Verify
- Open the current HubSpot CLI project commands docs and create-app docs before uploading to a production-affecting account.
- Boundary
- This checklist does not guarantee a successful build, deployment, install flow, or Marketplace review.
Independent educational guide. Not affiliated with, endorsed by, or sponsored by HubSpot. Verify critical commands and platform behavior against official HubSpot documentation before deploying.
Before you upload
Treat `hs project upload` as a change-management moment, not a casual sync command. The official project commands docs describe it as uploading a project to HubSpot and creating a build, with auto-deploy behavior depending on project settings. That means the checklist should start with the target account, the current project state, and whether a successful build can become a deployed change.
Run from the intended project root: record the working directory and confirm its top-level `hsproject.json` names the project you intend to upload. If the command cannot resolve a project, fix the directory or project structure rather than retrying from an arbitrary parent folder.
Confirm which account name in `~/.hscli/config.yml` is intended for the upload. HubSpot documents `--account=accountName` for targeting a specific account, including workflows that move from sandbox to main account. For agency work, make the account name explicit in the handoff so a developer is not relying on whichever account was last authenticated in a terminal.
If the team uses config profiles, record both the requested profile and the account it is expected to select. After upload, verify the actual project/account through build history and `hs project info --json`; do not assume that a syntactically accepted profile or account argument reached the intended environment.
Inspect `hsproject.json`, `app-hsmeta.json`, and feature configuration before upload. If you changed OAuth settings, redirect URLs, scopes, app cards, settings pages, or other JSON configuration, record exactly what changed and why. Keep UID changes especially visible because the create-app docs warn that changed UIDs can make the platform treat a component as different from previous builds.
Upload vs deploy
The most important SEO answer for searchers is simple: upload and deploy are related but not identical. `hs project upload` creates a build. If the project is configured to auto-deploy, that successful build can deploy automatically; if it is not, a manual deploy step may be needed. Always check current project settings and current docs before giving a stakeholder a go-live expectation.
For a sandbox-to-main workflow, use a written release note even if the code change is small. Include the command planned, account target, expected build behavior, rollback owner, and what to test after upload. This is especially useful when an AI agent or junior developer is preparing the command but a senior developer owns the account consequence.
Do not describe this guide as a deployment guarantee. A clean local project and a correct command can still fail because of account permissions, app configuration, platform validation, missing backend OAuth configuration, Marketplace requirements, or changes in HubSpot documentation after this source-check date.
Production-minded checklist
A useful pre-upload packet contains: source-check date, CLI version, target account, project directory, changed files, expected auth mode, redirect URLs, scopes, UID changes, auto-deploy setting, test plan, and owner. That packet is small enough to paste into a pull request, issue, or client delivery note.
For public or Marketplace apps, connect upload readiness to install-flow readiness. HubSpot's create-app docs describe post-upload work around installation and OAuth app credentials. If your backend OAuth server still lacks the correct client ID or client secret, an uploaded project is not the same as a tested app.
After upload, capture build result, deploy result if applicable, app install result, and any manual follow-up. Those notes help the next developer distinguish a command failure from an auth failure, a Marketplace readiness gap, or an unsupported assumption.
Validate, observe, and recover
Run `hs project validate` before upload and resolve every reported `app-hsmeta.json` readiness problem. After upload, run `hs project list-builds --limit 5` and use `hs project open` to confirm the new build ID, status, auto-deploy outcome, and target account. `hs project info --json` can provide machine-readable project and component metadata when a handoff or CI check needs it.
Split failures by layer. Validation failure means repair configuration and do not upload. Build failure means inspect Builds & Deploys and the reported source error before creating another build. A successful build with a failed install belongs in the OAuth, scope, permission, or static-auth path. For runtime or authorization behavior in an installed app, use the current `hs app logs` filters such as `--errors-only` and `--since 1h`; `hs project logs` is specifically for a project's function logs.
Do not use `--force` as generic recovery; HubSpot documents it as bypassing warnings for destructive actions. If auto-deploy is off, `hs project deploy --build <verified-build-id>` can deploy a specific successful build. If a deployed change regresses, first confirm an earlier known-good build ID and its compatibility in Builds & Deploys, assign the rollback owner, and only then use the documented specific-build deploy path. A previous build is not automatically safe for changed auth, data, or Marketplace state.
Checklist
- Record `hs --version` and source-check date.
- Run from the intended project root and verify its top-level `hsproject.json` before upload.
- Confirm the intended HubSpot account and use `--account=accountName` when appropriate.
- When using a config profile, record the profile-to-account mapping and verify the actual target after upload.
- Check whether the project is configured for auto-deploy.
- Review changed JSON configuration files before upload.
- Flag UID changes before upload.
- Confirm OAuth redirect URLs, scopes, and backend credential readiness when applicable.
- Run `hs project validate` and resolve findings before upload.
- Write the post-upload test plan before running the command.
- After upload, capture `hs project list-builds --limit 5`, `hs project open`, build ID, deploy state, and target account.
- Route build, install/auth, and runtime/log failures separately; do not use `--force` as a generic retry.
- Before a specific-build recovery deploy, verify the earlier successful build ID, compatibility, and rollback owner.
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.
| Claim | Official source |
|---|---|
| `hs project upload` uploads a project to HubSpot and creates a build. | HubSpot CLI project commands |
| A project configured to auto-deploy can deploy automatically after a successful build, and new projects are documented as auto-deploy by default. | HubSpot CLI project commands |
| Changing component UIDs after upload can cause HubSpot to recognize a component as different from previous builds. | Create a new app using the CLI |
| `hs project validate` checks `app-hsmeta.json` upload readiness, while `hs project list-builds` and `hs project open` expose build history and project state. | HubSpot CLI project commands |
FAQ
Does hs project upload deploy automatically?
It can, depending on project auto-deploy settings. HubSpot's project command docs say an auto-deploy project deploys after a successful build, and new projects are documented as auto-deploy by default.
How do I avoid uploading to the wrong HubSpot account?
Record the intended account before upload and review HubSpot's documented `--account=accountName` option for targeting a specific account from your CLI config.
Should I change UIDs before upload?
Only with deliberate review. HubSpot's create-app docs note that changing a UID after upload may make the platform recognize the component as different from previous builds.
Download the 2-page checklist
Use the affected/not affected table, command map, and preflight checklist before choosing a path.
Independent educational product. Gumroad checkout opens in a separate page; no official affiliation or guarantee is implied.