# Webhook 1000 subscription limitation for bidirection sync.

**URL:** <https://community.hubspot.com/t/webhook-1000-subscription-limitation-for-bidirection-sync/88010>\
**Category:** APIs & Integrations\
**Tags:** object, webhooks\
**Created:** [August 22, 2023, 9:40am UTC](https://community.hubspot.com/t/webhook-1000-subscription-limitation-for-bidirection-sync/88010 "2023-08-22T09:40:23Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![ArpitAtDock](https://avatars.discourse-cdn.com/v4/letter/a/848f3c/32.png) [@ArpitAtDock](https://community.hubspot.com/u/ArpitAtDock)\
**Post date:** [August 22, 2023, 9:40am UTC](https://community.hubspot.com/t/webhook-1000-subscription-limitation-for-bidirection-sync/88010/1 "2023-08-22T09:40:23Z")

</div>

So, I have the application that I have been working on that allows bidirectional sync between the Hubspot Object and the entity in my database.

I use the bidirectional sync using HubSpot’s webhook API inorder to keep the values the same across both system (HubSpot\<\>My App).

The app that I am working on can be installed by multiple people and all of them can map any property in the app to any custom property in the HubSpot account.

 ![Screenshot 2023-08-22 at 3.06.21 PM.png](https://d2qpr2jzcazej7.cloudfront.net/original/3X/a/f/afe9af876a7facdb1e3c2bda6252f34031895af5.png)

(In the image the fields on the right side are HubSpot custom properties that I created).

Now if I have 100 people installing the app and creating 10 custom fields on their HubSpot account the webhook subscription that I would have to create would easily surpass the limit of 1000 subscriptions, if I have to have the ability to do bidirectional sync between the systems.

Right now I have a webhook endpoint that receives the data from HubSpot if any field changes and I simultaneously update the record in my database too.

Is there any better approach to solving this issue?

Would workflows help, if yes then how? It’s quite overwhelming.

---

<div class="post-metadata">

**Author:** ![Eric\_Goldman](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/eric_goldman/32/1048_2.png) [@Eric\_Goldman](https://community.hubspot.com/u/Eric_Goldman)\
**Post date:** [August 22, 2023, 4:47pm UTC](https://community.hubspot.com/t/webhook-1000-subscription-limitation-for-bidirection-sync/88010/2 "2023-08-22T16:47:04Z")

</div>

Hey @ArpitAtDock - we hit this exact problem as we were building Sequin.

You’ll run up against the Webhook subscription limitations. And it’s important to remember that Webhooks only support a limited number of objects.

Workflows are another approach, but workflows can be a little hit or miss depending on what action you are trying to capture and transform into a webhook. This makes it really easy to miss the event you need to maintain the sync.  
Instead, we went with a polling approach that has worked well. We wrote up this guide:

> **[How we built our sync on HubSpot's API](https://blog.sequin.io/building-a-sync-on-hubspots-api/)**
>
> At any scale, integrating with HubSpot becomes a syncing problem. Here's how to build a sync between HubSpot and your database.

I hope you find it useful and happy to be a resource here.

---

<div class="post-metadata">

**Author:** ![ArpitAtDock](https://avatars.discourse-cdn.com/v4/letter/a/848f3c/32.png) [@ArpitAtDock](https://community.hubspot.com/u/ArpitAtDock)\
**Post date:** [August 22, 2023, 9:48pm UTC](https://community.hubspot.com/t/webhook-1000-subscription-limitation-for-bidirection-sync/88010/3 "2023-08-22T21:48:55Z")

</div>

Hey [@Eric\_Goldman](https://community.hubspot.com/t5/user/viewprofilepage/user-id/415972) , first of all, thank you so much for the reply. I am following a somewhat similar approach to sync Salesforce objects. However, can you shed some light on what issues I might face if I decide to go ahead with the “workflow” approach?

---

<div class="post-metadata">

**Author:** ![Eric\_Goldman](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/eric_goldman/32/1048_2.png) [@Eric\_Goldman](https://community.hubspot.com/u/Eric_Goldman)\
**Post date:** [August 22, 2023, 11:33pm UTC](https://community.hubspot.com/t/webhook-1000-subscription-limitation-for-bidirection-sync/88010/4 "2023-08-22T23:33:23Z")

</div>

Hey @ArpitAtDock - happy to help!

With Workflows, the issues we’ve run into are two-fold:

1. Workflows not firing: A workflow might not fire on every event, especially on high-frequency events (i.e., an object moving through a set of statuses). It’s rare, but common enough to cause a sync to get broken.

2. Workflows being altered: Workflows can’t be managed programmatically, so key logic is outside your code/implementation. Workflows can be altered / hard to maintain as a result.

Ultimately, workflows felt like a bit of a hack that we wanted to avoid.

---

<div class="post-metadata">

**Author:** ![ArpitAtDock](https://avatars.discourse-cdn.com/v4/letter/a/848f3c/32.png) [@ArpitAtDock](https://community.hubspot.com/u/ArpitAtDock)\
**Post date:** [August 23, 2023, 12:00pm UTC](https://community.hubspot.com/t/webhook-1000-subscription-limitation-for-bidirection-sync/88010/5 "2023-08-23T12:00:08Z")

</div>

[@Eric\_Goldman](https://community.hubspot.com/t5/user/viewprofilepage/user-id/415972) do you think a mix of webhook implementation for Hubspot core fields and your implementation for custom fields would work better?

---

<div class="post-metadata">

**Author:** ![RubenBurdin](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/rubenburdin/32/75212_2.png) [@RubenBurdin](https://community.hubspot.com/u/RubenBurdin)\
**Post date:** [October 22, 2025, 8:55pm UTC](https://community.hubspot.com/t/webhook-1000-subscription-limitation-for-bidirection-sync/88010/6 "2025-10-22T20:55:02Z")

</div>

Hi @ArpitAtDock, you’re running into a real constraint: HubSpot caps webhook subscriptions at 1,000 per app, so per-property subscriptions won’t scale ([API usage guidelines and limits - HubSpot docs](https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines) )

The pattern that works at volume is hybrid: keep a small set of webhooks at the object level (create/update/delete) to “wake” your sync, then fetch the actual deltas from HubSpot with the CRM Search API filtered by hs\_lastmodifieddate (and whatever properties you mapped). That avoids a subscription per custom field and is resilient if admins add new properties later ([Search the CRM - HubSpot docs](https://developers.hubspot.com/docs/api-reference/search/guide) )

On each webhook hit, call /crm/v3/objects/{object}/search with a GTE timestamp from your last checkpoint, page through results, and upsert to your DB. Also handle backfills or missed events with a scheduled incremental poll. Are these installs using a private app or a public app? That influences how you store checkpoints per portal.

Where native connectors stop short, Stacksync fills the gap with real-time, bidirectional sync so your workflows and reports stay trustworthy.
