Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DPMMA-2688 Smart Campaign Event Scheduling Based on Contact Behavior #302

Open
wants to merge 6 commits into
base: 5.x
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
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
22 changes: 22 additions & 0 deletions docs/campaigns/campaign_builder.rst
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,28 @@

If a Contact appears again at a later date in that Segment because the value of the date has changed, then the Contact passes through the Campaign only once, and hence isn't included in the Campaign again.


Smart event schedule
~~~~~~~~~~~~~~~~~~~~~

For the Send Email, Marketing Message, Push Contact to Integration and Send a Webhook actions, Mautic provides a smart event schedule option. This feature dynamically optimizes the timing of event execution based on individual Contact behaviors, increasing the likelihood of engagement.

**How it Works**

1. **Interaction data retrieval**: the system retrieves interaction data for the Contact, including Email reads, Landing Page hits and Form submissions, to analyze the Contact's engagement patterns.

2. **Minimum interactions requirement**: a Contact must have a minimum number of interactions for the system to calculate optimal timing. Each interaction type (Email open, website visit, Form submit) counts only once per hour. When a Contact doesn't have enough interaction data, default hour ranges and days adjust to the Contact's preferred timezone.

Check warning on line 250 in docs/campaigns/campaign_builder.rst

View workflow job for this annotation

GitHub Actions / prose

[vale] reported by reviewdog 🐶 [Google.Parens] Use parentheses judiciously. Raw Output: {"message": "[Google.Parens] Use parentheses judiciously.", "location": {"path": "docs/campaigns/campaign_builder.rst", "range": {"start": {"line": 250, "column": 161}}}, "severity": "INFO"}
patrykgruszka marked this conversation as resolved.
Show resolved Hide resolved

3. **Optimal time calculation (execute event within 24 hours)**: based on the Contact's interaction data, the system calculates the optimal time for executing a Campaign event, considering the Contact's historical engagement patterns.

Check warning on line 252 in docs/campaigns/campaign_builder.rst

View workflow job for this annotation

GitHub Actions / prose

[vale] reported by reviewdog 🐶 [Google.Parens] Use parentheses judiciously. Raw Output: {"message": "[Google.Parens] Use parentheses judiciously.", "location": {"path": "docs/campaigns/campaign_builder.rst", "range": {"start": {"line": 252, "column": 31}}}, "severity": "INFO"}
patrykgruszka marked this conversation as resolved.
Show resolved Hide resolved
- If the Contact is within the optimal window at that moment, the event executes immediately.
- If the current time is before today's optimal window, the event schedules for the first hour of that window.
- If the current time is after today's optimal window, the event schedules for the first hour of the next day's optimal window.

4. **Optimal date calculation (execute event within 7 days)**: the system calculates the optimal time as in the previous option and additionally determines the best day of the week. By default, a Contact can have multiple optimal days.

Check warning on line 257 in docs/campaigns/campaign_builder.rst

View workflow job for this annotation

GitHub Actions / prose

[vale] reported by reviewdog 🐶 [Google.Parens] Use parentheses judiciously. Raw Output: {"message": "[Google.Parens] Use parentheses judiciously.", "location": {"path": "docs/campaigns/campaign_builder.rst", "range": {"start": {"line": 257, "column": 31}}}, "severity": "INFO"}
patrykgruszka marked this conversation as resolved.
Show resolved Hide resolved
- If the Contact is within the optimal window at that moment, the event executes immediately.
- If the current time and day are before the optimal window, it schedules for the first optimal hour of the next optimal day.


.. vale off

Triggering Campaign events
Expand Down
Binary file modified docs/campaigns/images/send-email-delay-options.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 16 additions & 0 deletions docs/configuration/settings.rst
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,22 @@

* **Use summary statistics** - Improves performance when viewing a Campaign with thousands of events per day by using summarized data. When you first turn on this setting you need to run a :ref:`cron job<campaign cron jobs>` to summarize existing data.

Optimal for Contact event scheduler
===================================

