n8n integration and private apps

Been going around in circles for hours to do what I thought was simple: Use n8n to trigger a workflow when a new company is added to Hubspot.

I created a public legacy app to use with the n8n Hubspot node but after hours of debugging couldn’t get past an “insufficient scopes” error.

ChatGPT recommended ‘clicking the Install App button’ - doesn’t exist.
Recommended by ChatGPT to create a Private App and use HTTP node in n8n, except that option isn’t showing in my menu bar under settings.

Eventually found a Community Thread saying only Developer Test Accounts can create Private Apps (??), so I did that, and that connected to n8n OK, but it’s not reading data from my main account… so seems pointless.

This page indicates it isn’t a plan issue (near bottom): Legacy private apps - HubSpot docs
Completely lost.
Details:
- Hubspot Free
- n8n Cloud
- Super Admin

Hi @JRobinson81 and welcome, we are delighted to see you here!
Thanks for reaching out to the HubSpot Community!
Just for information, I have see a recent similar thread “Hubspot trigger issues in n8n” from @NDory, I thought you might want to troubleshoot/share your work together.
And here are related documentation that might help you:
- Use webhooks with HubSpot workflows
- Webhooks API
@JRobinson81 just to confirm, did you set up HubSpot Credentials in n8n? Does this work?
Did you add the HubSpot Trigger Node? Is this working?

The more info, screenshots (without sensitive/confidential information), and details you can provide, the better the Community can assist.

For information, HubSpot only allows one webhook URL per developer or private app.
If you need multiple triggers (e.g., for contacts, deals, companies), you can use a single app/webhook and filter within n8n using Logic nodes like “Switch” or “IF”.

Also, make sure that the HubSpot app has the correct permissions and that your n8n instance is accessible from the internet if you are self-hosting.
Webhook-based triggers require n8n to be reachable by HubSpot.
Also, I’d love to put you in touch with our Top Experts: Hi @HubDoPete, @Anton and @sylvain_tirreau do you have suggestions to help @JRobinson81, please?
Have a lovely day and thanks so much in advance for your help!
Bérangère

Hi @JRobinson81,

totally get the confusion here.

Two things are overlapping: where to create the credential and how to trigger on “new company.” In your main HubSpot portal, go to Settings > Integrations > Private Apps and create a token there.

Pick scopes like crm.objects.companies.read and, if you plan to write back, crm.objects.companies.write. Then in n8n use an HTTP Request node with header Authorization: Bearer YOUR_TOKEN to call the CRM v3 endpoints.

Private Apps replaced API keys, so you will not see any “Install app” step for your own portal. Full setup is here if you want to double check the path and behavior

(Legacy private apps - HubSpot docs )

Quick sanity check: when you created the token, were you definitely in the production portal in the top-right account selector, not the developer test account?

For the trigger itself on Free, you do not have workflow webhooks, so n8n will need to poll. The reliable pattern is a Search API call for companies created since the last run, sorted by createdAt, and store the latest timestamp in n8n. Query again every 1–5 minutes and process only new items. The search endpoint and filters are documented here, including how to filter by createdAt and select specific properties

(Understanding the CRM APIs - HubSpot docs )

If you move to a paid tier later, you can fire a HubSpot workflow on company creation and hit your n8n webhook for near real time without polling.

If you still see “insufficient scopes,” it is almost always one of these: the token was made in the wrong portal, the scopes do not include crm.objects.companies.read, or the n8n node is authenticating with something other than the Bearer token you just generated. Switch to plain HTTP in n8n while testing so you can see the raw 403 body from HubSpot.

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

To make this work, you’ll need to confirm that your main HubSpot account has permissions to create a Private App under Settings > Integrations > Private Apps. If you don’t see the option, it may be restricted by your subscription level or user role, in which case you’ll need either to request the right permissions from your HubSpot admin or upgrade the plan.

Hi @JRobinson81, just wanted to check in on you, do you still need help?
Thanks @EMarquardt and @RubenBurdin for your contributions!
Have a great day!
Bérangère