Set up your local environment
Before getting started, install the latest version of the HubSpot CLI. In a terminal window, run the following command:hs account auth to authenticate your HubSpot account:
- Follow the prompts to generate a Personal Access Key in your account. Your personal access key will then be passed to the terminal.
- In the terminal, you’ll then be asked whether you want to set the account as your default. Setting an account as default means CLI commands will automatically target it without needing the
--accountflag. You can change your default at any time with thehs account usecommand.
Create and upload a project
Configure your project details
You’ll be greeted with a welcome message, then you can begin setting up your project and app.

- Following the prompts, select App.

- Give your project a name.
- Set your project’s local directory (by default this will be your current working directory).
- Upload your project to HubSpot to initialize the first build and deploy.

Install the app and set up the card
Install the app
After your project builds and deploys, you’ll be prompted to navigate to your HubSpot account to walk through installing and previewing your app.
- In the terminal, press Enter to confirm that you want to install the app in your account. A browser window will open to the app installation page.
The “unverified app” warning on the installation page is expected. Apps that haven’t been submitted to and reviewed through HubSpot’s app marketplace verification process display this warning to protect users from installing apps from unknown developers. Since this is an app you built, it’s safe to proceed.
- Select the checkbox to confirm that you want to install the app, then click Connect App.
- On the installation success page, click Continue to manage App Card view.
Set the card location
- Click Manage locations.
- In the right sidebar, select the checkbox next to Get Started App Card to add the card to the middle column of the default contact record view.
- Click Save to save your changes and close the sidebar.
- In the Get Started App Card section, click Complete card setup to finish the walkthrough.
Run the local development server
Start local development
With the app installed and card location set, use the command below to switch back to the terminal to navigate into your project directory and start the local development server (When prompted, select the account you want to use for the testing session. You can select an account you’ve already connected to the CLI, or create a new test or sandbox account by following the additional prompts. Learn more about the different account types.
Once the local development server starts, a browser window will open to the Local Dev Panel page in HubSpot. Along with the actions you can perform on this page, it also displays high-level information about the project, such as the number of the latest build and deployed build. The last updated time will update any time you make a change to your local project files.
hs project dev). The development server command will automatically check for dependencies and install them as needed.

Preview your app card
- Click Preview next to Get Started App Card.

- On the contacts index page, click the name of a contact.
- In the middle column, scroll down in the Overview tab to see your app card. A Developing locally badge will display next to the app card name. This badge is only visible to you while the development server is running.

Continue local development
The local development server will automatically pick up any changes you make to frontend React/TypeScript files (e.g.,
To test this out, make a change to the app card’s 
get-started-app-card.tsx). Any changes made to other file types, such as .json configuration files, will need to be uploaded to HubSpot before they can be picked up. You can either do this by running the hs project upload command in the terminal, or by clicking the Upload and build button on the Local Dev Panel page.
.tsx file, then save your change. For example, the code block below includes changes to the EmptyState component’s title text, layout, and spacing.