Get started with custom integrations to HubSpot
Custom integrations, or Private Apps as they are called in the HubSpot environment, are a great way to make sure your different systems are aligned.
Not all system providers offer a pre-made integration that you can install, and even when they do it is not always a good fit for your specific needs. Building your own integration to HubSpot usually requires your team to have some development experience, and also brings a lot of the positive aspects that comes with a solution tailored for your teams needs.
Are you not sure if a custom integration is the right solution for you? Read our other article: Integrating your SaaS to HubSpot: Where to start?
Pro's and con's of a custom integration to HubSpot
🟢 Can send information both ways between your application and HubSpot.
🟢 Ability to create, read, update, and delete almost any HubSpot data from your app.
🟢 You decide the scope and how your integration should work.
❌ Requires experience developing integrations.
❌ Can take resources to develop and maintain.
Setting up a private app
1. Set up a private app from integration settings
Start creating your application by logging into your company's HubSpot account, navigate to "Integrations" and then Private Apps. You should see an option to "Create a private app".

Before you can activate your app and get an API key, you have to select which scopes your app should have access to. This is a way to increase the security of your integration, by making sure the API key can only be used for the actions you intended, preventing both potential mistakes, and the risk of data leaks if someone gets access to your API key.
As a general rule, you should only select the scopes you intend to use in your app, but if you are not sure, it can save you some time to select more scopes you might need, and then clean it up after you are done testing your application properly.
NB: Make sure to create your app in a sandbox or developer account while testing, so you don't cause permanent damage to your production data!
All endpoints in HubSpot's API documentation will specify what scopes are required. Check out the documentation here.
2. Create, Read, Update, Delete
When you scopes are set up, you are good to go, and your app can start making changes to HubSpot data. Make sure to review the documentation I mentioned in the last paragraph to find the full overview of possible options for your integration.
The most common uses are found in CRM -> Objects where you can create, edit, or read your CRM records.
Note that there are in some cases more flexibility in the "batch" endpoints, so you may want to use these even for single record updates on some occasions.
3. Set up event subscriptions (Webhooks)
While your API key allows your other system to access and manipulate HubSpot data, it will not know if something changed without periodically reading the same data over and over. This is where subscriptions aka Webhooks come in handy.
By setting up a webhook, HubSpot will send a call to your other system when something important happens. If a new company is created, or the amount of a deal is changed, HubSpot will trigger a call to be sent, so you don't have to periodically check if any changes have been made.

Simply set up your endpoint to receive this information, and select between the available triggers in HubSpot.
4. Debugging and call logs
While setting up your integration, and while it is in production, you may want to monitor the activity to catch any potential issues. Go back to the app settings from your Settings -> Integrations, and select your app. By switching to the "Logs" tab, you can see a log of all calls made to HubSpot with this app's API key. You can also filter based on status code and methods, to uncover of any errors have been registered.

Engage an agency to assist you
Now I've covered the basic steps to get started with your own custom integration to HubSpot, and as you have noticed, you would typically need a developer to handle most of this work. If you are a larger company, or you work with software, you probably have developers employed already, and they will be able to handle an integration like this one.
Either way, engaging an agency to assist your team with this job can be a great way to get started. Even for a senior development team, engaging someone with platform specific experience can save resources and avoid some of the typical challenges you deal with when you start working on a new platform.