Skip to main content
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.
Below, find reference information for developer platform app features with app objects, including configuration file definitions, scopes details, and more.

Project structure

  • All project components must live within the src directory specified in the hsproject.json config file.
  • All app features and components must live within the app/ directory.
  • App objects are defined within the app-objects/ directory.
  • App object associations are defined within the app-object-associations/ directory.
  • All component and feature instances are declared using *-hsmeta.json files. You can use any file name you’d like, as long as it ends in -hsmeta.json (e.g., my-cool-object-hsmeta.json). These files must live at the root level of their respective folder.

App objects

To create an app object, include an app-objects component directory in the project, along with a configuration file.
Below are the configuration options available for *-object-hsmeta.json.

Fields marked with * are required.

The fully-qualified name (FQN) for your app object will be a<appId>_<objectName>. For example: if your appId is 16858319 and the app object name is CARS, then the FQN would be a16858319_CARS. You’ll use the FQN when setting scope values for your app objects.

App schema

To create an app object, include an app-hsmeta.json configuration file in the app directory.
Below are the configuration options available for app-hsmeta.json.

App schema *-hsmeta.json fields

Fields marked with * are required

auth fields

Fields marked with * are required.

Scopes

In the auth field of an app configuration file, you can specify three types of scopes: required scopes, conditionally required scopes, and optional scopes. If you’re just getting started with app objects, you should only include your app object scopes as conditionallyRequiredScopes. This will allow you to silo your new features to specific customers by including the app object scopes in the install URL. App object scopes use the following format: crm.app.schemas.<appObjectFullyQualifiedName>.read For example, for an app object with the FQN a16858319_cars, the read scope would be: crm.app.schemas.a16858319_cars.read. At a minimum, your app must include the above read scope to enable customers to access the object. It’s recommended to include all app object scopes in your app, as shown below.
For a full list of available scopes, see the scopes reference.

Webhooks component definition

To define a set of webhook subscriptions for your app, include a webhooks directory in the project, along with a *-hsmeta.json configuration file.
Below are the available configuration options for the *-hsmeta.json file.

Webhook *-hsmeta.json fields

Fields marked with * are required.

Please note: the associationChange event is not currently supported for app objects.
For each subscription object, the following fields can be specified, based on the subscription definition type you’re subscribed to (i.e., crmObjects, legacyCrmObjects, or hubEvents) or whether you’re subscribing to a specific property change (e.g., contact.propertyChange).

App card schema

To create an app card that appears on an app object record page, include a cards component directory in the project, along with a configuration file.
  • Make sure you’ve run hs project upload after you created your app object component and the associated configuration files.
  • In your my-app-card-hsmeta.json file, add your app object UID to the objectTypes array (e.g., "app_object_uid" in this example). Each of the available fields in the .json file are detailed in the table below.
  • After you’ve saved the changes to your example-card-hsmeta.json file, run hs project upload.
Cards are added automatically to the default view for app objects. If the card doesn’t automatically show up, learn how to add cards to CRM records.

App card *-hsmeta.json fields

Fields marked with * are required.

App object associations

To enable associations between your app object and other CRM objects, include an app-object-associations component directory in the project, along with a *-hsmeta.json configuration file for each record type you want to define an association for. The directory structure and example *-hsmeta.json file below provide an example of defining an association between an app object with a uid of car-app-object and contacts.
Below are the available configuration options for your app object association details in the corresponding *-hsmeta.json file.

Association *-hsmeta.json fields

Fields marked with * are required.

Last modified on June 3, 2026