Learn how to create an app card on the latest version of the developer platform.
2025.2
) of the developer platform. App cards work similarly to existing cards you may have built for legacy apps, with some minor modifications to your configuration files.
This guide walks you through how to create a boilerplate app card in an existing app, along with how to upload and preview your card in HubSpot. You’ll then upload all these files to your project, where you can preview the card in a developer test account where you’ve installed your app.
Add a card component to your project
cards/
directory will be created for you in the app/
directory. The cards/
directory will contain:*-hsmeta.json
).jsx
)package.json
filecards/
directory (excluding package.json
if it already exists).Upload to HubSpot
hs project install-deps
to install the dependencies needed for the app card. This will update the cards/
directory with the necessary Node modules and a package-lock.json
file, which will speed up the build of the uploaded app card extension and ensure that any dependencies in your local development environment and production match.hs project upload
to upload the project to your default account.--account
flag and specify the HubID of the account. For example hs project upload --account 123456
.hs project open
. A browser tab will open to the project details page, where you can view your project, app, and its new card component.
hs project add
is configured to appear in the middle column of contact records. To display the card, you’ll first need to add it to the contact record view:
hs project dev
command:
hs project dev
.Developing locally
tag, indicating that the local development server is ready.
.jsx
or .tsx
files). If you need to make changes to other file types, such as a .json
configuration file, you’ll need to reupload the project and restart the local development server.
hubspot.fetch()
.crm.objects.custom.read
scope on your app before migration. For projects built before the latest version of 2025.2
, custom object cards could be built with only the crm.schemas.custom.read
scope required. In the latest version (2025.2
) of the developer platform, crm.objects.custom.read
is required. If you don’t include this scope, the build during the migration will fail with the following error:[ERROR] Build failed or timed out. Inspect the failure to update your build and retry the migration.Your customer-facing app will be unaffected, despite the status in the project details page. To fix the issue, add the crm.objects.custom.read
scope to your legacy app’s scopes, re-build the app on version 2023.2
, then re-try the migration.