130
The Marketing Campaign module is closely synchronized with the Sales Management Business Application CRM. Initially,let us consider the segment we cater in the campaign as Leads. Goals are set for each campaign
which would be considered as a desired state. Once a lead accomplishes our objective criteria of goals we change their status by converting them into Opportunity i.e. we should give focused attention to those leads. Once the
lead satisfies our final objective we would consider them as a partnercustomer and close that lead.
Email Templates For each email template, you can have OpenERP generate a Wizard Action Button that will be related to the
object. So if you choose to do marketing campaigns for leads, the action will be added to the right side panel of the Lead form.
11.3.2 Defining a Marketing Campaign in OpenERP
Please notice that it requires some technical knowledge to configure Marketing Campaigns. To be able to see, create, edit campaign, users need to be in the Marketing User group.
0. Introduction A campaign defines a workflow of activities that itemsobjects entering the campaign will go through. Items are
selected by segments. Segments are automatically processed every few hours and inject new items into the campaign, according to a given set of criteria. It is possible to watch the campaign as it is running, by following
the campaign “workitems”. A workitem represents a given objectitem passing through a given campaign activity. Workitems are left behind when the item proceeds to the next activities. This allows an easy analysis and
reporting on the running campaign. Each activity may execute an action upon activation depending on a dynamic condition. When the condition is not met, the workitem is cancelleddeleted; if the condition is met, the action is
executed, the workitem is marked as Done, and propagated to the next activities.
1. Campaigns Marketing → Campaigns → Campaigns Campaign Each campaign is made of activities and transitions, and must be defined on any specific object the
system knows about e.g. Leads, Opportunities, Employees, Partners. Mode
A campaign can be in one of 4 modes: • Test Directly: process the whole campaign in one go, ignoring any delay put on transitions, and does
not actually execute the actions, so the result is simply the set of corresponding campaign workitems see below. Any time a segment adds new items in the campaign they will be processed in the same
manner.
• Test in Real time: process the campaign but does not actually execute the actions, so the result is simply the set of corresponding campaign workitems see below. Any time a segment adds new
items in the campaign they will be processed in the same manner. • Manual confirmation: No action will be executed automatically, a human intervention is needed to let
workitems proceed into the flow. It is like a step-by-step manual process using the Campaign Followup menu. You can ignore the time delays and force any step of the campaign, implementing
the campaign at your pace i.e. you have a test email and want to see if the steps and templates work to your liking. You will see that the actions set are defined as to do and Done and the page has to be
refreshed to see the next activities defined by tthe campaign note: the campaign sends real messages to the actual targets, be warned.
• Normal: the campaign is processed normally, all actions are executed automatically at the scheduled date. Pay attention that in this status, the campaign sends real messages to the actual targets.
Regardless of the current mode of the campaign, any workitem can be manually executed or cancelled at any time even if it is scheduled in the future through Campaign Followup.
Resource Specifies where the campaign will get the information from, i.e. the OpenERP object linked e.g. Leads, Opportunities, Employees, Partners.
131
Activities Activities are steps in the campaign. Each activity is optionally linked to previous and next activities through transitions.
Each activity has: • one optional condition that stops the campaign,
• one action to be executed when the activity is activated and the condition is True could be a ‘do nothing’ action,
• one optional signal ignore it, • a start flag see below.
Start Activity Activities that have the Start flag set will receive a new workitem corresponding to each new resourceobject
entering the campaign. It is possible to have more than one Start Activity, but not less than one. Activity Conditions
[a Boolean expression, made of clauses combined using boolean operators: AND, OR, NOT] Each condition is the criterion that decides whether the activity is going to be activated for a given workitem, or just cancelled. It is
an arbitrary expression composed of simple tests on attributes of the object, possibly combined using or, and not
operators. See section 6.1 at bottom for reference on Comparators.
The individual tests can use the “object” name to refer to the objectresource it originates from e.g the lead, using a “dot notation” to refer to its attributes. Some examples on a CRM Lead resource:
• object.name == ‘GTK Survey Lead’ would select only leads whose title is exactly “GTK Survey Lead”, • object.state == ‘pending’ would select Pending leads only,
• object.country_id.code == ‘be’ would select leads whose country field is set to Belgium, • object.country_id.name == ‘Belgium’ would select leads whose country field is set to Belgium.
Tests can also use a ‘workitem’ name to refer to the actual item denoting the position of the object in the campaign. This can be useful to access some specific attributes, such as the segment that selected this item. Some
examples:
• workitem.segment_id.name == ‘GTK Survey EU Zone1 - Industry ConsultingTechnology’ would select leads that entered this campaign through the “GTK Survey EU Zone1 - Industry ConsultingTechnology”
segment, • ‘EU Zone1’ in workitem.segment_id.name would select only leads that entered the campaign through a
segment that has “EU Zone1” in its name. Tip: In the GTK client you can use “Help Enable Debug mode tooltips” to see the attribute name of every field
in a form. These are the same that you can use during importexport with CSV files. You can also use the special formula re.searchPATTERN_TO_SEARCH, ATTRIBUTE_TO_SEARCH where
PATTERN_TO_SEARCH is a character string delimited with quotes, and ATTRIBUTE_TO_SEARCH uses the dot notation above to refer to a field of the object. For example for CRM leads:
• re.search‘Plan to sell: True’, object.description would be true if the Notes on a Lead contain this text: “Plan to sell: True”. Be careful that all spaces etc. do matter, so you may use the special pattern characters
as detailed at the bottom to account for small variations, • re.search‘Plan to.True’, object.description would be true if the Notes on a Lead contain this text: “Plan
to” followed later on by “True”. You can combine individual tests using boolean operators and parentheses. Some examples on a CRM Lead
resource:
132
• object.state = ‘pending’ and re.search‘Plan to sell:.True’,object.description and not re.search‘Plan to use:.True’,object.description would be true if the lead is NOT in Pending state and it contains “Plan to
sell” but not “Plan to use”
11.3.3 Guidelines for creating a campaign
• It is a good idea to have an initial activity that will change some fields on the objects entering the campaign to mark them as such, and avoid mixing them in other processes e.g. set a specific state and Sales Team on
a CRM lead being processed by a campaign. You can also define a time delay so that the campaign seems more human note if the answer comes in a matter of seconds or minutes it is computer generated.
• Put a stop condition on each subsequent activity in the campaign to get items out of the campaign as soon as the goal is achieved e.g. every activity has a partial condition on the state of the item, if CRM Leads
stops being Pending, the campaign ends for that case. 2. Email Templates Marketing → Configuration → Email Template → Templates
Email templates are composed of the following information: • The Email headers: to, from, cc, bcc, subject
• The raw HTML body, with the low-level markup and formatting • The plaintext body
Headers and bodies can contain placeholders for dynamic contents that will be replaced in the final email with the actual content.
3. Campaign Segments Segments are processed automatically according to a predefined schedule set in the menu Administration →
Configuration → Scheduled Actions. It could be set to process every 4 hours or every minute for example. This is the only entry point in a campaign at the moment.
Segment filters Segments select resources via filters, exactly the same kind of filter that can be used in advanced search views on
any list in OpenERP. You can actually create them easily by saving your advanced search criteria as new filters. Filters mainly consist in a domain expressing the criteria of selection on a model the resource. See the section
10.3 at the bottom for more information on the syntax for these filters.
For Leads, the following filter would select draft Leads from any European country with “Plan for use: True” or “Plan for sell: False” specified in the body: | [ ‘type’,’=’,’lead’, | ‘state’, ‘=’, ‘draft’, | ‘country_id.name’, ‘in’,
[’Belgium’, | ‘Netherlands’, | ‘Luxembourg’, | ‘United Kingdom’, | ‘France’, | ‘Germany’, | ‘Finland’, | ‘Denmark’, | ‘Norway’, | ‘Austria’, | ‘Switzerland’, | ‘Italy’, | ‘Spain’, | ‘Portugal’, | ‘Ireland’, | ], | ‘|’, |
‘description’, ‘ilike’, ‘Plan for use: True’, | ‘description’, ‘ilike’, ‘Plan for sell: False’ | ]
6. Miscellaneous References, Examples 6.1 Reference of Comparison Operators:
• ==: Equal • =: Not Equal
• : Bigger than • : Smaller Than
• =: Bigger than or equal to • =: Smaller than or equal to
• in: to check that a given text is included somewhere in another text. e.g “a” in “dabc” is True 6.2 Reference of PatternWildcard characters
• . dot represents any character but just one