- People click unsubscribe by accident. It's a small link in a footer full of other small links.
- Odoo has no undo. Getting back on the list means finding a checkbox on a preferences page, ticking it and saving.
- We built a small module that adds a one-click way back to each of the three pages in Odoo's unsubscribe flow.
- It only restores what that email took away, and only when the reader clicks. Odoo 18, 19 and 20. Running on this site today. Code on GitHub.
Where the subscribers go
Every newsletter needs an unsubscribe link, and most of the time people mean it when they click. Every so often a reader taps it while scrolling and lands on a page they never meant to see.
When it's an accident, Odoo doesn't make the way back obvious. The reader lands on a confirmation page, then a "Successfully unsubscribed!" page, then maybe a preferences page with a list of checkboxes. To rejoin, they have to work out which box is theirs, tick it and hit Apply. Most people close the tab instead, and you lose a reader who wanted to stay.
What we added
One button on each page of the flow. Here's how it looks on our own list.
1. "Are you sure?" now has Stay on the list

Click it and nothing changes in the database. The message switches to "You're still subscribed."
2. "Successfully unsubscribed!" now has Resubscribe

One click puts the reader back on the list that email came from.
3. The preferences page now has Keep me subscribed

"Clicked by mistake?" sits right under the unsubscribe notice. The button re-ticks the list and submits Odoo's own form, so the result is the same as if the reader had done it by hand.
What it won't do
- Restores only the lists that email went to. If someone left a different list last month, a Resubscribe click won't put them back on it.
- Skips internal lists. Anything not marked "Show In Preferences" is never offered or restored.
- Works only for the reader. The Resubscribe link checks the same signed token as Odoo's unsubscribe link, so nobody can resubscribe someone else's address.
- Sends nothing. There's no "come back" email. Getting back on the list is always the reader's own click.
Two things we found while testing
Your preferences page shows every public list. Under "You may also be interested in," Odoo lists every mailing list marked "Show In Preferences." When we tested, ours showed a test list and a few internal segments to every reader. To hide one, open it under Email Marketing, Mailing Lists, and untick Show In Preferences.
A mailing with no list attached can't unsubscribe anyone. Odoo's unsubscribe link only opts people out of the lists attached to that mailing. Our welcome series ran from Marketing Automation with no list attached, so its unsubscribe link said "Successfully unsubscribed" and changed nothing. That's standard Odoo, not this module. If you run automated sequences, check that each mailing has your newsletter list attached.
Install it
The module works on Odoo 18, 19 and 20 and depends only on Email Marketing. It needs Odoo.sh or on-premise, since Odoo Online doesn't allow custom modules. It's free under LGPL-3. Code, install steps and docs: github.com/19prince/mass_mailing_resubscribe. Want help putting it on your database? Get in touch. More of what we build is in the Lab.