A popular free CRM with powerful marketing, sales, and service hubs that scale as your business grows.
Full Reviewn8n is an open-source workflow automation platform that connects HubSpot CRM to your entire tech stack. Unlike cloud-only tools like Zapier and Make, n8n can be self-hosted on your own infrastructure, giving you complete control over data flow and eliminating per-execution pricing. The HubSpot CRM node in n8n supports contacts, companies, deals, tickets, and engagements with both trigger and action capabilities.
n8n's approach to automation is more developer-friendly than Zapier or Make, with built-in support for JavaScript/Python code nodes, HTTP requests, and complex data transformations. The visual workflow builder is intuitive enough for non-developers but powerful enough for technical users who need conditional logic, loops, error handling, and custom API calls. For organizations already using HubSpot's free CRM and looking to build sophisticated automations without enterprise pricing, n8n is a compelling option.
The choice between n8n's self-hosted and cloud versions depends on your team. Self-hosted n8n is free with unlimited executions, making it ideal for high-volume HubSpot automations. n8n Cloud starts at $24/month with a usage-based model that is still more affordable than Zapier or Make for most workflows.
In HubSpot, go to Settings > Integrations > Private Apps. Click Create a private app. Name it "n8n Integration" and add a description. Under the Scopes tab, select the permissions n8n needs: crm.objects.contacts.read, crm.objects.contacts.write, crm.objects.deals.read, crm.objects.deals.write, and any additional scopes for objects you plan to automate. Click Create app and copy the access token.
In n8n, go to Settings > Credentials (or click Credentials in the left sidebar). Click Add Credential and search for "HubSpot." Select HubSpot API. Choose the authentication method: Access Token (for private apps) or OAuth2. If using Access Token, paste the token from your HubSpot private app. Click Save. n8n will test the connection automatically.
Click New Workflow from the n8n dashboard. You will see a blank canvas with a trigger node placeholder. Click the + button to add your first node.
Search for "HubSpot Trigger" and add it to the canvas. Select the credential you created in Step 2. Choose the event to listen for: Contact Created, Contact Updated, Deal Created, Deal Updated, or other available events. The trigger uses HubSpot webhooks, so your n8n instance must be publicly accessible. Click Listen for Test Event and then create or update a record in HubSpot to capture sample data.
Click the + after the HubSpot Trigger to add the next step. You can add another HubSpot node (to update a different object), a Slack node (to send notifications), a Google Sheets node (to log data), or any of n8n's 400+ integrations. Map fields from the HubSpot trigger output to the input fields of downstream nodes using n8n's expression editor.
Click Test Workflow to run it with the sample data captured from the trigger. Review the output of each node to verify data flows correctly. The execution panel shows input and output data for every node, making debugging straightforward.
Toggle the workflow to Active using the switch in the top right. The HubSpot trigger webhook will now listen for events in real-time. Every time a matching event occurs in HubSpot, the workflow will execute automatically.
n8n's HubSpot node supports filtering with the Additional Fields section, letting you specify which properties to return and limit results. The IF node enables conditional branching based on HubSpot data (e.g., route high-value deals to a different notification channel). Use the Code node for custom JavaScript transformations when built-in nodes cannot handle your data mapping needs. The Merge node combines data from multiple sources before writing to HubSpot, useful for enrichment workflows.
| Data | Direction | Frequency |
|---|---|---|
| Contacts | Bidirectional | Real-time (webhook) or scheduled |
| Companies | Bidirectional | Real-time or scheduled |
| Deals | Bidirectional | Real-time or scheduled |
| Tickets | Bidirectional | Real-time or scheduled |
| Engagements | HubSpot to n8n | Scheduled (polling) |
If the HubSpot trigger does not receive events, verify that your n8n instance is publicly accessible via HTTPS. Self-hosted instances behind a firewall or without a public URL cannot receive webhooks. Use a tunnel service like ngrok for development, or deploy n8n on a cloud server with a public domain and SSL certificate.
HubSpot limits API calls to 100 requests per 10 seconds for OAuth apps and 200 per 10 seconds for private apps. If your workflow processes many records, add a Wait node between batches to throttle requests. The Split In Batches node combined with a Wait node handles this pattern cleanly.
HubSpot webhook payloads include only the properties that changed, not the full record. If your workflow needs additional properties, add a HubSpot action node after the trigger to fetch the complete record using the record ID from the trigger payload.
Use n8n's Webhook node instead of the HubSpot Trigger to receive HubSpot webhook subscriptions with custom configurations. Implement retry logic using the Error Trigger combined with Wait and Execute Workflow nodes for resilient automations. For complex data transformations, the Code node supports full JavaScript or Python with access to npm packages. n8n's sub-workflow feature lets you build reusable HubSpot operations (e.g., "upsert contact with deduplication") that multiple workflows can call, reducing duplication and simplifying maintenance.