Last modified: September 3, 2025
This feature requires approval from HubSpot to use. If you’re interested in applying to get access to app objects, or if you want to learn more about the functionality, please submit this in-app form.
1
Install the latest version of the HubSpot CLI
You’ll need the latest version of the HubSpot CLI to create a unified app. In a terminal window, run the following command to update your version of the CLI:The CLI needs to be version
7.6.0
or later. You can check which version of the CLI you have by running hs --version
.2
Authenticate your developer account
You’ll then need to authenticate your developer account by running the following command:
- Follow the prompts to generate a Personal Access Key in your account, then copy and paste it into the terminal to save your configuration.
- During this beta period, it’s recommended that you make this account your default in the CLI. This will prevent potential errors with access for the account you’ve enrolled in the beta.
3
Create a new boilerplate project
Run the command below in your terminal to create a new project and marketplace app with either the currently compatible features or an app object reference schema.
4
Configure the newly created project and upload it to your developer account
The projects framework moves app features that were previously configured in the UI or via the API over to source code files, typically defined as
<file-name>-hsmeta.json
configuration files.App features are then created using a combination of subfolders from the main /src/app
directory and other configuration files as needed. To configure your project:- Add one or more valid redirect URLs to the
app-hsmeta.json
file based on your local (or another non-production) OAuth server configuration.
To get started, you can use the sample OAuth Node.js example and run it locally. It’s already set up to work with
https://localhost:3000/oauth-callback
as the redirect URL configured in the boilerplate example code from the hs project create
command you ran in the previous step.- Change the
uid
property of the app in theapp-hsmeta.json
file and the other*-hsmeta.json
configuration files in your project.
UIDs are used as a unique identifier for all your project’s components and features. Once a feature and UID are created, changing or modifying the UID in subsequent deployments will force the platform to recognize it as different from previous features, which may not be intended.
- When using app objects for your unified app, only the authorized “name” property definitions will be allowed based on your object request. As part of this private beta, you should have separately received confirmation of your app’s approved “name”, which should be used in the
*-object-hsmeta.json
configuration. For reference, the fully-qualified name (FQN) for your app object will bea<appId>_<name>
. For example, if yourappId
is16858319
and yourname
property wasCARS
, then your FQN would bea16858319_cars
. - After you’ve saved your changes, run the
hs project upload
CLI command to upload your project to the HubSpot developer platform and automatically trigger a new build. - In a browser window, navigate to
https://app.hubspot.com/developer_projects/<accountId>
to visit the projects UI and confirm the app and project have been created, built, and deployed correctly.
5
Add the client ID and client secret of your app to your app
-
After uploading your project, you’ll need to get the auth details for your app to copy over to your OAuth configuration:
- Click Projects in the Development navigation menu.
- Click the name of your new project.
- Click the UID of your app, then click the Auth tab.
- Copy the Client ID and Client secret from your new app and paste them into the corresponding locations in your local OAuth server’s configuration, then restart your OAuth server.
6
Configure the app object schema configuration
Next you’ll configure your app object schema:
- Add a new app object by creating a directory within the
/src/app
directory and name itapp-objects
. The resulting path to the new directory should be/src/app/app-objects
. - Create a new configuration file to represent the schema of your object, You should use the object name granted to your app during the preview process as the prefix for the file name, followed by
-object-hsmeta.json
. For example, in the reference project template, the app object name is “CAR”, so the resulting configuration file is namedcar-object-hsmeta.json
. - Consult the app object component definition reference file and customize the fields to the corresponding values for your app object.
- Within the
config
object of your definition, thename
field must match the name that was granted to your app during the review process, formatted inUPPER_SNAKE_CASE
format. - Note that once the properties and fields have been added to your app object schema and uploaded to your project in the next step, they cannot be removed.
- Within the
For convenience during testing, the same app object name can be used across multiple apps to support your development lifecycle. Start with this proof-of-concept app, then as migrations become available, you can use the same name and schema definitions across your development, staging, and production apps. UIDs for each of these instances will need to be unique.
- When you’re done editing your app object schema definition, and you’re ready to commit these changes, run the following commands to save your changes:
- In a browser window, navigate to
https://app.hubspot.com/developer_projects/<hubId>
to visit the projects UI and confirm the app and project have been created, built, and deployed correctly.
7
Update your app
Now that your app object schema has been uploaded, you’ll need to update the scopes defined in your After deployment is complete, your app and the corresponding app object are now ready to test with an installed account.
app-hsmeta.json
file to reflect the scopes created from the previous step. These scopes should be visible in the CLI logs after you ran hs project upload
.- Edit the
app-hsmeta.json
file and add the new scopes to the array ofrequiredScopes
within theauth
definition. For example, if yourappId
wasa12345
, then you’d edit theauth
definition to the following:
Please note:
- Customers will only be able to see your app object if the
schemas.read
scope is included in your app settings, and is requested during the installation/reauthorization OAuth flow. It’s highly recommended including all app object scopes in your settings, butschemas.read
is mandatory for customers to be able to access it. For example, for anappId
of12345
, you’d includecrm.app.schemas.a12345_MY_APP_OBJECT.read
as a required scope. - Depending on the app you’re testing with (prototype, development, staging,
production), you’ll need to be mindful of where you add your scope
definitions. Although deploying a production app isn’t yet supported during
this phase of the private beta, it’s generally safest to include these
scopes as
conditionallyRequiredScopes
when you’re ready for production. Learn more about these scope types in the public app documentation.
- When you’re done adding these scopes and you’ve saved your changes, run the following commands to commit your changes to the platform:
8
Create a developer test account (optional) and install your app
If don’t already have a test account, you can create one in HubSpot:
- Navigate to Test accounts in the Development navigation menu, then click Create developer test account. Follow the prompts to create your new test account.
- In the left sidebar menu, navigate to Projects, click the name of your new project, then click the UID of your app in the component list.
- On the Auth tab, copy your app’s install link.
- Use this link to install the app in your developer test account.
- Open the test account and navigate to the Connected Apps page, where you should see your installed app listed.
- In your test account, navigate to CRM > Contacts, then click the CRM object dropdown menu and confirm that your app object is available.
- You can then confirm that your schema definition conforms to your configuration file by creating a new record of your app object.

9
Programmatic data access using the HubSpot objects API
Now that you’ve successfully created your app object and you’ve tested it in a developer test account, you can use the OAuth access token associated with the installed test account to make requests to update data in the account directly via the objects API.Read through the objects API for more information on the API, but any requests specific to your app object will follow the same conventions as other standard objects in HubSpot. You’ll need to use your app object’s You can find the
objectTypeId
or fullyQualifiedName
as the objectType
path parameter in your request.For example, the following code block demonstrates how to make cURL request to create a new record of your app object:objectTypeId
for your app object by navigating to the records index page:- Navigate to CRM > Contacts in the developer test account that you installed your app.
- Click the dropdown menu at the top of the page and select your app object.
- The
objectTypeId
will appear in the URL between the/objects/<objectTypeId>/views
portion.