---
title: "How to configure webhooks in HubSpot"
img: https://s3.us-east-2.amazonaws.com/unified-article-images/how_to_configure_webhooks_in_hubspot-icon.png
date: 2024-02-23T00:00:00.000Z
tag: Guides
description: "This guide walks you through how to configure webhooks in HubSpot to work with Unified.to. These webhooks allow you to get notifications about new events and..."
url: "https://unified.to/blog/how_to_configure_webhooks_in_hubspot"
---

# How to configure webhooks in HubSpot
------
_February 23, 2024_

This guide walks you through how to configure [webhooks](/blog/replacing_polling_with_unified_webhooks_and_virtual_streams) in HubSpot to work with Unified.to. These webhooks allow you to get notifications about new events and changes from HubSpot e.g. new leads, updated deals, or deleted contacts.


## Before you begin

- Make sure you have a HubSpot developer account.
- Get your client ID, client secret, and developer API key.
- Point the **Redirect URL** in your HubSpot app to `api.unified.to/oauth/code`
    - If you're using the EU data region, use instead`api-eu.unified.to/oauth/code`
- Follow our [HubSpot developer guide](https://docs.unified.to/guides/how_to_register_a_hubspot_developer_app_and_get_your_oauth_2_credentials#how-to-register-a-hubspot-developer-app-and-get-your-oauth-2-credentials) to see how to do all of the above.

## Setting up Webhooks in Hubspot Legacy Apps


### Select the appropriate Legacy App to setup the webhook


![Screenshot_2025-11-25_at_12.21.18_PM.png](https://s3.us-east-2.amazonaws.com/unified-article-images/how_to_configure_webhooks_in_hubspot-0.png)


### Set the target URL for the webhook


HubSpot uses a single webhook URL per app, which means you need to configure your app to send any events to the Unified.to servers.

1. Navigate to your [HubSpot developer account](https://app.hubspot.com/).
2. Click **Apps.**
3. Select the app you wish to use to access your customers' data.
4. Click **Webhooks.**

    ![Untitled.png](https://s3.us-east-2.amazonaws.com/unified-article-images/how_to_configure_webhooks_in_hubspot-1.png)

5. Under **Target URL**:
    1. If you are using the US data region, copy and paste in: `api.unified.to/webhook/workspace/hubspot`
    2. If you using the EU data region, copy and paste in: `api-eu.unified.to/webhook/workspace/hubspot`

    If your URL is greyed out and you have subscriptions under **Event subscriptions**, then you'll need to unsubscribe from all of them. _WARNING: If these subscriptions and the target URL are used by other applications, this action will break them. In that case, you may want to consider creating a new developer app to use with Unified.to._

6. You do **not** have to create any subscriptions manually. Unified.to will do that on your behalf.

### Add scopes for your webhooks


In order for Unified.to to receive webhook data from HubSpot, you need to add scopes for the events you are interested in as well as a few others.

1. With your app page still open, click **Basic Info** and then click **Auth.**
2. Scroll down to **Scopes**:
    1. Add `crm.objects.owners.read`as **Required**.
    2. For any events where you want to read data, add them as **Required.**
        1. Note: This applies to events that you'll be subscribed to as well as those that you will only call via the API. For example, if you want to create a Contacts webhook and also fetch Companies via the API, you'll need to add both `crm.objects.contacts.read` and `crm.objects.companies.read` as **Required** because Unified.to will pass all of these as required scopes in each auth flow.
    3. For any events where you want to write data, add them as **Optional**.
    4. For example, if you want to receive notifications about updates to HubSpot companies, you'll need to add `crm.objects.companies.read` as **Required**. If you want to write data to companies, add `crm.objects.companies.write` as **Optional**.
    5. To see the full list of HubSpot scopes that Unified.to supports, see: [https://app.unified.to/integrations/hubspot?tab=oauth2](https://app.unified.to/integrations/hubspot?tab=oauth2).
3. The `oauth` scope is also required for all HubSpot integrations. This will be added by default if your app was created after April 2024.

    ![Screenshot_2024-08-26_at_2.35.36_PM.png](https://s3.us-east-2.amazonaws.com/unified-article-images/how_to_configure_webhooks_in_hubspot-2.png)


### Select permission scopes on Unified.to


When prompting your customers to authorize access to their third-party accounts, you will need to select the corresponding scopes in [Unified.to](http://unified.to/) as well. The following steps show you how to do that when using our Embedded Authorization component.

1. On app.unified.to, click on **Settings** and then [**Embedded Authorization**](https://app.unified.to/settings/embed?tab=Authorization)**.**
2. You will see a preview of the Embedded Authorization component on the left and a list of configuration options on the right. Click on **Options**.
3. Scroll down to **Permission scopes** and select **webhook** as well as any other permission scopes that you need e.g. the same scopes you added in HubSpot. You do not need to select `oauth` or `crm.objects.owners.read` on [Unified.to](http://unified.to/) as well will map these automatically on our end.
    1. For example, using the examples from above for reading Contacts and Companies, the scopes in Unified.to would be  `crm_contact_read` and `crm_company_read`

        ![c9a0cf8d-eca3-4b74-8d52-d84a2fb6029f.png](https://s3.us-east-2.amazonaws.com/unified-article-images/how_to_configure_webhooks_in_hubspot-3.png)

    2. A mapping of Unified scopes to their HubSpot counterparts can be found [here](https://app.unified.to/integrations/hubspot?tab=oauth2).
    3. Tip: Under **Integration categories,** select **CRM** to only see scopes related to CRM data objects.

## Setting up Webhooks in Hubspot Development Platform


### Create Webhook configuration file


In your hubspot project folder, create a new folder `webhook` and inside add in the `webhook-hsmeta.json` file.



```javascript
project-folder/
└── src/
    └── app/
        ├── app-hsmeta.json
        └── webhooks/
            └── webhook-hsmeta.json
```


### **Setup Webhook configuration**


Now that you have the webhook config file ready, let's setup the configuration as follows:


```javascript
{
  "uid": "webhooks",
  "type": "webhooks",
  "config": {
    "settings": {
      "targetUrl": "https://api.unified.to/webhook/workspace/hubspot",
      "maxConcurrentRequests": 10
    },
    "subscriptions": {
      "legacyCrmObjects": [
        {
          "subscriptionType": "deals.propertyChange",
          "propertyName": "dealstage",
          "active": true
        },
        {
          "subscriptionType": "deals.associationChange",
          "active": true
        }
      ]
    }
  }
}
```


For the `targetUrl` :

1. If you are using the US data region, copy and paste in: `api.unified.to/webhook/workspace/hubspot`
2. If you using the EU data region, copy and paste in: `api-eu.unified.to/webhook/workspace/hubspot`

For the `subscriptions` we need to use the `legacyCrmObjects` to define which object we want to get events for. 


### Deploy Hubspot Project


Once you've setup your webhook configuration, you can now upload the project via:


```javascript
hs project upload
```


Once uploaded, your configuration should now show up in your app's webhook list:



![Screenshot_2025-11-25_at_12.34.02_PM.png](https://s3.us-east-2.amazonaws.com/unified-article-images/how_to_configure_webhooks_in_hubspot-4.png)


## See also

- [Introduction to webhooks](https://docs.unified.to/concepts/webhooks#introduction-to-webhooks)
- [Create a webhook subscription](https://docs.unified.to/unified/webhook/Create_webhook_subscription)
- [How to set up your scopes in HubSpot](https://docs.unified.to/guides/how_to_set_up_your_scopes_in_hubspot)