diff --git a/content/applications/marketing/email_marketing.rst b/content/applications/marketing/email_marketing.rst index 16bfcc40e..5850133e5 100644 --- a/content/applications/marketing/email_marketing.rst +++ b/content/applications/marketing/email_marketing.rst @@ -14,8 +14,9 @@ designed to simplify the otherwise complex process required to create engaging e successful campaigns, and track their overall effectiveness in a single application. .. seealso:: - - :doc:`/applications/marketing/email_marketing/mailing_lists` - - :doc:`/applications/marketing/email_marketing/unsubscriptions` + - :doc:`email_marketing/mailing_lists` + - :doc:`email_marketing/unsubscriptions` + - :doc:`email_marketing/lost_leads_email` Email marketing dashboard ========================= @@ -167,6 +168,8 @@ On this :guilabel:`Settings` page, there are three features available. The featu mailings. When enabled, Odoo reveals a new field (and link), in which the specific server configurations must be entered, in order for it to connect properly to Odoo. +.. _email_marketing/create_email: + Create an email =============== @@ -441,3 +444,4 @@ the mailing, as well. email_marketing/mailing_lists email_marketing/unsubscriptions + email_marketing/lost_leads_email diff --git a/content/applications/marketing/email_marketing/lost_leads_email.rst b/content/applications/marketing/email_marketing/lost_leads_email.rst new file mode 100644 index 000000000..7aa9563f5 --- /dev/null +++ b/content/applications/marketing/email_marketing/lost_leads_email.rst @@ -0,0 +1,357 @@ +============================= +Lost leads reactivation email +============================= + +In Odoo, lost leads are removed from the active *CRM* pipeline, but can still be targeted with the +*Email Marketing* application for strategic campaign purposes, such as lost leads reactivation. + +A lost leads reactivation email looks at the leads that were lost during a specific period of time, +and uses custom filters and lost reasons to exclude undesirable leads from the mailing list. + +Once a lost leads reactivation email is complete, it can be sent as is, modified and sent to +different groups for A/B testing, or saved as a template for later. + +.. example:: + A warehouse has leftover merchandise from a limited run of items from last year. To help clear + out the excess inventory, the warehouse manager creates a lost leads email to reach out to old + opportunities that were lost, and inform them that the limited merchandise is back in stock. + + The warehouse manager uses the following filters for a lost leads email: + + - :guilabel:`Blacklist` *is* `not set` + - :guilabel:`Created on` *>=* `01/01/2024 00:00:01` + - :guilabel:`Stage` *is not in* `New`, `Qualified`, or `Won` + - :guilabel:`Lost Reason` *is in* `Not enough stock` + - and either :guilabel:`Active` *is* `set` or `not set` + + .. image:: lost_leads_email/example.png + :align: center + :alt: A lost leads reactivation filter list excluding lost reasons like Too Expensive. + +.. tip:: + As filters are added and removed, pay attention to the :guilabel:`# record(s)` value below the + filtering section. This value indicates the total number of records that match the current + criteria. + + To view a list of all matching records, click the :guilabel:`# record(s)` text. + + .. image:: lost_leads_email/records.png + :align: center + :alt: The # record(s) text is located below the list of Recipient filters. + +Minimum requirements +==================== + +In order to create and deliver a lost leads reactivation email campaign, the *CRM* and *Email +Marketing* applications **must** be :ref:`installed ` and configured. + +Here are the minimum necessary filters that pertain to a lost leads reactivation mailing campaign: + +- The :ref:`Recipients ` field **must** be set to the + *Lead/Opportunity* model. +- A :ref:`Blacklist ` filter to exclude unsubscribed recipients. +- A :ref:`Created on ` to target leads that were lost during a + specific period of time. +- :ref:`Stage ` filter(s) to exclude leads that were already won, or + are still active in new stages of the sales pipeline (i.e. *New*, *Qualified*, etc.). These values + will be different per organization; however, it's minimally viable to exclude all the leads in the + *Won* stage. +- One or more :ref:`Lost Reason ` filters to exclude undesired + leads, such as duplicate, spam, or irrelevant records. +- A pair of :ref:`Active ` filters to target *both* active and + inactive leads. + +Add the necessary filters +========================= + +First, navigate to the :menuselection:`Email Marketing` app, and on the :guilabel:`Mailings` page, +click the :guilabel:`New` button in the top-left corner. + +.. _email_marketing/recipients_field: + +On the new :guilabel:`Mailings` form, enter an appropriate :guilabel:`Subject` line for the email in +the corresponding field. Then, in the :guilabel:`Recipients` field, choose the +:guilabel:`Lead/Opportunity` model from the drop-down menu. + +.. _email_marketing/blacklist_filter: + +In the rules section, located beneath the :guilabel:`Recipients` field, click the modify filter +(:guilabel:`▶ (triangle pointing right)`) icon to expand the filter rules. Leave the default +:guilabel:`Blacklist` rule in place. + +.. _email_marketing/created_on_filter: + +Created on +---------- + +Begin by clicking :guilabel:`New Rule` beneath the default :guilabel:`Blacklist` rule. Then, click +the first field of the new rule that appears, and select the :guilabel:`Created on` parameter from +the drop-down menu. With that in place, a specific time period during which the targeted leads were +lost can be designated (e.g. 30 days prior, 90 days prior, previous year, etc.). + +Then, in the second field, select :guilabel:`<= (less than or equal to)`, :guilabel:`>= (greater +than or equal to)`, or :guilabel:`is between` as a date operator, in order to frame the time +selection chosen in the third field. + +In the third field, use the calendar popover window to select dates, and click :guilabel:`Apply` to +lock in the time range. + +.. image:: lost_leads_email/created-on.png + :align: center + :alt: A custom filter rule setting the time period to be anything before today's date. + +.. important:: + When there is more than one rule applied, make sure the statement at the top of the + :guilabel:`Recipients` filter list reads: :guilabel:`Match all of the following rules`. If it + does not, click on the statement, and select :guilabel:`all` from the drop-down menu (as opposed + to :guilabel:`any`). + + .. image:: lost_leads_email/match-all.png + :align: center + :alt: The statement at the top of the filters list, with the drop-down menu open. + +.. _email_marketing/stage_filter: + +Stage +----- + +Now, add the :guilabel:`Stage` filter to exclude leads that are in the *New*, *Qualified*, and *Won* +stages of the sales pipeline. + +.. note:: + This step assumes that the *New*, *Qualified*, and *Won* stages exist in the CRM pipeline; + however, stage names may differ from business to business. Refer to the database's actual stage + names in the *CRM* app's pipeline to complete this step, accordingly. + +Begin again by clicking :guilabel:`New Rule` and select :guilabel:`Stage` from the first field's +drop-down menu. In the second field, select the :guilabel:`is not in` operator, and in the third +field, select the :guilabel:`New`, :guilabel:`Qualified` and :guilabel:`Won` stages to define the +rule's parameters. + +When the rule is added in this way, the logic in the third field renders as :code:`OR` (`|`) +statements. + +.. image:: lost_leads_email/stage-is-in.png + :align: center + :alt: Include multiple Stages in the filtering rule, using the "is in" operator. + +.. tip:: + Another way to add *Stage* rules, is to do so on a one-rule-per-row basis using the + :guilabel:`contains` or :guilabel:`does not contain` operators, and manually typing out the + defining characters in each stage name. This method, however, only allows for one selection at a + time, which can be useful for quickly turning on/off filters in the :guilabel:`Search...` bar. + + .. image:: lost_leads_email/stages.png + :align: center + :alt: Three filter rules requiring that the Stage does not contain New, Qualified, or Won. + +.. _email_marketing/lost_reason_filter: + +Lost Reason +----------- + +Next, add one or more :guilabel:`Lost Reason` rules to exclude leads that should **not** be targeted +for specific :doc:`lost reasons <../../sales/crm/pipeline/lost_opportunities>`. + +To do that, create another :guilabel:`New Rule`, once again. Then, in the rule's first field, select +:guilabel:`Lost Reason` from the drop-down menu. For the operator, choose either :guilabel:`is not +in` or :guilabel:`does not contain` from the drop-down menu. With either selection, use the third +field to enter a lost reason (or multiple lost reasons, depending on your operator choice) to +include in the rule. + +If choosing the :guilabel:`does not contain` operator, then repeat the preceding steps to add more +lost reasons, as needed, where each lost reason occupies one rule row at a time. + +For more information, refer to the section below outlining how to :ref:`select appropriate lost +reasons `. + +.. image:: lost_leads_email/reasons.png + :align: center + :alt: A list of filter rules that exclude all lost reasons other than the desired reason. + +.. _email_marketing/active_filter: + +Active +------ + +Finally, add a pair of :guilabel:`Active` filters to include both active and inactive leads for the +campaign. + +.. important:: + Adding both active *and* inactive lead records is necessary to capture the full scope of lost + leads in the database. Doing one without the other greatly impacts the number of targetable + records for the email campaign, and does **not** include a complete or accurate lost leads + audience. + +First, click the :guilabel:`(Add Branch)` icon on the most recently created rule (e.g. +:guilabel:`Lost Reason`), which is the middle of three icons located to the right of the rule row. +Doing so adds a pair of :guilabel:`any of` rules. Then, in the top rule's first field of the +newly-created branch, select the :guilabel:`Active` parameter from the drop-down menu. The rule then +automatically fills out to read: :guilabel:`Active` *is* `set`. + +For the first field of the bottom rule of the branch, select :guilabel:`Active` from the drop-down +menu again. However, this time, select :guilabel:`is not` from the operator drop-down menu in the +second field. The rule should then read: :guilabel:`Active` *is not* `set`. + +.. image:: lost_leads_email/active.png + :align: center + :alt: A pair of Match Any Of filter rules that include both active and inactive leads. + +Add body content +================ + +Now, with the domain section of the email campaign complete, create the body content of the email +using any of the premade stylized templates, or choose between the :guilabel:`Plain Text` or +:guilabel:`Start From Scratch` options for more granular control. For more information, refer to the +*Email Marketing* :ref:`documentation on how to create an email `. + +.. tip:: + To save the set of filters for later use, click :guilabel:`Save as Favorite Filter 💾 (floppy + disk)`, enter a name (such as `Lost Leads`), and click :guilabel:`Add`. + + .. image:: lost_leads_email/favorite-filter.png + :align: center + :alt: The Save as Favorite Filter pop-up can save the lost leads criteria for later. + +Send or schedule +================ + +Once all the components of the email campaign are complete, either: + +- click the purple :guilabel:`Send` button at the top-left of the form to immediately send the + email; or +- click the gray :guilabel:`Schedule` button, located to the right of the :guilabel:`Send` button, + to send the email at a future date and time. + +.. tip:: + Consider using *A/B Testing* to send an alternate version of the email to a percentage of the + target leads. This can help determine what subject lines and body content produce the best + click-through rates, before sending a final version to the remaining leads. + + To do so, open the :guilabel:`A/B Tests` tab on the mailing form and check the box next to + :guilabel:`Allow A/B Testing`. Then, adjust the parameters as needed, and click :guilabel:`Create + an Alternative Version`. + + .. image:: lost_leads_email/ab-testing.png + :align: center + :alt: The A/B Tests tab with the Allow A/B Testing box checked to create an alternate version. + +.. _email_marketing/select_lost_reasons: + +Select appropriate lost reasons +=============================== + +When a lead is marked as lost, Odoo recommends selecting a *Lost Reason* to indicate why the +opportunity did not result in a sale. Doing so keeps the pipeline organized and reporting data +accurate, and generates potential to follow up with the lead in the future. + +If an existing *Lost Reason* is not applicable, users with the necessary permissions can create new +ones, which means the lost reasons in a database can vary from organization to organization, and +from pipeline to pipeline. + +For more information on *Lost Reasons*, including the creation of them, refer to +:doc:`../../sales/crm/pipeline/lost_opportunities`. + +By default, Odoo includes a few common *Lost Reasons*, such as: + +- *Too expensive* +- *We don't have people/skills* +- *Not enough stock* + +When determining which reasons to include in a lost leads reactivation email, consider what the +email is advertising, in order pinpoint one or more relevant lost reasons. Then, add a rule stating, +:guilabel:`Lost Reason` *does not contain* `_____` for every reason in the database, **except** for +the relevant one(s). + +.. example:: + If the email advertises a selection of previously-limited merchandise that is now back in stock, + it makes sense to target leads with the lost reason: *not enough stock*. + + .. image:: lost_leads_email/out-of-stock.png + :align: center + :alt: A list of filter rules that exclude all lost reasons except for Out of Stock. + + If the email advertises a price reduction, it makes sense to target leads with the lost reason: + *too expensive*. + + .. image:: lost_leads_email/too-expensive.png + :align: center + :alt: A list of filter rules that exclude all lost reasons except for Too Expensive. + +Analyze the results +=================== + +After sending a lost leads reactivation email, marketing teams can use the smart buttons along the +top of the email to analyze the results, and determine follow-up actions. + +Clicking on any of the smart buttons opens a list of records matching that button's specific +criteria. + +.. image:: lost_leads_email/smart-buttons.png + :align: center + :alt: The Mailing page of a sent email showing the smart buttons along the top of the page. + +The smart buttons include: + +- :guilabel:`Sent`: total number of emails sent. +- :guilabel:`Opened`: percentage of recipients that opened the email. +- :guilabel:`Replied`: percentage of recipients that replied to the email. +- :guilabel:`Clicked`: click-through rate (%) of recipients that clicked on a link in the email. +- :guilabel:`Leads/Opportunities`: number of leads (or opportunities) that have been created in the + *CRM* pipeline, as a result of the email campaign. +- :guilabel:`Quotations`: number of quotations that have been created in the *Sales* application, as + a result of the email. +- :guilabel:`Invoiced`: total revenues generated, as a result of the email campaign, via invoices + sent to, and paid by, customers. These values are recorded in either the *Invoicing* or + *Accounting* application, depending on which app is installed in the database. +- :guilabel:`Received`: percentage of recipients that received the email. +- :guilabel:`Bounced`: percentage of emails that bounced (:dfn:`not delivered`). +- :guilabel:`Ignored`: the number of recipients that received the email, but have not interacted + with it in a meaningful way (i.e. opened, clicked, etc.). + +Email nurturing +=============== + +*Email nurturing* (sometimes referred to as *lead nurturing*) is the process of sending a series of +timely and relevant "nudge" emails to connect with a lead, build a deeper relationship, and +ultimately convert the lead into a sale. + +The point of nurturing is to keep the email campaign "visible" or at the top of a lead's inbox, +until they are ready to buy. + +There are many approaches to effective lead nurturing, but they often involve: + +- Sending an initial email (such as, a lost leads reactivation email). +- Sending a follow-up email each week (or according to specific triggers) for the duration of the + campaign. +- Continuously analyzing results to learn what approaches have resulted in sales. +- Continuously adjusting the approach to remain "visible" at the top of the lead's inbox, and + hopefully, get a meaningful response from the lead. + +As a campaign progresses, a marketing team may send different follow-up emails depending on how a +lead responded the previous week. + +.. example:: + A marketing team wants to advertise a restocking of limited-run merchandise to all leads with a + lost reason of *not enough stock*. They develop the following three-week long lead nurturing + campaign. + + - **Week 1:** the marketing team sends an initial email, with the subject line: *“Limited run + merchandise is back in stock! Act now!”* + - **Week 2:** the marketing team sends two different emails, depending on how a lead responded. + + - If a lead ignored the Week 1 email: *“Stock is almost out, did you get yours?”* + - If a lead clicked on the Week 1 email: *"You still have time to add this to your collection"* + + - **Week 3:** the marketing team sends a final email to all leads who have not been converted + stating: *“20% off, don't miss your last chance to get these items before they're gone!”* + + Throughout the campaign, the marketing team continuously refers to the smart buttons along the + top of the mailing page to see what percentages of leads are opening, clicking on, or ignoring + the emails. They also regularly analyze reports on how many opportunities, quotations, and + invoices have been generated by the campaign. + +.. seealso:: + - :doc:`../email_marketing` + - :doc:`unsubscriptions` + - :doc:`../marketing_automation` diff --git a/content/applications/marketing/email_marketing/lost_leads_email/ab-testing.png b/content/applications/marketing/email_marketing/lost_leads_email/ab-testing.png new file mode 100644 index 000000000..f2e7b9527 Binary files /dev/null and b/content/applications/marketing/email_marketing/lost_leads_email/ab-testing.png differ diff --git a/content/applications/marketing/email_marketing/lost_leads_email/active.png b/content/applications/marketing/email_marketing/lost_leads_email/active.png new file mode 100644 index 000000000..11c70c877 Binary files /dev/null and b/content/applications/marketing/email_marketing/lost_leads_email/active.png differ diff --git a/content/applications/marketing/email_marketing/lost_leads_email/created-on.png b/content/applications/marketing/email_marketing/lost_leads_email/created-on.png new file mode 100644 index 000000000..4f61f0d7c Binary files /dev/null and b/content/applications/marketing/email_marketing/lost_leads_email/created-on.png differ diff --git a/content/applications/marketing/email_marketing/lost_leads_email/example.png b/content/applications/marketing/email_marketing/lost_leads_email/example.png new file mode 100644 index 000000000..24790b800 Binary files /dev/null and b/content/applications/marketing/email_marketing/lost_leads_email/example.png differ diff --git a/content/applications/marketing/email_marketing/lost_leads_email/favorite-filter.png b/content/applications/marketing/email_marketing/lost_leads_email/favorite-filter.png new file mode 100644 index 000000000..284cfa831 Binary files /dev/null and b/content/applications/marketing/email_marketing/lost_leads_email/favorite-filter.png differ diff --git a/content/applications/marketing/email_marketing/lost_leads_email/match-all.png b/content/applications/marketing/email_marketing/lost_leads_email/match-all.png new file mode 100644 index 000000000..96bc506ab Binary files /dev/null and b/content/applications/marketing/email_marketing/lost_leads_email/match-all.png differ diff --git a/content/applications/marketing/email_marketing/lost_leads_email/out-of-stock.png b/content/applications/marketing/email_marketing/lost_leads_email/out-of-stock.png new file mode 100644 index 000000000..2d9c69465 Binary files /dev/null and b/content/applications/marketing/email_marketing/lost_leads_email/out-of-stock.png differ diff --git a/content/applications/marketing/email_marketing/lost_leads_email/reasons.png b/content/applications/marketing/email_marketing/lost_leads_email/reasons.png new file mode 100644 index 000000000..d2742984a Binary files /dev/null and b/content/applications/marketing/email_marketing/lost_leads_email/reasons.png differ diff --git a/content/applications/marketing/email_marketing/lost_leads_email/records.png b/content/applications/marketing/email_marketing/lost_leads_email/records.png new file mode 100644 index 000000000..81bbe08b1 Binary files /dev/null and b/content/applications/marketing/email_marketing/lost_leads_email/records.png differ diff --git a/content/applications/marketing/email_marketing/lost_leads_email/smart-buttons.png b/content/applications/marketing/email_marketing/lost_leads_email/smart-buttons.png new file mode 100644 index 000000000..a69c25899 Binary files /dev/null and b/content/applications/marketing/email_marketing/lost_leads_email/smart-buttons.png differ diff --git a/content/applications/marketing/email_marketing/lost_leads_email/stage-is-in.png b/content/applications/marketing/email_marketing/lost_leads_email/stage-is-in.png new file mode 100644 index 000000000..79af5b808 Binary files /dev/null and b/content/applications/marketing/email_marketing/lost_leads_email/stage-is-in.png differ diff --git a/content/applications/marketing/email_marketing/lost_leads_email/stages.png b/content/applications/marketing/email_marketing/lost_leads_email/stages.png new file mode 100644 index 000000000..9f48af2fd Binary files /dev/null and b/content/applications/marketing/email_marketing/lost_leads_email/stages.png differ diff --git a/content/applications/marketing/email_marketing/lost_leads_email/too-expensive.png b/content/applications/marketing/email_marketing/lost_leads_email/too-expensive.png new file mode 100644 index 000000000..633fe1742 Binary files /dev/null and b/content/applications/marketing/email_marketing/lost_leads_email/too-expensive.png differ