| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Contacts (contacts)
• Discuss (mail) |
| Lines of code | 906 |
| Technical Name |
gb_email_marketing_sync_mailchimp_brevo |
| License | OPL-1 |
| Website | https://pokutsoft.com/ |
| Versions | 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Contacts (contacts)
• Discuss (mail) |
| Lines of code | 906 |
| Technical Name |
gb_email_marketing_sync_mailchimp_brevo |
| License | OPL-1 |
| Website | https://pokutsoft.com/ |
| Versions | 18.0 19.0 |
Email-Marketing Sync — Ma
Two-way contact/segment sync with Mailchimp & Brevo (bring your own API key)
Marketing teams running Mailchimp or Brevo alongside Odoo CRM bleed time on manual CSV exports, and worse, risk emailing contacts who unsubscribed elsewhere, a direct UK PECR compliance breach. Keeping audiences, segments and consent aligned by hand simply does not scale. This BYOK connector keeps Odoo contacts and dynamic segments in sync with Mailchimp or Brevo using your own API key: credentials stay in your database and calls go straight to the provider's official REST API. It pushes consented contacts, pulls engagement back, and syncs unsubscribes both ways. It is a connector, not a sender; it formats and transports data and does not send email itself.
Key Features
BYOK Provider Accounts
A gb.email.sync.account stores a Mailchimp or Brevo API key (restricted to system group) and routes calls through a single _request layer with provider-specific auth and base URLs. action_test_connection pings the provider and Mailchimp data centres are auto-detected from the key, so setup is one record and a test click.
List Import & Contact Push
action_fetch_lists imports the provider's audiences as gb.email.sync.list records, and action_push upserts each selected partner via Mailchimp's PUT members or Brevo's POST contacts. Subscription status is set from consent, keeping Odoo the source of truth for your marketing audience.
Engagement Pull-Back
action_pull_engagement reads list members from the provider and writes gb_open_rate and gb_click_rate onto each matched res.partner, while members marked unsubscribed or cleaned are flagged unsubscribed in Odoo. Sales and marketing see real engagement metrics directly on the contact.
Dynamic Segments
A gb.email.sync.segment is a saved Odoo domain layered on top of a list's filter, letting you push a slice like UK customers active in 90 days. action_push_segment sends just that subset, with a live contact_count and a preview action so you target precisely before pushing.
Field Mapping
gb.email.sync.field.map rows map dotted res.partner paths (validated against real fields) to Mailchimp merge tags or Brevo attributes. _map_partner resolves each path per contact, so first name, country and any custom field land in the correct provider field automatically.
PECR Consent Enforcement
res.partner gains gb_marketing_consent and gb_email_unsubscribed with consent date stamping; granting consent clears unsubscribe and an unsubscribe revokes consent. When consent_required is on, only opted-in contacts are pushed, helping you respect UK PECR by construction.
Two-Way Unsubscribe Sync
Unsubscribes propagate in both directions: an Odoo unsubscribe pushes as unsubscribed/blacklisted, and a provider-side opt-out pulled back sets gb_email_unsubscribed and clears consent. You never email a contact who opted out on either platform, avoiding compliance breaches.
Sync Log, Retry & Cron
Every push and pull writes a gb.email.sync.log row with ok/error result and message, and action_retry re-runs a failed contact's push. An optional ir.cron (_cron_sync_all, off by default) pushes lists, pulls engagement and syncs auto-sync segments every few hours for hands-free upkeep.
Use Cases
Screenshots
Sync Log
Push Contacts
Why Choose This Module
Stop maintaining your marketing lists by hand. This BYOK connector keeps your Odoo contacts and dynamic segments in sync with Mailchimp or Brevo using your own API key — no middle-man service. Credentials stay in your database and calls go straight to the provider's official REST API. It is a connector, not a sender: it formats and transports data, it does not send email itself.
Specifications
- Compatible: Odoo 18.0 / 19.0
- License: LGPL-3
- Languages: 35+
- Author: Pokutsoft
- Dependencies: mail, contacts
- Support: support@pokutsoft.com
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