Webhook Odoo HubSpot Integration Pro | Real Time Bi-directional Integration
by echoBitz IT Solutions Pvt. Ltd. https://www.echobitzit.com$ 599.00
In-App Purchases| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
CRM (crm)
• Contacts (contacts) • Discuss (mail) • Invoicing (account) • Sales (sale_management) • Calendar (calendar) |
| Lines of code | 15146 |
| Technical Name |
eb_oh_integration_webhook |
| License | OPL-1 |
| Website | https://www.echobitzit.com |
| Versions | 15.0 16.0 17.0 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
CRM (crm)
• Contacts (contacts) • Discuss (mail) • Invoicing (account) • Sales (sale_management) • Calendar (calendar) |
| Lines of code | 15146 |
| Technical Name |
eb_oh_integration_webhook |
| License | OPL-1 |
| Website | https://www.echobitzit.com |
| Versions | 15.0 16.0 17.0 18.0 19.0 |
Webhook Odoo HubSpot
Integration Pro | Real Time Bi-directional Integration
The Ultimate Bi-Directional Odoo ↔ HubSpot CRM Connector
Transform how your sales and accounting teams collaborate by merging Odoo and HubSpot into a single source of truth. Our Pro integration eliminates manual data entry and third-party middleware bottlenecks by delivering seamless, fully automated, bi-directional synchronization across 6 major modules: Contacts, Companies, Deals, Quotes, Products, and Users.
Configure complex data logic in minutes without a developer. The connector features an intuitive visual dynamic field mapping engine, intelligent dropdown value alignment, hash-based change detection, full HubSpot REST API v3 coverage at every layer and per-field sync direction control (Odoo → HubSpot, HubSpot → Odoo, or both). Powered by flexible triggering - choose between instant manual sync, scheduled background cron batches, or real-time Webhooks - your data stays fresh 24/7. Complete with a comprehensive real-time diagnostic logger, you'll have complete visibility and control over every synchronized record.
Two-Way Real Time Webhook
Stop waiting for scheduled cron jobs or manual sync runs. Our advanced native Webhook Listener establishes a persistent, real-time bi-directional data pipeline between HubSpot and Odoo. It instantly catches exactly when records are Created, Updated, or Deleted in HubSpot and mirrors those changes to Odoo in milliseconds.
- Instant Synchronization: Fully supports Contacts, Companies, Deals, and Products natively via the HubSpot REST API v3.
- Enterprise Security: All incoming payloads are strictly authenticated using the X-HubSpot-Signature-v3 logic to prevent unauthorized executions.
- Loop Prevention: Advanced context-aware processing completely averts infinite "ping-pong" sync loops, preserving your HubSpot API rate limits.
Why Teams Choose HubSpot Integration
Business Value It Delivers
Key Features
Everything you need to connect Odoo and HubSpot securely and automatically
Our Visual Dynamic Field Mapping interface to map any Odoo field to any HubSpot property - for every module independently. Set the sync direction per field (Odoo → HubSpot, HubSpot → Odoo, or both). Dropdown value alignment lets you map Odoo selection values to HubSpot picklist keys in a visual matrix.
Configurable pagination size (1–100 records/batch) controls HubSpot API throughput. Records are batched and committed in bulk for maximum efficiency during large sync operations.
One-click creation of all
required
HubSpot custom properties (odoo_id, sync_odoo) across 6 object
types: Contacts, Companies, Deals, Products, Quotes. Skips already-existing
fields gracefully.
Fetch all available HubSpot properties for each object type directly into Odoo with a single button click per module. Field names and types are stored and made available in the mapping widget automatically.
Receives real-time HubSpot events (creation, property changes, deletions) via a secure authenticated webhook endpoint. v3 signature validation prevents unauthorized calls and instantly mirrors live changes in Odoo.
Connect Odoo to HubSpot in Minutes
Enter your HubSpot Private App token, create the custom HubSpot fields with one click, configure your visual field mappings, then enable sync. Your Odoo data flows to HubSpot automatically - and HubSpot data flows back with no coding required.
What is Pro Odoo HubSpot Integration?
Pro Odoo HubSpot Integration is a native Odoo 18 module that creates a direct, secure, bi-directional data bridge between your Odoo ERP and HubSpot CRM using the HubSpot REST API v3. It eliminates the operational friction of managing two separate systems by keeping all business data perfectly synchronized in real time.
The module provides an intuitive, no-code configuration interface with a visual field mapper, dropdown value aligner, and per-module sync controls - all managed from a single OHI instance record. Sync can be triggered manually, automatically via scheduled cron jobs, or reactively via HubSpot Webhooks for real-time deletions. Every operation is captured by a comprehensive Integration Logger with full payload visibility.
6 Synchronized Modules
Complete coverage across your entire business workflow - from CRM to Finance
res.partner and HubSpot Contacts
object. Includes first/last name split, email-based deduplication, and related activity
sync.
- Email deduplication check before create
- Sync related Notes, Tasks, Emails, Meetings
- Sync associated Companies & Deals
- HubSpot owner auto-linked to Odoo user
res.partner where is_company=True) to
HubSpot Companies object, including all associated contacts and deals.
- Auto-detect company vs contact records
- Sync related Contacts & Opportunities
- Notes, Tasks, Emails, Meetings, Attachments
- Delete in HubSpot when deleted in Odoo
crm.lead) to HubSpot Deals. Probability is
auto-converted to HubSpot deal stage probability format.
- Stage & pipeline mapping with dropdown aligner
- Probability % auto-converted
- Sync related Notes, Tasks, Emails, Meetings
- Linked to Contacts & Companies in HubSpot
sale.order) as HubSpot Quotes. Supports both HubSpot
template
types and auto-associates quotes with the correct quote template.
- CUSTOMIZABLE_QUOTE_TEMPLATE & CPQ_QUOTE
- Auto-link to HubSpot Quote Template
- Line items synced with product association
- Linked to Deals in HubSpot
product.template records to HubSpot Product Library. Internal
reference
(default_code) is used for deduplication in HubSpot.
- Internal reference deduplication
- Price, description, and category mapping
- Delete propagation to HubSpot product library
- Used as line items in Quote sync
res.users) to HubSpot Users and retrieve HubSpot
Owner IDs for record ownership linking across all modules.
- First name / last name field split
- Email used as match key in HubSpot
- HubSpot Owner ID stored on Odoo user
- Auto-assigned as deal/contact owner
How to Set Up HubSpot Integration
Follow these steps to go from installation to live bi-directional sync with HubSpot.
- Go to HubSpot Integration → Instance in Odoo
- Click New and give the instance a name
- Enter your HubSpot Private App Access Token
- Set your HubSpot Domain, Default Odoo User, and Pagination Size
- Click Test Connection to verify your token is valid
- Only one instance can be active at a time - enforced automatically
- On your OHI Instance, click Create HubSpot Custom Fields
- This auto-creates
odoo_idandsync_odooon all HubSpot object types - Fields that already exist in HubSpot are skipped gracefully
- Covers: Contacts, Companies, Deals, Products, Quotes
- No manual HubSpot setup or developer access needed
- Confirm success in the notification banner
- For each module tab (Contacts, Companies, Deals, etc.), click Import Fields
- All HubSpot property definitions are fetched and stored in Odoo automatically
- Standard and custom HubSpot properties are both imported
- Fields become immediately available in the visual field mapping widget
- Repeat for each module you intend to sync
- Open each module tab and use the drag-and-drop Field Mapper
- Link each Odoo field to its corresponding HubSpot property
- Set the Sync Direction per field: OTH, HTO, or Both
- Use the Dropdown Value Aligner for selection/picklist fields
- Map Odoo stage names, priorities, and statuses to HubSpot enum values
- Save the instance record when all mappings are complete
Enable sync checkboxes per module (OTH and/or HTO). Click Sync Now manually for an immediate sync, or let the Scheduled Cron run every 30 minutes automatically. Monitor all operations in the Integration Logger.
Sync triggers: Manual Button · Scheduled Cron (30 min) · HTO Wizard (by HubSpot ID)
Configure HubSpot to POST real-time sync events (Create, Update, Delete) to your Odoo webhook endpoint. Securely validate requests by providing your HubSpot Private App Client Secret on the Odoo instance.
POST https://<your_odoo_domain>/hubspot/webhook
Payloads are securely authenticated via the X-HubSpot-Signature-v3 header. Unauthenticated or invalid requests are instantly rejected.
How It Works
From installation to live bi-directional sync between Odoo and HubSpot in four simple steps
Install the module in Odoo 18, enter your HubSpot Private App Access Token, and test the connection with one click.
Click Create HubSpot Custom Fields to auto-generate odoo_id and sync_odoo on all HubSpot object types instantly.
Import HubSpot field schemas per module, then use the visual mapper to link Odoo fields to HubSpot properties and align dropdown values.
Toggle sync checkboxes per module and click Sync Now, or let the 30-minute scheduled cron keep your data fresh automatically 24/7.
Feature Deep Dive
Explore every capability of the Pro Odoo HubSpot Integration in detail
Prerequisites
Install the Module
- Go to Odoo → Apps and search for Pro Odoo HubSpot Integration
- Click Install - no pip packages or external libraries needed
- After installation, a new menu HubSpot Integration appears in the main Odoo menu bar
- The menu contains: Instance, Integration Logger, and HubSpot Explorer
Configure the OHI Instance
- Go to HubSpot Integration → Instance
- Click New and give the instance a name (e.g. Production HubSpot)
- Enter your HubSpot Access Token (from your HubSpot Private App)
- Set your HubSpot Domain
- Set Default Odoo User and Default HubSpot User
- Set Pagination Size (1–100) and click Test Connection
- Note only one instance can be Active (Connected) at a time
Enable Per-Module Sync Settings
- Open the OHI Instance and navigate to each module tab (Contacts, Companies, Deals, etc.)
- Toggle Sync OTH to enable Odoo → HubSpot for that module
- Toggle Sync HTO to enable HubSpot → Odoo for that module
- Toggle Related Data Sync for Notes, Tasks, Emails, Meetings
- Toggle Delete OTH / HTO to enable delete propagation per module
- Check the Last Sync Date fields to confirm last successful sync
- Click Save - settings take effect on the next manual or scheduled sync
Configure Field Mappings
- Click Import Fields on the module tab to fetch HubSpot property schema
- In the Field Mapping widget, drag Odoo fields and link them to HubSpot properties
- Set the Sync Direction per field: OTH, HTO, or Both
- Use the Dropdown Value Aligner for selection/picklist fields
- Map Odoo stage names, priorities, and statuses to HubSpot enum values
- Set Concept Type to DIMENSION or METRIC for each field
- Only mapped fields are included in sync operations
ohi.contacts.lines → Contacts
(res.partner)
ohi.companies.lines → Companies
(res.partner)
ohi.opportunities.lines → Deals
(crm.lead)
ohi.quotes.lines → Quotes
(sale.order)
ohi.products.lines → Products
(product.template)
ohi.users.lines → Users (res.users)
Trigger a Manual Sync
- Open the OHI Instance record in Odoo
- For each module tab, click Sync Now OTH to push Odoo → HubSpot
- Click Sync Now HTO to pull HubSpot → Odoo
- Use the HTO Wizard to import specific records by HubSpot ID
- Click Open Scheduler to configure or run the automated cron job
- Monitor all synced records in the Integration Logger
- Resolve pending log entries after reviewing error details and payloads
Validate & Monitor Your Sync
Click "Test Connection" on the OHI Instance
A success/error notification confirms the API status
Integration
Logger for full request/response details on every sync
Users
OTH → Users HTO → Contacts OTH → Contacts HTO → Companies → Deals → Products
→ Quotes → Completed
Last HubSpot ID acts as a pagination cursor for HTO syncs.
Configuration Screenshots
HubSpot Access Token & Security
The integration authenticates with HubSpot via a Private App Access Token stored securely on the OHI Instance. Your token is used as a Bearer token on every HubSpot API v3 request. Only one instance can be active at a time, enforced by a SQL constraint and Python validation.
- CRM Objects API v3 (Contacts, Companies, Deals, Products, Quotes)
- Settings API v3 (Users, Owners)
- Properties API v3 (field schema import)
- Complete real-time bidirectional sync (Create, Update, Delete)
- Secure validation via X-HubSpot-Signature-v3 header
- Independent module toggles control which operational events are processed
- All operations securely synced and logged with full status visibility
Only one OHI Instance can be Active
(Connected) at
a time. This is enforced by a SQL UNIQUE constraint on the
database and a Python
validation method - preventing conflicting sync jobs or accidental
dual-writes.
How OTH Sync Works (Odoo → HubSpot)
- Fetch Odoo records newer than the last sync date from
ohi.records - Compute SHA hash of all mapped field values for each record
- Compare hash against stored
odoo_hash- skip unchanged records - Search HubSpot for existing record by
odoo_idproperty - Create (POST) or Update (PATCH) via HubSpot batch API
- Write-back HubSpot ID and new hash to the Odoo record
- Log result with full request/response payload to ohi.logger
POST /hubspot/webhook?auth=<secret_key>
Content-Type: application/json
[ { "subscriptionType": "contact.deletion", "objectId": 12345 } ]
Field Mapping Configuration
Each module has its own mapper model that stores field-to-field relationships between Odoo and HubSpot. The OWL drag-and-drop widget makes configuration intuitive - no developer needed.
- Odoo Field - technical field name on the Odoo model
- Odoo Field Type - auto-fetched (char, many2one, etc.)
- HubSpot Property - corresponding HubSpot field name
- HubSpot Field Type - HubSpot data type (string, number)
- Sync Direction - OTH, HTO, or Both
A JSON field stores the value translation matrix for selection/enum fields. The OWL widget renders it as an interactive key-value grid for visual alignment.
{
"draft": "DRAFT", "sale": "CLOSED_WON",
"cancel": "CLOSED_LOST"
}
Supported Sync Modules
All 6 modules have independent mapper models. Each module's field mappings, sync direction, and dropdown alignments are fully configured separately.
Contacts
Companies
Deals
Quotes
Products
Users
Model Configuration Screenshots
Integration Logger
Every sync operation - whether triggered manually, by cron, or by webhook - is captured in the ohi.logger model. The logger provides a full audit trail with enough detail to diagnose and resolve any data sync issue.
- Integration Direction - Odoo To HubSpot / HubSpot To Odoo
- Module Name - Contacts, Companies, Deals, etc.
- Operation - Create / Update / Delete / Import Fields
- Record ID - Odoo record ID processed
- Status Code - HTTP response code from HubSpot
- Request & Response Payload - full JSON data
- Resolution Status - Pending / Resolved
- Performed By - Manually / Scheduler / Webhooks
Integration Logger Fields
Every sync operation is automatically logged. Browse the full history from HubSpot Integration → Integration Logger.
| Fields Captured per Sync | |
|---|---|
| Direction | Odoo To HubSpot / HubSpot To Odoo |
| Module | Contacts, Deals, etc. |
| Operation | Create / Update / Delete |
| Record ID | Odoo record processed |
| HTTP Status | 200 / 400 / 404 / 500 |
| Request Payload | Data sent to HubSpot |
| Response Payload | HubSpot API response |
| Performed By | Manual / Scheduler / Webhook |
| Resolution Status | Pending / Resolved |
- Remove Log Scheduler — configurable 1–12 month retention
- Scheduled Sync Cron — runs every 30 min automatically
Log Type Reference
Each log entry is classified by type to make filtering and diagnosis instant. Resolve pending entries after fixing any errors.
| Log Type | Meaning | Resolution |
|---|---|---|
| Success | Sync completed successfully | Auto-Resolved |
| Error | API call failed with error | Pending → Manual |
| Warning | Partial or non-critical issue | Review & Resolve |
| Info | Informational operation log | Auto-Resolved |
Log Configuration Screenshots
HubSpot API Endpoints Used
| HubSpot API | Purpose |
|---|---|
POST /crm/v3/objects/<type>/batch/create |
Bulk create new records |
POST /crm/v3/objects/<type>/batch/update |
Bulk update existing records |
POST /crm/v3/objects/<type>/search |
Search by odoo_id property |
DELETE /crm/v3/objects/<type>/<id> |
Delete record from HubSpot |
GET /crm/v3/properties/<type> |
Import field schema |
POST /crm/v3/properties/<type> |
Create custom properties |
GET /settings/v3/users |
Fetch HubSpot users/owners |
POST /hubspot/webhook |
Receive deletion events |
Sync Engine Architecture & Data Flow
ohi.records— orchestration layerohi.methods— per-module processingohi.utils— HubSpot API calls & write-backs
Fetch HubSpot records paginated
→ Apply mapped fields to Odoo
→ Create or update Odoo record
→ Store hubspot_id on Odoo
→ Log success or error
- Users OTH → Users HTO
- Contacts OTH → Contacts HTO
- Companies → Deals → Products
- Quotes → Completed
Release Notes & Version History
- Core Engine: High-performance, zero-middleware hub architecture established.
Frequently Asked Questions
odoo_id as the unique identifier in
HubSpot.
Before creating any record, it searches for an existing one by
odoo_id
and updates it.
For Contacts, email address is also used as a deduplication key.
helpdesk, mail,
crm,
sale_management, account,
base_automation,
and bus.
json, hashlib, requests).
No Zapier, Make.com, or any third-party middleware required - direct HubSpot API
v3
connection only.
Book a Demo or Watch Pro Odoo HubSpot Integration in Action
Schedule a walkthrough with our team or explore the HubSpot integration demo video.
Scan and Connect with echoBitz
Book a meeting, start a WhatsApp conversation, or reach us by email from one simple visual card. It is the fastest way to move from curiosity to a live HubSpot Integration discussion.
Our Services
Odoo Integration
Seamlessly integrate Odoo with third-party apps, platforms, and tools for better workflow.
Odoo Implementation
We plan, configure, and deploy Odoo tailored to your business processes.
Customization
Get modules and workflows customized to meet your exact needs in Odoo.
Community Apps
Access or develop robust community apps to enhance your Odoo functionality.
Development Outsourcing
Hire dedicated Odoo developers to build solutions efficiently and cost-effectively.
Support & Maintenance
Enjoy peace of mind with our reliable support, updates, and bug fixing services.
Discover More Solutions by echoBitz IT
Explore our other Odoo integration apps
Ready to connect your Odoo and HubSpot with Pro Odoo HubSpot Integration?
Install the Advance Odoo HubSpot Integration, enter your HubSpot Private App token, and start syncing Contacts, Companies, Deals, Quotes, Products, and Users bi-directionally in minutes - no middleware, no manual entry, no code required.
A Powerful Integration App for Odoo and HubSpot
- Installation Steps
- Please find reference documents in the module.
- following two documents are there:
- Installation Guide(Installation_Guide.pdf)
- User Guide(User_guide.pdf)
Credits
Contributors
- echoBitz IT Solutions Pvt Ltd <info@echobitzit.com>
Author & Maintainer
This module is maintained by the echoBitz IT Solutions Pvt Ltd
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module