Skip to main content
Build webhooks into your private app to subscribe to events occurring in the account that your app is installed in.
Legacy apps are still supported by HubSpot, but don’t have access to the latest app features. Learn more about the new developer platform.Private apps built on 2025.1 of the developer platform do support serverless functions for UI extensions, but do not support features such as creating an app settings page.If you have an existing project-built private app, you can migrate its functionality to the latest version of the developer platform by following the migration guide.

Defining webhook subscriptions

Webhook subscriptions are defined in the webhooks.json file within a webhooks folder in the same directory as your app (e.g., src/app). By default, your top-level app.json configuration file will reference that file. The webhooks.json file contains fields for defining the webhook’s settings and event subscriptions.

Subscription types

Private apps built with projects use generic webhook subscription syntax, using the format object.* rather than specifying the object name in the subscription type (e.g., contact.*). To specify the type of CRM object you’re subscribing to, include the objectName field in the subscription definition object using any of the supported objects in the table below. You’ll need to include the object’s corresponding scopes in your app.json file. The table below provides the objectName fields that are currently available for project-built private apps:
appointmentfeequote_template
callfeedback_submissiontask
cartgoal_targettax
commerce_paymentline_itemticket
communicationlistingpartner_client
companymeeting_eventlead
contactnoteservice
courseordersubscription
dealpostal_mailinvoice
discountproductuser
emailquotepartner_account
engagement  

Example webhooks.json

Webhook configuration details are specified within the /webhooks/webhooks.json file. Based on the subscription type format you prefer, you can either specify generic subscriptions within the subscriptions.crmObjects array, or refer to the object names themselves within the subscriptions.legacyCrmObjects and subscriptions.hubEvents arrays instead. Examples for each of these format types are provided in the two sections below.

Generic subscription format

The newer generic subscription format follows a pattern of object.EVENT_TYPE for the subscriptionType, where the EVENT_TYPE is the event you want to subscribe to, while the object name itself is provided via the objectName field. For example, the following webhooks.json snippet subscribes to changes to the firstname property on all contacts.

Classic subscription format

If you need to subscribe to classic subscription types, you can store them in the legacyCrmObjects and hubEvents arrays instead, depending on the type of subscription.

Response payloads

When an event that the app is subscribed to occurs, the targetUrl you specify in webhooks.json will receive a POST request containing JSON formatted data from HubSpot. All events will include the same base set of fields, with other fields being added depending on the event type. Learn more about parsing webhook payloads for specific event types. Below is an example payload for propertyChange event. This type of event contains all generic fields, plus the propertyName and propertyValue fields to show which property changed and the new value.
The object.associationChange subscription will trigger for all associations, including custom association labels. Association change events will also trigger on both incoming and outgoing association changes. This means that an object.associationChange event defined for an objectName of contact will not only trigger on a CONTACT_TO_DEAL association change, but also on a DEAL_TO_CONTACT association change.
Learn more about fields included in associationChange event payloads.

Update your private app configuration to point to your webhooks JSON file

After you add your webhooks.json file and configure your webhooks, you’ll need to update your app.json file to point to the webhooks JSON file. The following app.json file provides an example of updating the "webhooks" field to point to your webhooks.json file, using the file structure from the creation guide.

View webhook subscriptions in HubSpot

On the private app settings page in HubSpot, you can view a list of each event subscription for each subscription in the app’s webhooks.json file. To view your private app’s webhook subscriptions in HubSpot:
  • In your HubSpot account, navigate to Development.
  • In the left sidebar menu, click Legacy apps.
  • Click the name of your private app.
  • Click the Webhooks tab.
private-app-webhooks
  • Under Event subscriptions, you can view each of the app’s webhook subscriptions.
  • To view more information about a subscription for a specific object type, including number of times triggered and number of errors, click the name of the subscription to expand the section and view all associated event triggers:
    • Click the numbers in the Total count and Errors columns to navigate to the webhooks monitoring tab.
    • Hover over a subscription type then click Details to open the details panel on the right. This panel includes a sample event response payload and a testing feature.
private-app-webhooks-subscription-details
Last modified on March 30, 2026