A Guide To Upserting Data in HubSpot Custom Objects with KingswaySoft

28 November 2025
KingswaySoft Team

HubSpot custom objects allow you to track unique business data beyond the standard Contacts, Companies, and Deals. By defining new objects with their own properties and associations, they fundamentally transform HubSpot CRM into a highly tailored system, perfectly aligned with your business needs. Think of them as bespoke entities designed specifically for your organization’s unique requirements, whether that's Products, Assets, Subscriptions, Events, or anything else your business tracks. Once defined, you can perform actions to query or manipulate this data as required.

Now, speaking of actions, in any integration scenario, the ability to perform an Upsert is absolutely crucial. Upsert is a compound operation that intelligently handles both inserting a new record and updating an existing one in a single operation. It relies on a unique identifier (like an ID or a custom unique property) to determine the final write operation. Without this functionality, integrations become much more complex and time-consuming, requiring a manual process to first check if a record exists and then conditionally perform an update or an insert. This complexity applies equally to standard and custom objects.

Fortunately, the HubSpot API provides support for Upsert service calls that allow creating or updating custom object records with ease. By using KingswaySoft's HubSpot components, you can easily implement such Upsert operations in your ETL integration processes.

In this blog post, we will be demonstrating how to configure and achieve this powerful functionality. You can find the necessary components in the SSIS Integration Toolkit for HubSpot.

Let's dive right in!

Configure a Unique ID for the Custom Object

To perform an Upsert action (a batch upsert call), the API endpoint mandates including the idProperty parameter in the request body, and this is defined by the API as a property with a unique value for the object. The "id" corresponds to the actual value for the field, while the "properties" node contains the key-value pairs representing the object properties (i.e., the rest of the data to be written to the record).

The API request structure from HubSpot API documentation

As a first step, you would need to define a field as a Unique field in HubSpot customization. For this, you can navigate to the settings page for the custom object and click on "Manage <custom object name> properties". 

Custom object manage properties option

As of now, HubSpot doesn't provide a way to set an existing field as a Unique property, and you can only set this property when a field is newly created. Click on "Create property" to launch the process. 

Create a new custom property

Next, provide the details required to create the unique ID field. 

Add the property details for the newly created field

Within the "Create Property" page, select "Rules", and under "Basic Rules", enable the checkbox for "Require unique values for this property".

Checkbox to specify whether the property requires unique values

Save and create the property. Once done, you are now ready to move over to your SSIS development environment to create a data flow that writes your custom object records to HubSpot via an SSIS HubSpot destination component. 

Setting up the SSIS data flow

Within your data flow, when you open the HubSpot Destination component and choose your Custom object, you will get to pick the Upsert action. The "Id Property" field that shows up in the general page lets you pick the pre-defined unique ID fields that you had created in the previous section within HubSpot. Once a field is chosen, the component will prompt you to map the chosen field.

KingswaySoft HubSpot Destination component configuration

The mappings for the unique field and other fields can be done in the columns page. If you created the unique field after the component was previously configured, then the "Refresh Component" button can get you the latest metadata.

KingswaySoft HubSpot Destination Columns page configuration

Save and close the component. At runtime, the request will be sent from the component to the endpoint as shown below, in the required full format for batch Upsert.

Fiddler capture from HubSpot Destination component

In the response, it would indicate whether the action was a Create/Insert or an Update.

Fiddler response from HubSpot Destination component

And this is also available as a part of the default output in the HubSpot Destination component, which returns a boolean value.

Fiddler capture from HubSpot Destination component Default output IsNew field

Conclusion

In short, leveraging HubSpot custom objects allows you to tailor the CRM to your precise business needs. The crucial Upsert action, available through the HubSpot API and easily implemented with KingswaySoft's SSIS Integration Toolkit, simplifies your integration workflows by intelligently handling both inserts and updates. This functionality is essential for maintaining accurate, efficient data synchronization. By adopting this approach, you ensure your HubSpot data remains a highly tailored and reliable asset.

We hope this helps!

Archive

November 2025 2 October 2025 2 September 2025 2 August 2025 2 July 2025 2 June 2025 1 May 2025 2 April 2025 3 March 2025 1 February 2025 1 January 2025 2 December 2024 1 November 2024 3 October 2024 1 September 2024 1 August 2024 2 July 2024 1 June 2024 1 May 2024 1 April 2024 2 March 2024 2 February 2024 2 January 2024 2 December 2023 1 November 2023 1 October 2023 2 August 2023 1 July 2023 2 June 2023 1 May 2023 2 April 2023 1 March 2023 1 February 2023 1 January 2023 2 December 2022 1 November 2022 2 October 2022 2 September 2022 2 August 2022 2 July 2022 3 June 2022 2 May 2022 2 April 2022 3 March 2022 2 February 2022 1 January 2022 2 December 2021 1 October 2021 1 September 2021 2 August 2021 2 July 2021 2 June 2021 1 May 2021 1 April 2021 2 March 2021 2 February 2021 2 January 2021 2 December 2020 2 November 2020 4 October 2020 1 September 2020 3 August 2020 2 July 2020 1 June 2020 2 May 2020 1 April 2020 1 March 2020 1 February 2020 1 January 2020 1 December 2019 1 November 2019 1 October 2019 1 May 2019 1 February 2019 1 December 2018 2 November 2018 1 October 2018 4 September 2018 1 August 2018 1 July 2018 1 June 2018 3 April 2018 3 March 2018 3 February 2018 3 January 2018 2 December 2017 1 April 2017 1 March 2017 7 December 2016 1 November 2016 2 October 2016 1 September 2016 4 August 2016 1 June 2016 1 May 2016 3 April 2016 1 August 2015 1 April 2015 10 August 2014 1 July 2014 1 June 2014 2 May 2014 2 February 2014 1 January 2014 2 October 2013 1 September 2013 2 August 2013 2 June 2013 5 May 2013 2 March 2013 1 February 2013 1 January 2013 1 December 2012 2 November 2012 2 September 2012 2 July 2012 1 May 2012 3 April 2012 2 March 2012 2 January 2012 1

Tags