How to ensure duplicate Deals from our ERP are not inserted to Deals?


Similar to contacts, is there a logic to ensure duplicate Deals from our ERP are not inserted to Deals?


Hi @Libu

The deals system doesn’t currently perform any type of deduplication. If you’re using the Deals API to create deals in HubSpot, you’d need to store the dealId you’d get in the response, and use that ID to update that specific deal when you need to make updates.


Hi Adam,

I am able to insert the same deal from the ERP to HubSpot and HubSpot inserts the record twice.

Is there a way for us to define a key in the Deals table of HubSpot other than DealID as DealID is not stored in the ERP.


Would it be possible to store the dealId in your ERP? We don’t currently have a way to set a custom property as a secondary ID, so the only way to update a specific record would be to use our internal dealId.


We use CData HubSpot SSIS driver for integration. CData has confirmed that the only way to query HubSpot deals is by using DealId and that too by only using a single DealId filter, i.e. we can only use an equal to (=) filter to a single DealId.

The challenge we are currently facing is that we are selecting number of rows from ERP and inserting to Deals. How do I know which rows in the ERP have to be updated with DealId from HubSpot if HubSpot only allows to query the Deals by DealId?




If you’re only creating deals in HubSpot after the deals are created in the ERP, you should record the dealId that you’ll get in the response from the Deals API after the deal is created.

If you’re creating deals in both systems, you can get all of the deals currently in HubSpot using the Deals API, which would include the dealId.

After you get all of the existing deals, you can periodically poll for new or updated deals in HubSpot to keep the systems in sync.


Getting all deals everyday will not work for us as we do incremental load every day. This could range between 10,000 to 40,000 records.

Regarding the last API suggested, (where we can query the newly created or updated deals)

  • can we get all the columns in the deal or is there a limitation. Secondly, is there a limitation in the number of rows returned?


Hi @Libu,

With regards to the ‘Get recently modified deals’ endpoint, there are no limitations in the columns that you’ll receive per deal record - All columns are returned.

The count URL parameter stipulates the number of records to be returned and defaults to 20 if not specified in the request. The limit is stated as 500 records per response, but after testing, I’m only able to pull 100 at a time - let me confirm and get back to you on that.

Please pay attention to the returned hasMore value, which is indicative of whether there are more records left in the query, which you can then access by using the offset URL parameter.


Hi @kfischmann,

Do you have any update for me on the number of records pulled at a time?

Also i get frequent time out errors from HubSpot gateway after I try to insert over 5,000 records to Deals using Deals API. Is there a limit to number of records i can insert in a day?


Hi @Libu,

Based on my testing, the maximum number of records that can be provided within one responses is 100. Apologies for the delay in getting back to you with this.

Are you receiving actual timeouts or a response with a HTTP code? The current API usage guidelines state a maximum of 40k requests per day and no more than 10 requests per second; if these limits are exceeded, requests will be met with a HTTP 429 (Too many requests) response code.


Hi Karl,

To put this into context, if i have to insert more than 800,000 records to deals using Deals API - can this be done in a day?



Please get in touch with me via PM - I’ll see what we can do for you.