Automatically deploy a HubSpot CMS project to your account 🚀
In your GitHub repo, create one new secret for:
HUBSPOT_PERSONAL_ACCESS_KEY
- Your personal access key
Then create a variable (in the same interface as secrets):
HUBSPOT_ACCOUNT_ID
- This is your HubSpot account ID
This guide walks through setting up a new workflow file that automatically uploads new changes on your main
branch to your HubSpot CMS account. If you're adding a deployment step to an existing workflow, you can skip ahead.
- In your project, create a GitHub Action workflow file at
.github/workflows/main.yml
- Copy the following example workflow into your
main.yml
file.
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: HubSpot Deploy Action
uses: HubSpot/hubspot-cms-deploy-action@v2
with:
src_dir: <src> ## ex. src
dest_dir: <src> ## ex. my-theme
account_id: ${{ vars.hubspot_account_id || secrets.hubspot_portal_id }}
personal_access_key: ${{ secrets.hubspot_personal_access_key }}
- Replace the
src_dir
with the directory of your CMS project in your repo - Replace the
dest_dir
with the directory it should be uploaded to in your target account - Commit and merge your changes
Note: Do not change the account_id
or personal_access_key
values in your workflow. Auth related values should only be stored as GitHub secrets.
If you'd like to auto-deploy to a staging account you have in HubSpot, you can create an additional workflow that runs on push
to your associated stanging branch in your repo.
on:
push:
branches:
- qa
...
account_id: ${{ vars.hubspot_account_id || secrets.hubspot_portal_id }}
To add HubSpot CMS deployment as a step in an existing GitHub Action workflow, add the following step:
- name: HubSpot Deploy Action
uses: HubSpot/hubspot-cms-deploy-action@v2
with:
src_dir: <src> ## ex. src
dest_dir: <src> ## ex. my-theme
account_id: ${{ vars.hubspot_account_id || secrets.hubspot_portal_id }}
personal_access_key: ${{ secrets.hubspot_personal_access_key }}
Note: You can configure your action to run based on different criteria, such as pushing to a QA branch. Learn more about events that trigger actions here.
src_dir
- Project directory relative to the repodest_dir
- Target directory in HubSpot
HUBSPOT_ACCOUNT_ID
- Target account id
HUBSPOT_PERSONAL_ACCESS_KEY
- Authentication key
HUBSPOT_PORTAL_ID
- Target account id. This was deprecated in favor ofHUBSPOT_ACCOUNT_ID
, this is more consistent with how we refer to accounts, additionally we moved it to be a variable since GitHub variables now exist and allow for you to be able to see and modify the value. The Account ID does not need the same protection that an authentication key does.