PURPOSE
Improves various views related to the mass mailing lists to help the user to
check the "health" of its lists at a glance.
SPECS
Introduce statistic fields on mailing.list:
- Total number of contacts (replaces the previous number of valid emails)
- Number of valid email contacts
- Number of valid SMS contacts
- Number of mailings sent using the list
- Percentage (and total count) of opted-out contacts
- Percentage (and total count) of blacklisted contacts
- Percentage of contacts having at least one bounced message
The statistics are shown on the kanban and also on the form view where they are
used to quickly reach the associated mailings / contacts.
Demo data were slightly adapted to show more interesting demos on views.
On a technical point of view, the various counts of contacts are made in a
single query using CASE WHEN syntax.
We need some entry points in the query to be able to dynamically add fields and
joins in the mass_mailing_sms app, but it's better than copy/pasting multiple
times a very similar query.
LINKS
Task 2182622
UPG PR odoo/upgrade#1990closesodoo/odoo#53221
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
PURPOSE
To ease the scheduling process, we introduce a new calendar view on mailings
that allows to easily schedule your communications. In addition, mailings and
sms views are improved to ease global usability especially about scheduling
configuration.
SPECIFICATIONSS
- add a calendar view to allow marketeers to either schedule or overview their
ongoing mailings/sms;
Side note: inspired by what has been done with Social Posts
- improve the scheduling flow by allowing to configure it directly in the form
view using fields rather than action buttons that open an extra window. This
implied removing the schedule wizard as everything is now configured directly
from the mailing form view;
- add a constraint on 'schedule_date' to make sure it's not scheduled in the
past;
- compute a calendar_date to be used by calendar view. It is either sent
date (if sent), next departure of cron (if in queue) or schedule date (if
scheduled).
- update mass_mailing_sms to match scheduling flow of emails and adjust the
'sms_force_send' display to ease understanding ;
LINKS
Task ID-2202759
COM PR odoo/odoo#57000
ENT PR odoo/enterprise#12920
UPG PR odoo/upgrade#1736
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
Co-authored-by: Aurélien Warnon <awa@odoo.com>
Fix traceback when creating a new contact by checking the id list is not empty
Filter default reporting by name rather then by campaign (as campaign is an option)
Group by Campaign only if the option is checked to enforce coherency.
> This is unblocked with a group.
Hide the 'replied' status from sms reports as it is not relevant for sms.
Remove the preview message for sms as it is not relevant elsewhere then the object of mails.
Warn the user if he's trying to send a sms with only white-space characters.
> this causes an error because the plaintext-html conversion in mail_thread.py
> consider a white-spaces-only text as empty.
Mobile placeholder added for a better understanding of the field by the user.
Task ID : 2302578
closesodoo/odoo#61461
X-original-commit: e6496af1ea31b2c699de9e41196a9ae3a07efb7f
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
Previously, in multiple modules, long names would result in an overflow of text.
With this commit long texts should appear like this: [aaaaa...] instead of
going out of their boxes.
Various views are updated, depending on which fields we wanted to prevent
from overflowing and the probability they do so.
Task ID-2325219
PR odoo/odoo#57713
PR odoo/enterprise#13226
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
PURPOSE
Subject field on mailing has not the same use in email marketing (subject of
emails) and in SMS maketing (used internally as there is no subject in SMS).
Purpose of this commit is to improve mailing form view to better distinguish
email and SMS flows.
SPECIFICATIONS
This commit changes helper for mailing subject and update its label according
to mailing_type (mail or sms), as well as the sms content field to enable emoji
support in mailing subjects. This is done through a fake sms_subject field
that is a text without emojis while standard subject allows emojis. Helpers
depends on the displayed field.
Override CRUD to synchronize sms_subject on subject to have only one field
used to store data.
Also allow emojis in SMS content, suing the enable_emojis option.
LINKS
Task ID-2224393
PR #49096
This commit sets attribute sample="1" in a bunch of list and
kanban views, to enable the new sample data feature when views are
empty.
Task 2232801
X-original-commit: 5471309b35619f307242c2704c7681ba63d2be42
Issue
- Go to unsubsribe sms page where the 'sms_code' is the same
in multiple traces
- Fill the correct phone number (same one of any traces)
- Click on 'Unsubscribe me'
Traceback is raised.
Also, if empty phone number, still have successfull message.
Cause
Multiple traces with same "sms_code" but different "sms_number".
The current behavior does not handle multiple traces.
Solution
- Filter and retrieve the trace with the correct "sms_number".
- Add 'required' attribute on phone number input.
opw-2264200
closesodoo/odoo#52452
X-original-commit: 34a8f63332e8269c2dbf5fa2b3ca16913798532c
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
Signed-off-by: bon-odoo <nboulif@users.noreply.github.com>
Purpose of this commit is to update the list views of mass_mailing and
mass_mailing_sms according to the new framework possibilities for better UX/UI.
This commit utilises the latest framework features available from task 2195254
to represent the information in better way and/or adds some useful fields
List of the tree views improved are:
- Email Marketing - mass_mailing.view_mail_mass_mailing_tree
- SMS Marketing - mass_mailing_sms.mailing_mailing_view_tree_sms
For detailed specification, you can visit pad of the task.
Task-id: 2250285
PURPOSE
Clarify the use case in which a specified email address is set as replies may
not be traceable. Make the %Click KPIs visible for Emails as well. Allow users
to report on the links that have (or not) been clicked from their
mailing.
SPECIFICATIONS
Add an info text for the "specified email address" option in the "reply to"
field. If target model does not accept incoming emails warn the user it is
likely to fail.
Number of emails/sms sent is now display as clickable text instead of stat
button and clicked stat button is now also visible in mass_mailing.
Task ID: 2202495
PR #48339
Since January 2020, users are required to validate their IAP account via
SMS code validation. This new behaviour needed to be properly ported to
the client to correctly inform the user.
This commit adds support of a new failure_type: 'Unregistered Account'.
Task #2209567closesodoo/odoo#48512
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
Currently, users can't switch Outgoing Mail Server once the mailing has been
sent. This might cause issue some situation. For example, the user has two
Email Servers. He tries sending with the first server and something is wrong
then emails couldn't be sent. So in this case user can not edit the mail
server and instead has to create another mailing with second working server.
This commit improves the behavior by removing the readonly attr on
`Mail Server` field of mass mailing.
Task-Id : 2223141
Closes : #48256
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
Currently there is two ways in view to have a phone number displayed in
LTR in a RTL language:
- have `widget="phone"` on a field
- have a class o_force_ltr on the field
But this is currently done very rarely and fail in list view because the
direction of data cells is used, eg.:
```
<div style="direction:rtl">
<table><tr><td style="direction:ltr">
<span>+1 2 3</span>
</td></tr><tr><td>
<span style="direction:ltr">+4 5 6</span>
</td>/tr></table>
</div>
```
will be displayed as:
+1 2 3
6 5 4+
In this commit, we use unicode-bidi* to optionally add an additional
level of embedding so direction is taken into account by the
bidirectional algorithm.
This commit also adds o_force_ltr class or phone widget on phone fields
where it is not already defined.
*: https://drafts.csswg.org/css-writing-modes-3/#propdef-unicode-bidi
opw-2224828
closes#48425closesodoo/odoo#48588
X-original-commit: ab067218e069f0a92610c3f0d4137e563e47755c
Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>
Previously a blacklisted phone number or email address could only be
removed from their respective blacklist by going to the corresponding
blacklist view [in mass_mailing_(sms)] and manually
archiving/deactiviting the entry. All users could see that an email was
blacklisted via an fa-ban icon added next to their corresponding field
in the modules: crm, mass_mailing, mass_mailing_sms, and contacts (via
extension).
This commit adds additional fa-ban icons next to blacklisted phone
numbers and makes all instances of these icons clickable to remove them
from their corresponding blacklist using a wizard. There are several
limitations to this implementation including:
1. If both a mobile and phone number field appear within a crm lead
instance, then only the mobile field will indicate if it is blacklisted
(due to current implementation of PhoneMixin which only checks 1 phone
value against the blacklist and "sms" which returns mobile numbers first).
I.e. if a phone field value is blacklisted, but a value is typed into the
mobile field, then the phone field will never indicate that it is blacklisted.
2. If someone clicks on a unblacklisting icon after changing the
corresponding field value without clicking off the field input, then the
latest typed in value will be the one submitted for unblacklisting,
which may not actually be blacklisted (due to "is_blacklisted" flag
being a computed field and it not having a chance to re-compute to hide
the button).
3. If someone changes values in the blacklist, then someone who already
has a form open will not see icon disappear until something triggers a
re-compute of the "phone_sanitized_blacklisted" flag (this was already the
case with the icon, but now a user may try to unblacklist a value that is
already unblacklisted.)
4. Since the icon needs to be visible by everyone to indicate whether or
not a phone/email is blacklisted, users without corresponding unblacklist
permissions will be able to click on the icon. When they click on it, they
will be informed they do not have permission to unblacklist. A wizard was
determined to be the best way to implement this unblacklisting for the
following reasons:
- A "Unblacklisting Reason" is needed and will not be stored as a field.
- A field widget is unable to do this due to security settings +
inability to refresh view after unblacklisting with a
"Unblacklisting Reason" without wiping unsaved changes.
Additionally, to better align with GDPR, the corresponding form view for
the phone/email blacklist has been updated to use the same wizard to
track "Reason for unblacklisting". Unfortunately there is no
straightforward way to prevent direct "Archive" action, so users are
still able to bypass unblacklisting without being asked for a "reason
for unblacklisting".
Supports task: 2117635
Upgrade PR: odoo/upgrade#939
COM PR: odoo/odoo#45315
Minor UX tweaks for more consistent and correct wording, visualization,
and editing ability for mass_mailing and mass_mailing_sms. Specifically:
- Fix all "This email is blacklisted for mass mailing" => ".. mass
mailings" typos
- Make phone blacklist not editable (to align w/ email blacklist)
- Add "Archived" ribbon to phone and email blacklist
- Update menu items and actions
- "Phone Blacklist" => "Blacklisted Phone Numbers"
- "Blacklist" => "BLacklisted Email Addresses"
Supports task: 2117635
SPECIFICATIONS
Merge contact list views used in mass_mailing and mass_mailing_sms
* in the mass_mailing contact list, the "email blacklisted" field has been
moved next to the email field;
* when mass_mailing_sms has been installed, the mass_mailing contact list
also shows the phone number and whether this number has been blacklisted;
* the mass_mailing_sms contact list also shows the email and whether this
email has been blacklisted;
* enable sms option on mobile field of contact;
LINKS
Task ID 2088303
Community PR odoo/odoo#40482
Upgrade PR odoo/upgrade#873
Co-Authored-By: Florimond Husquinet <fhu@odoo.com>
Co-Authored-By: Thibault Delavallée <tde@odoo.com>
- In the campaign form view, when you click on "SMS", the filter has changed
``My Mailing`` -> ``My SMS Marketing``
- In the campaign form view, display the Mail/SMS subject instead of the SMS name
- In UTM, move the campaign from the data to the demo data
Task #2082296closesodoo/odoo#40205
Related: odoo/enterprise#6685
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
This commit slightly improves the utm.campaign kanban view by reordering statistics and changing
their display.
The recent changes introduced in 09c9d1f0d0 were not satisfying after all.
Task#2077579
closesodoo/odoo#37612
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
Co-authored-by: Aurélien Warnon <awa@odoo.com>
There is the % Clicked stat button in SMS marketing form view when it
is on draft or test. Fix to be only visible
when the state is not in draft or test
TASK_ID : 2078918
closesodoo/odoo#37615
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
In the sms marketing, the display name of the contact list was wrong
during the search of the many2one widget (contact list field,
count of valid number was the count of valid email).
Add a context attribute on the widget depending of the global context
to force the rigth count.
TASK_ID : 2078918
The field sms_allow_unsubscribe field was visible and checkable on the
email marketing app, but this field is reserved to the
sms marketing. Add a invisible condition.
TASK_ID : 2078918
- In the sms marketing app, the count of valid sms
recipient for contact list was not consistent in all app.
Fix by appling the mailing_sms context value also in the
mailing mailing form.
TASK_ID : 2075733
closesodoo/odoo#37248
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
- In the sms marketing, the sms_allow_unsubscribe is now False by default
and move the field in the setting page.
- Improve the unsubscribe link for the sms : adding "\nSTOP SMS : "
message before the link.
TASK_ID : 2075733
- In the sms marketing form view, a space is missing between the text
and a next_departure field -> Fix
- In the sms marketing form view, the sms content is now required
order to fix traceback due to a empty sms (when the sms was send).
- In the the sms marketing tree view : change the name field
with the subject field
(due to the change with name -> subject of mailing)
TASK_ID : 2075733
- In the mail/sms marketing form, compress all blue ribbons into
one to avoid multiple space between ribbons.
- In the sms marketing form, we add a clicked stat button to have
the same information that the kanban view.
- In the mail marketing form (when sms is enabled), when the state is in draft, stat buttons
opened and replied was present for no reason (only with sms marketing installed).
Fix by adding correct invisible condition.
TASK_ID 2075733
- Revamp the kanban view of the mass mailing (and mass SMS)
model to be more concise and readable. Also fix the issue of no border progress
bar in community version (same view).
- In the kanban view of mail marketing, when mailing list model is
targerted, the count of record was not correct.
Create a display condition if mailing list is used to fix the issue.
TASK_ID : 2075733
This commit slightly improves the utm.campaign kanban view by reordering statistics and changing
their display.
Task#2077579
closesodoo/odoo#37518
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
Retry was not working for SMS marketing as it was actually not really
implemented. It now correctly unlinks failed sms and traces and reschedule
the mailing accordingly
It is also possible now to force send while being in queue mode to avoid
having to switch too much between states.
LINKS
Task 2076366 (send now)
Task 2067873 (template access)
PR #37298
PR odoo/enterprise#5750
PURPOSE
Sending SMS is sometimes required as an immediate marketing tool.
Using delayed crons is not always the best user choice. Implement a
Send Now mechanism in batch SMS.
SPECIFICATIONS
Allow to send directly SMS when doing SMS marketing
SMS Application
* in sms composer, in mass mode: rename Send SMS to Put in queue and
add a Send Now button by-passing the queue;
* set Put in queue as primary, Send Now as secondary;
SMS Marketing Application
* in mailing view for SMS: rename Send SMS to Put in queue and
add a Send Now button by-passing the queue;
* set Put in queue as primary, Send Now as secondary;
Tests of SMS marketing with 400 contacts to SMS indicates it takes about
10 seconds to be completed which is considered as ok.
LINKS
Task 2076366 (send now)
Task 2067873 (template access)
PR #37298
PR odoo/enterprise#5750
Sending void SMS marketing is not considered as a valid use case, more
something we should prevent as each sent SMS consumes credits. Required
is put in view as we have to support void sms body for mail mailings.
LINKS
Task 2076366 (send now)
Task 2067873 (template access)
PR #37298
PR odoo/enterprise#5750
This commit adds the concept of sms into the utm.campaign
* Add "Send new sms" button to the cta
* Add a SMS stat button
* Add a sms page in the notebook
LINKS
Task ID 2074813 (FP request UTM refactor)
closes odoo/odoo#37185
Pr: #37185
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
This commit hides the field "name" of the mailing.mailing model.
Instead of having both fields "name" and "subject" on the form, "name" will
only be visible in debug mode leaving only "subject" to be visible for other
users. Indeed name is a more technical field used to create and find UTM
source record back while subject is the real business field.
This change implies that the name will now be set by default in the create
method so that the UTMs keeps working as they were. The name will be
constructed as follow: "subject create_date".
If the admin decides to set the name himself, the name will not be set
by default. Field is set in debug mode to allow its edition.
In mass mailing sms subject field is made visible. The name field being only
visible in debug mode now, the subject field had to be made visible in the
mailing form of the mass_mailing_sms module.
LINKS
Task ID 2072130 (hide name on mass mailing)
PR: #36935
Specifications
* sms, in the form view of sms composer : the count of all record doesn't
match the reality in a multi-company environment. The search_count was
done is sudo, then records of other company was taken in account in the
count. Fix by explicitly setting fields as computer_sudo=False;
* mass_mailing, in the kanban view of mail marketing : A warning ribbon
("insufficient credit") appeared on the kanban item of mass mailing, but
the message was for sms marketing views only. Change the attributes to be
invisible for mail marketing;
* mass_mailing, in the form view of mail mailing : Weird default domain
filter ([0 = 1]) was display instead of an empty domain filter;
* mass_mailing_sms, in the test sms wizard, remove a duplicate error message :
When the number format was wrong a duplicate error message pop up. Fix by
simplify the model and remove useless computed fields.
* mass_mailing_sms, in the test sms wizard, rename the label "Number" to
"Number(s)" to show that it can multiples ones.
Task ID 2073016 (sms fixes)
PR #37185
Currently in mass_mailing_sms form view of mailing is displaying differently
depending on mailing_type field that is hidden. Purpose is to have a single
form view while not allowing people to change the mailing type as they
always come from a context where it is given (mass_mailing -> mail, mass
mailing sms -> sms, same in marketing automation(_sms)).
In this commit we create a new form view based on the existing one (inherit
and primary) with the only change currently being the mailing_type being
displayed.
It will be used in some cases when we want people to contact in mass records
without knowing if it will be mail or sms. For example on event, allowing
to contact attendees and choose either mail or sms, avoiding to define
two buttons and actions on event form view.
Task ID 2074848 (sms on attendees)
Task ID 2075183 (sms on speakers)
PR #37185
- Change the name of "Mass SMS" by "SMS Marketing"
- Improve the Mass Mailing views (kanban, form)
- Improve the Mass SMS views (kanban, search, form)
- Hide the sanitized numbers from views (sometime replace by mobile)
- Fix demo data of sms
- Explain the language field of sms template
- Improve the render of the sms composer wizard
TASK_ID : 2053631
In order to improve and clarify the mass-mailing (Email Marketing) module
several changes have been made
1 - Clarify the name of the application:
2 - Prevent the “Quick Add/Create” feature in the mailing kanban view
3 - Label and wording clarification in mailing_mailing form view :
4 - Clarify button names "Send now" ("put_in_queue")
5 - Mailing Form view layout
6 - Clarify the required field
7 - Clarify the readonly field
8 - Wording clarification if scheduling mail in the future
9 - Add a Placeholders tools page in the form view:
10 - Clarify the Campaigns view
11 - Clarify the Action Helpers
TASK-ID : 2046078
closesodoo/odoo#36124
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
PURPOSE
SMS are a powerful marketing tool. For instance it is perfect to announce a
sale or to communicate a coupon code, to welcome a new customer in a fidelity
program, ...
Purpose of this task is to integrate SMS sending in batch in mass mailing. It
will use same mailing objects but sending SMS instead of emails. Some metrics
and flows will have to be slightly updated at the same time.
SPECIFICATIONS
Create a new application called "Mass SMS" that follows the structure of
mass_mailing application.
General guidelines
* use the fa-comment icon for this module;
* add a "Notification type" field to the mailings: email or sms. Set it
invisible and set as domain from context when choosing mass mailing or
mass sms application (menus / action specific);
* adapt the metrics from Mass Mailing to SMS
* sent = received = whether the SMS was sent or not;
* opened => we don't have this information;
* replied => we don't have this information;
* clicks = from link tracker (no change of behavior);
* bounced = SMS that failed to be delivered because the format is wrong;
* exception = any issue when sending SMS;
* keep the Mailing Lists menu, hide email related fields on contact model;
* settings: hide the "Specific Mail Server" feature
Mailing form view
* add an "SMS Content" tab between Mail Body and Options. In there, we should
have the following fields:
* content
* opt-out link: provide a link to the Unsubscribe page. Make it as short
as possible;
* SMS Template
* add an "SMS Text Message" Medium;
Mailing actions
* add an "SMS Sent" smart button. Use the fa-comment-o icon and it should
redirect to the same list views as the "Email sent" smart button and list
the contacts to which an SMS was sent;
* add a "Mobile" field in the list views of the "Email sent" smart button:
* adapt the TEST button > Test Mailing modal to SMS (we should have 1 button
for Email and 1 for SMS); update description;
* default value for the Recipients field should be Name of the current
user, work mobile/phone number;
* If there are no Work Mobile/Phone numbers set on res.users, display
(123)-456-7890 instead;
* rename the Send Sample Mail button into Send Sample SMS;
* adapt the SEND NOW button > Confirmation modal to SMS. Change the message
into "This will send the SMS Text Message to all recipients. Do you still
want to proceed?"
* hide the following elements: Subject, From, Reply to, Attachments, Mail
Server, Mail Body tab; Opened, Replied;
* adapt the label of the following "warnings" to SMS
* x SMS Text Message(s) have been ignored and will not be sent.
* x SMS Text Message(s) are in queue and will be sent soon.
* x SMS Text Message(s) could not be sent.
Mailing kanban view
* hide the following stats: https://nimb.ws/grvBn0: Opened, Replied;
Mailing list / contact management
* following fields should be left empty: https://nimb.ws/3HBeJL: Opened,
Replied;
* when browsing through mailing lsits and contacts through the Mass SMS
application, update actions and views to hide fields related to
email and display only phone-related information;
UTM Campaign
* form view > Related Mailings tab: the following fields should be left
empty if notification type = SMS: https://nimb.ws/nfvr1O: Opened, Replied
Mass Mailing > Reporting (mail.trace.report model)
* adapt the reporting based on the fact that we do not have the following
metrics for SMS: Opened, Replied;
Mass Mailing > Configuration > Blacklist
* do not display any email information (phone blacklist is about phone);
* support phone blacklist. Phone blacklist is therefore a separate model
from mail.blacklist to simplify management. It is included in sms sending
process like mail blacklist when mailing in mass;
Opt-out and blacklist handling
* we do support mailing lists because they could come from different sources
and are a way to communicate with a specific audience (and not just a list
we bought), e.g. subscribe to this list to be kept updated whenever this
product is back in stock, or to receive results of this ...
* if the SMSing is from a list, opt-out removes ourselves from the list;
* if it is from the contact ==> Sent to blacklist;
* allow to attach unsubscription links in sent SMS, redirecting to a new
route in mass mailing SMS allowing quick unsubscribe and/or blacklist
of phone numbers;
Error management
* if the user clicks on Send Now / Schedule / Test and does not have enough
credits, open the "Insufficient credits" modal in a lazy option (aka when
having failed statistics linked to insufficient credits);
* on the mailing, we however display this failure as :
* a message on the mailing kanban view
* a message on the top of the form view + same behavior as the mailing and
"Could not be sent" https://www.screencast.com/t/BExgd1Gc;
LINKS
Task 1997464
PR #34424
Original SMS addition: Task 1922163 (4287481)