Marketing Automation Module
###########################

The marketing_automation module allows marketing actions to be automated. It is
based on scenarios and activities that are executed on selected records.

Scenario
********

A scenario provides the entry point for records into an automated marketing
campaign. Each record can only enter a scenario once. A scenario is defined by:

    * Name
    * Model: the type of record for the scenario (by default Party and Sale)
    * Domain: used to filter records
    * State:

        * Draft
        * Running
        * Stopped

A cron task runs periodically to find new records to apply the scenario to.

Activity
********

The activities form a scenario. They define which action should be triggered
and when it should happen. The activities are organized as a tree and defined
by:

    * Name
    * Parent
    * Children
    * On: event from the parent that triggers the activity:

        * E-Mail Opened
        * E-Mail Not Opened
        * E-Mail Clicked
        * E-Mail Not Clicked

    * Condition: that the record must match to execute the activity
    * Delay: before the action is executed
    * Action: list of available actions

Actions
-------

Send E-Mail
...........

The activity send an e-mail to the party defined on the record.
The E-mail is composed using an HTML `Genshi <https://genshi.edgewall.org/>`_
template with ``record`` in the evaluation context.
All ``<a>`` elements have their ``href`` replaced by a shortened version used
to trigger children activities. If the ``href`` value is ``unsubscribe``, it is
replaced by the URL which allows the recipient to block their record for the
scenario.
A empty image is automatically added at the end of the ``<body>`` to track when
emails are opened.

Record
******

It stores a reference to the records included in each scenario. If the record
is blocked, no activity will be triggered for the record.

Record Activity
***************

It stores the state of a record for an activity of the scenario.

A cron task runs periodically to execute any waiting record activity that is
due.

Configuration
*************

The marketing_automation module uses parameters from the section:

- ``[marketing]``:

    - ``email_from``: The default ``From`` for the email.
    - ``automation_base``: The base URL without a path for the unsubscribe URL
      and the empty image.
      The default value is created using the configuration ``[web]``
      ``hostname``.