.. image:: images/optimal-event-scheduler-settings.png
:width: 600
:alt: Screenshot showing Optimal for Contact event scheduler settings configuration in Mautic

The optimal for Contact event scheduler settings allow you to configure the default timing and caching options used in the optimized event scheduler for Campaigns.

* **Default Optimal Start Hour** - Set the default start hour for the optimal interaction window when specific Contact data is unavailable.
* **Default Optimal End Hour** - Set the default end hour for the optimal interaction window when specific Contact data is unavailable.
* **Default Optimal Days** - Select the default days of the week that are considered optimal for interaction when specific Contact data is unavailable.

Check warning on line 172 in docs/configuration/settings.rst

View workflow job for this annotation

GitHub Actions / prose

[vale] reported by reviewdog 🐶 [Google.Passive] In general, use active voice instead of passive voice ('are considered'). Raw Output: {"message": "[Google.Passive] In general, use active voice instead of passive voice ('are considered').", "location": {"path": "docs/configuration/settings.rst", "range": {"start": {"line": 172, "column": 71}}}, "severity": "INFO"}
patrykgruszka marked this conversation as resolved.
Show resolved Hide resolved
* **Interaction Data Cache Timeout** - Choose how long the interaction data should be cached.

Check warning on line 173 in docs/configuration/settings.rst

View workflow job for this annotation

GitHub Actions / prose

[vale] reported by reviewdog 🐶 [Google.Passive] In general, use active voice instead of passive voice ('be cached'). Raw Output: {"message": "[Google.Passive] In general, use active voice instead of passive voice ('be cached').", "location": {"path": "docs/configuration/settings.rst", "range": {"start": {"line": 173, "column": 84}}}, "severity": "INFO"}
patrykgruszka marked this conversation as resolved.
Show resolved Hide resolved
* **Fetch Interactions From** - Select the time frame for fetching interaction data. This determines how far back the system will look for interactions.

Check warning on line 174 in docs/configuration/settings.rst

View workflow job for this annotation

GitHub Actions / prose

[vale] reported by reviewdog 🐶 [Google.Will] Avoid using 'will'. Raw Output: {"message": "[Google.Will] Avoid using 'will'.", "location": {"path": "docs/configuration/settings.rst", "range": {"start": {"line": 174, "column": 126}}}, "severity": "WARNING"}
patrykgruszka marked this conversation as resolved.
Show resolved Hide resolved
* **Interaction Fetch Limit** - Set the maximum number of interactions of each type (for example: Page hits, Email reads, Form submits) to retrieve for timing optimization.

Check warning on line 175 in docs/configuration/settings.rst

View workflow job for this annotation

GitHub Actions / prose

[vale] reported by reviewdog 🐶 [Google.Parens] Use parentheses judiciously. Raw Output: {"message": "[Google.Parens] Use parentheses judiciously.", "location": {"path": "docs/configuration/settings.rst", "range": {"start": {"line": 175, "column": 85}}}, "severity": "INFO"}

Check warning on line 175 in docs/configuration/settings.rst

View workflow job for this annotation

GitHub Actions / prose

[vale] reported by reviewdog 🐶 [Google.Colons] ': P' should be in lowercase. Raw Output: {"message": "[Google.Colons] ': P' should be in lowercase.", "location": {"path": "docs/configuration/settings.rst", "range": {"start": {"line": 175, "column": 97}}}, "severity": "WARNING"}

Check warning on line 175 in docs/configuration/settings.rst

View workflow job for this annotation

GitHub Actions / prose

[vale] reported by reviewdog 🐶 [Mautic.FeatureList] Is this referring to a Mautic feature? If so, use 'Landing Page' instead of 'Page'. Raw Output: {"message": "[Mautic.FeatureList] Is this referring to a Mautic feature? If so, use 'Landing Page' instead of 'Page'.", "location": {"path": "docs/configuration/settings.rst", "range": {"start": {"line": 175, "column": 99}}}, "severity": "INFO"}
patrykgruszka marked this conversation as resolved.
Show resolved Hide resolved

Email settings
**************

Expand Down
Loading