Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Email Marketing
  3. Mailgun Connector — Bounce, Complaint & Event Tracking v 19.0
  4. Sales Conditions FAQ

Mailgun Connector — Bounce, Complaint & Event Tracking

by Practical Business Machines https://practicalbusinessmachines.com
Odoo
v 19.0 Third Party 1
Download for v 19.0 Deploy on Odoo.sh
Apps purchases are linked to your Odoo account, please sign in or sign up first.
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Email Marketing (mass_mailing)
• Contacts (contacts)
• Discuss (mail)
Lines of code 560
Technical Name mailgun_connector
LicenseLGPL-3
Websitehttps://practicalbusinessmachines.com

Mailgun Connector

Bounce, Complaint & Event Tracking for Odoo Email Marketing

Real bounce numbers. Cleaner lists. Better deliverability.

Out of the box, Odoo never learns what Mailgun already knows. Hard bounces, spam complaints and unsubscribes are processed by Mailgun but never flow back — so every mailing shows bounced = 0, dead addresses get re-mailed forever, and the sending reputation of your domain quietly erodes. Mailgun Connector closes the loop.

The gap it fills

Without the connector

  • Every mailing reports 0 bounces, whatever Mailgun actually saw.
  • Hard-bounced and complained addresses stay on your lists and get mailed again.
  • Repeated sends to dead mailboxes drag down your domain reputation.
  • Historical suppression data sits in Mailgun, invisible to Odoo.

With the connector

  • Bounce, complaint and unsubscribe counts on each mailing are real.
  • Dead and unhappy recipients land on the Odoo blacklist automatically.
  • You stop mailing addresses that hurt deliverability.
  • A one-click backfill pulls Mailgun's existing suppression lists into Odoo.

How it works

1. Point Mailgun at Odoo

Paste your signing key and copy the ready-made /mailgun/webhook URL from Settings → Mailgun Connector into Mailgun → Webhooks. No code, no proxy, no middleware.

2. Events flow back in real time

Every bounce, complaint and unsubscribe is HMAC-verified, logged, and applied to the right mailing trace and contact — the moment Mailgun reports it.

3. Backfill the past

One click (or the optional nightly job) pulls Mailgun's existing bounce, complaint and unsubscribe lists via the API, so historical dead addresses stop getting mailed.

Mailgun Connector settings page

What happens to each Mailgun event

Only deliverability events mutate Odoo state. Everything else is recorded for audit but never touches your stats — so opens are logged, not double-counted against Odoo's own tracking pixel.

Mailgun event Effect in Odoo
failed (permanent) Mailing trace marked bounced, contact's bounce counter +1, address blacklisted.
failed (temporary / soft) Bounce counted, but the address is never blacklisted — a full mailbox is not a dead one.
complained (spam) Trace marked bounced (opt-out), address blacklisted.
unsubscribed Address blacklisted.
delivered / opened / clicked / … Recorded in the Mailgun Events log only — no state change.

Per-campaign status is only written when the event is matched to a mailing by Message-Id. A looser recipient-only match is kept for visibility but never rewrites an unrelated campaign's bounce status.

Features

  • Real-time webhook at /mailgun/webhook — bounces, complaints and unsubscribes applied the instant Mailgun reports them.
  • HMAC-SHA256 signature verification on every call, with a 15-minute replay guard. Unsigned or forged calls are rejected.
  • Idempotent by Mailgun event id. At-least-once webhook retries and repeated backfills never double-apply a side effect.
  • Automatic blacklisting of hard bounces, spam complaints and unsubscribes — each independently toggleable.
  • Soft bounces counted, never blacklisted — temporary failures don't cost you a good contact.
  • Full audit log (Mailgun Events) of every delivery event, with filters for failures, complaints, unsubscribes and blacklisted actions, plus the raw payload.
  • Suppression backfill — one-click button and an optional nightly job pull Mailgun's existing lists via the API.
  • US & EU regions, safe recipient normalization, and concurrency-safe ingestion.
Mailgun Events log

Real numbers on every mailing

Because permanent failures write straight back to the mailing trace, the Email Marketing dashboard finally shows the truth: real bounce counts per campaign, a blacklist that keeps itself clean, and a bounce counter that rises on the contacts that actually failed.

A single Mailgun event record

Configuration

Everything lives under Settings → Mailgun Connector:

  1. Paste your Webhook Signing Key, Private API Key and Sending Domain (e.g. mg.example.com).
  2. Pick the API Base URL for your region — US (api.mailgun.net) or EU (api.eu.mailgun.net).
  3. Copy the generated Webhook URL into Mailgun → Webhooks for permanent_fail, temporary_fail, complained and unsubscribed (optionally delivered / opened / clicked).
  1. Choose which events add to the blacklist — hard bounce, spam complaint and unsubscribe are independently switchable.
  2. Click Sync suppressions now once to backfill history.
  3. Optionally enable the Mailgun: sync suppressions scheduled action (ships disabled, so nothing runs until you say so).

Built to be trusted with your list

Secure by default

Every webhook call is verified with an HMAC-SHA256 signature over Mailgun's timestamp + token, compared in constant time. A signed timestamp older than 15 minutes is rejected as a replay. Invalid signatures never reach your data.

Safe to retry

Events are de-duplicated on Mailgun's event id with a database uniqueness constraint and concurrency-safe ingestion, so retries, races and repeated backfills apply each side effect exactly once. One shared, idempotent code path drives both the webhook and the backfill.

Compatibility & support

Odoo 17.0 & 19.0, Community & Enterprise · depends on the standard Email Marketing (mass_mailing) module · License OPL-1.

A Practical Business Machines product by Davenport Pacific. Questions? support@dvptp.com

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with