Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
e3537f8
[ADD] mass_mailing_list_dynamic: Autopopulated mailing lists
yajo Oct 31, 2017
fdb0916
[FIX+IMP] mass_mailing_list_dynamic: tests, icons, filters... (#211)
pedrobaeza Feb 2, 2018
4b2dd8a
[FIX] mass_mailing_list_dynamic: Reversible dynamic list
chienandalu Mar 15, 2018
d0b07a4
[IMP] mass_mailing_list_dynamic: make user aware of list change
chienandalu Mar 20, 2018
51958a2
[MIG] mass_mailing_list_dynamic: Migration to 12.0
Jun 20, 2019
3a865ad
[MIG] mass_mailing_list_dynamic: Fix contact synchronization
ernestotejeda Jul 2, 2019
d920cd9
[IMP] mass_mailing_list_dynamic: black, isort
jaredkipe Mar 10, 2020
6e472f8
[FIX] mass_mailing_list_dynamic: list sync on send
chienandalu Jul 16, 2020
e83a682
[MIG] mass_mailing_list_dynamic: Migration to 13.0
jaredkipe Mar 10, 2020
ec58b3d
[IMP] pre-commit run -a
Jan 26, 2021
d099dfb
[FIX] mass_mailing_list_dynamic: Prevent ValidationError when merge c…
victoralmau Mar 18, 2021
20d13a5
[IMP] mass_mailing_list_dynamic: black, isort, prettier
victoralmau Oct 5, 2021
1c0b964
[MIG] mass_mailing_list_dynamic: Migration to 14.0
victoralmau Oct 5, 2021
ffc8e81
[15.0-mig-mass] [MIG] mass_mailing_list_dynamic: Migration to 15.0
XanderDeJaegere Aug 1, 2022
6270c15
[16.0][MIG] mass_mailing_list_dynamic: Migration to 16.0
nguyenminhchien Mar 6, 2023
d8c1e40
[IMP] mass_mailing_list_dynamic: pre-commit auto fixes
May 15, 2024
4e7f91f
[17.0][MIG] mass_mailing_list_dynamic: Migration to 17.0
pegonzalezs Feb 17, 2025
9ecde71
[IMP] mass_mailing_list_dynamic: pre-commit stuff
DavidJForgeFlow May 9, 2025
a8e9563
[MIG] mass_mailing_list_dynamic: Migration to 18.0
DavidJForgeFlow May 9, 2025
5c21b3f
[FIX] mass_mailing_list_dynamic, mass_mailing_partner: allow bouncing…
yajo Dec 26, 2024
a90f03a
[FIX] mass_mailing_list_dynamic: prevent put in queue with errors
chienandalu Apr 16, 2025
1d5fc5a
[FIX] mass_mailing_list_dynamic: optimize sync operations
yajo Mar 23, 2026
bfc7853
[MIG] mass_mailing_list_dynamic: Migration to 19.0
quoc-pn May 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
167 changes: 167 additions & 0 deletions mass_mailing_list_dynamic/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association

==========================
Dynamic Mass Mailing Lists
==========================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:e8b7d3113e319ba6a2da36909a79a74bbf086e5a06421fb150d79c8510fa732d
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fmass--mailing-lightgray.png?logo=github
:target: https://github.com/OCA/mass-mailing/tree/19.0/mass_mailing_list_dynamic
:alt: OCA/mass-mailing
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/mass-mailing-19-0/mass-mailing-19-0-mass_mailing_list_dynamic
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/mass-mailing&target_branch=19.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

Without this addon you have to choose between providing a dynamic domain
and letting your mass mailings reach all partners that match it.

This addon allows you to create dynamic mailing lists, so you can now
benefit from both things.

**Table of contents**

.. contents::
:local:

Configuration
=============

To create a dynamic mailing list, you need to:

1. Go to *Email Marketing* > Configuration > Settings
2. Check Mass Mailing Campaigns.
3. Go to *Email Marketing* > Mailing List > Mailing List
4. Check the *Dynamic* box.
5. Choose a *Sync method*:

- Leave empty to use as a manual mailing list, the normal behavior.
- *Only add new records* to make sure no records disappear from the
list when partners stop matching the *Synchronization critera*.
- *Add and remove records as needed* to make the list be fully
synchronized with the *Synchronization critera*, even if that means
removing contacts from it.

6. Define a *Synchronization criteria* that will be used to match the
partners that should go into the list as contacts. Only partners with
emails will be selected.

You can also load an existing filter over contacts:

1. Click on "Load filter" button below criteria.
2. Select one of the existing filters.
3. Click on "Load filter" and you will have that filter as criteria.

Usage
=====

To use this module, you need to:

1. Go to *Email Marketing > Mailings*, and create one.
2. Select as recipients a mailing list.
3. On "Select mailing lists:", choose one mailing list with dynamic flag
checked.
4. Before sending the mass mailing, the list will be synced for having
latest changes.

When you hit the *Sync now* button or send a mass mailing to this list,
its contacts will be automatically updated.

Pay attention to the messages shown to you that tell you about some
non-obvious behaviour you could experience if you edit manually contacts
from a dynamic list.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/mass-mailing/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/mass-mailing/issues/new?body=module:%20mass_mailing_list_dynamic%0Aversion:%2019.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
-------

* Tecnativa

Contributors
------------

- `Tecnativa <https://www.tecnativa.com>`__:

- Jairo Llopis
- Pedro M. Baeza
- David Vidal
- Victor M.M. Torres
- Víctor Martínez

- `Hibou Corp. <https://hibou.io>`__:

- Jared Kipe <jared@hibou.io>

- `Dynapps N.V. <https://www.dynapps.be>`__:

- Xander De Jaegere

- `Trobz <https://trobz.com>`__:

- Nguyễn Minh Chiến <chien@trobz.com>

- `PeGon GmbH <https://www.pegon.ch>`__:

- Pedro Evaristo Gonzalez Sanchez

- `Moduon <https://www.moduon.team/>`__:

- Jairo Llopis

- `Komit <https://komit-consulting.com>`__:

- Ngoc Quoc Pham <quoc-pn@komit-consulting.com>

Other credits
-------------

The migration of this module from 15.0 to 17.0 was financially supported
by Camptocamp

Maintainers
-----------

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

This module is part of the `OCA/mass-mailing <https://github.com/OCA/mass-mailing/tree/19.0/mass_mailing_list_dynamic>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
4 changes: 4 additions & 0 deletions mass_mailing_list_dynamic/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from . import models
from . import wizards
22 changes: 22 additions & 0 deletions mass_mailing_list_dynamic/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Copyright 2017 Tecnativa - Jairo Llopis
# Copyright 2018 Tecnativa - David Vidal
# Copyright 2019 Tecnativa - Victor Martin
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
{
"name": "Dynamic Mass Mailing Lists",
"summary": "Mass mailing lists that get autopopulated",
"version": "19.0.1.0.0",
"category": "Marketing",
"website": "https://github.com/OCA/mass-mailing",
"author": "Tecnativa, Odoo Community Association (OCA)",
"license": "AGPL-3",
"application": False,
"installable": True,
"depends": ["mass_mailing_partner"],
"data": [
"security/ir.model.access.csv",
# This should go before "mailing_list_view.xml"
"wizards/mailing_load_filter_views.xml",
"views/mailing_list_view.xml",
],
}
190 changes: 190 additions & 0 deletions mass_mailing_list_dynamic/i18n/am.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mass_mailing_list_dynamic
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-02-26 01:46+0000\n"
"PO-Revision-Date: 2018-02-26 01:46+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2018\n"
"Language-Team: Amharic (https://www.transifex.com/oca/teams/23907/am/)\n"
"Language: am\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"

#. module: mass_mailing_list_dynamic
#: model_terms:ir.ui.view,arch_db:mass_mailing_list_dynamic.mailing_list_view_form
msgid ""
"<i class=\"fa fa-info-circle\"/> If you want to remove contacts from a "
"dynamic list, just <b>set them as <i>Opt Out</i></b>."
msgstr ""

#. module: mass_mailing_list_dynamic
#: model_terms:ir.ui.view,arch_db:mass_mailing_list_dynamic.mailing_list_view_form
msgid ""
"<i class=\"fa fa-info-circle\"/> You cannot make manual editions of contacts "
"in fully synchronized lists."
msgstr ""

#. module: mass_mailing_list_dynamic
#: model_terms:ir.ui.view,arch_db:mass_mailing_list_dynamic.mailing_list_view_form
msgid ""
"<span invisible=\"is_synced\">\n"
" <strong>???</strong>\n"
" </span>"
msgstr ""

#. module: mass_mailing_list_dynamic
#: model:ir.model.fields.selection,name:mass_mailing_list_dynamic.selection__mailing_list__sync_method__full
msgid "Add and remove records as needed"
msgstr ""

#. module: mass_mailing_list_dynamic
#: model_terms:ir.ui.view,arch_db:mass_mailing_list_dynamic.view_mailing_load_filter_form
msgid "Cancel"
msgstr ""

#. module: mass_mailing_list_dynamic
#. odoo-python
#: code:addons/mass_mailing_list_dynamic/models/mailing_contact.py:0
#, python-format
msgid ""
"Cannot edit manually contacts in a fully synchronized list. Change its sync "
"method or execute a manual sync instead."
msgstr ""

#. module: mass_mailing_list_dynamic
#: model:ir.model.fields,help:mass_mailing_list_dynamic.field_mailing_list__sync_method
msgid ""
"Choose the syncronization method for this list if you want to make it dynamic"
msgstr ""

#. module: mass_mailing_list_dynamic
#: model:ir.model,name:mass_mailing_list_dynamic.model_res_partner
msgid "Contact"
msgstr ""

#. module: mass_mailing_list_dynamic
#: model:ir.model.fields,field_description:mass_mailing_list_dynamic.field_mailing_load_filter__create_uid
msgid "Created by"
msgstr "Creado por"

#. module: mass_mailing_list_dynamic
#: model:ir.model.fields,field_description:mass_mailing_list_dynamic.field_mailing_load_filter__create_date
msgid "Created on"
msgstr "Creado en"

#. module: mass_mailing_list_dynamic
#: model:ir.model.fields,field_description:mass_mailing_list_dynamic.field_mailing_load_filter__display_name
msgid "Display Name"
msgstr ""

#. module: mass_mailing_list_dynamic
#: model:ir.model.fields,field_description:mass_mailing_list_dynamic.field_mailing_list__dynamic
msgid "Dynamic"
msgstr ""

#. module: mass_mailing_list_dynamic
#: model_terms:ir.ui.view,arch_db:mass_mailing_list_dynamic.mailing_list_view_form
msgid "Dynamic list"
msgstr ""

#. module: mass_mailing_list_dynamic
#: model:ir.model.fields,help:mass_mailing_list_dynamic.field_mailing_list__sync_domain
msgid "Filter partners to sync in this list"
msgstr ""

#. module: mass_mailing_list_dynamic
#: model:ir.model.fields,field_description:mass_mailing_list_dynamic.field_mailing_load_filter__filter_id
msgid "Filter to load"
msgstr ""

#. module: mass_mailing_list_dynamic
#: model:ir.model.fields,help:mass_mailing_list_dynamic.field_mailing_list__is_synced
msgid "Helper field to make the user aware of unsynced changes"
msgstr ""

#. module: mass_mailing_list_dynamic
#: model:ir.model.fields,field_description:mass_mailing_list_dynamic.field_mailing_load_filter__id
msgid "ID"
msgstr "ID"

#. module: mass_mailing_list_dynamic
#: model:ir.model.fields,field_description:mass_mailing_list_dynamic.field_mailing_list__is_synced
msgid "Is Synced"
msgstr ""

#. module: mass_mailing_list_dynamic
#: model:ir.model.fields,field_description:mass_mailing_list_dynamic.field_mailing_load_filter__write_uid
msgid "Last Updated by"
msgstr "Última actualización por"

#. module: mass_mailing_list_dynamic
#: model:ir.model.fields,field_description:mass_mailing_list_dynamic.field_mailing_load_filter__write_date
msgid "Last Updated on"
msgstr "Última actualización en"

#. module: mass_mailing_list_dynamic
#: model:ir.actions.act_window,name:mass_mailing_list_dynamic.action_mailing_load_filter
#: model_terms:ir.ui.view,arch_db:mass_mailing_list_dynamic.mailing_list_view_form
#: model_terms:ir.ui.view,arch_db:mass_mailing_list_dynamic.view_mailing_load_filter_form
msgid "Load filter"
msgstr ""

#. module: mass_mailing_list_dynamic
#: model:ir.model,name:mass_mailing_list_dynamic.model_mailing_contact
msgid "Mailing Contact"
msgstr ""

#. module: mass_mailing_list_dynamic
#: model:ir.model,name:mass_mailing_list_dynamic.model_mailing_list
msgid "Mailing List"
msgstr ""

#. module: mass_mailing_list_dynamic
#: model:ir.model,name:mass_mailing_list_dynamic.model_mailing_mailing
msgid "Mass Mailing"
msgstr ""

#. module: mass_mailing_list_dynamic
#: model:ir.model,name:mass_mailing_list_dynamic.model_mailing_load_filter
msgid "Mass Mailing Load Filter"
msgstr ""

#. module: mass_mailing_list_dynamic
#: model:ir.model,name:mass_mailing_list_dynamic.model_base_partner_merge_automatic_wizard
msgid "Merge Partner Wizard"
msgstr ""

#. module: mass_mailing_list_dynamic
#: model:ir.model.fields.selection,name:mass_mailing_list_dynamic.selection__mailing_list__sync_method__add
msgid "Only add new records"
msgstr ""

#. module: mass_mailing_list_dynamic
#: model:ir.model.fields,help:mass_mailing_list_dynamic.field_mailing_list__dynamic
msgid ""
"Set this list as dynamic, to make it autosynchronized with partners from a "
"given criteria."
msgstr ""

#. module: mass_mailing_list_dynamic
#: model:ir.model.fields,field_description:mass_mailing_list_dynamic.field_mailing_list__sync_method
msgid "Sync Method"
msgstr ""

#. module: mass_mailing_list_dynamic
#: model_terms:ir.ui.view,arch_db:mass_mailing_list_dynamic.mailing_list_view_form
msgid "Sync now"
msgstr ""

#. module: mass_mailing_list_dynamic
#: model:ir.model.fields,field_description:mass_mailing_list_dynamic.field_mailing_list__sync_domain
msgid "Synchronization critera"
msgstr ""
Loading
Loading