开展营销活动

利用营销活动实现线索自动化

OpenERP 提供了一些模块让你轻松创建和跟踪营销活动。 使用 Marketing 模块, 可以定义直销活动,实现与线索的自动化交互。可以通过使用重新配置向导,选择 Marketing 来安装此模块。

营销活动可以以列表或图表试图的方式展现。图表试图使得你可以一目了然的看到营销动作(通过节点表现)和适用条件(通过箭头表现)。

/doc_static/6.0/_images/market_diagram.jpeg

一个营销活动的图表视图

市场营销活动是通过个性化的消息帮助管理和接触你的目标客户的一次事件或一个活动。一个营销活动在具体的营销环境下可以有很多行为被触发,例如一次实时的响应通过你发送邮件的接触。这种响应(或触发行为)的结果可以是一次邮件的发送,发送的内容在这之前已经在OPENERP里预先编辑好。

为了能够使用邮件功能,你必须配置你的邮件帐户。这一点在 ch-crm-fetchmail-install 章节有讲解。

一个完整的市场营销活动例子

假设我们是一家保险公司,我们正准备启动一项市场营销活动以便获取新的销售线索。公司在其网站上发起一个活动并提供给潜在客户获得汽车保险的免费报价机会。

每次一个潜在客户通过练习表单进行注册,一个销售线索就会在OpenERP里自动产生。关于网页联系表单的更多信息,请参考 自动获取线索 章节。

销售人员负责汽车保险触发活动,通过发送一封关于我们所有保险业务的介绍性邮件的方式,并感谢他们订阅免费汽车保险报价。

基于营销响应,保险公司划分标注销售线索的兴趣点:

  • 购买汽车保险,

  • 其他保险政策信息,

  • 购买保护儿童安全的书籍。

通过我们接收到的来自销售线索的回复,我们汽车保险公司的销售人员发送不同的电邮来满足他们各自的不同需求。

  • 如果他们对这样的邮件作出回应,那么销售线索就可以转化为销售机会。当这个销售线索买了一份汽车保险,这个销售线索就转化为我们的合作伙伴,并且作为一个客户在OpenERp系统中被自动创建。

  • 假如我们没有收到邮件回复,那么一周后他们会继续收到关于免费汽车保险报价的问候提醒。如果他们仍旧没有做出回应,我们的销售人员会主动打电话询问他的具体需求。

把上面这个过程看成一个完整的工作流程,使得我们能够对每一个营销机会做出各种合适的响应行为。无人接待客户的可能性将大大降低,对于每一个销售线索,我们都有预设的应对方案来维护他。

此外,通过对达成目标的比照我们可以衡量每种方法的效果。基于目标我们可以评估营销活动的效果,并且分析营销活动是否有改进的空间。

小技巧

营销活动实例

为了在OpenERP系统中获取一个完整的营销活动实例,你可以安装 marketing_campaign_crm_demo 模块。

定义营销活动

Designing a marketing campaign is mostly a long term process and the success of any campaign depends on the research and the effectiveness in selecting your target audience for the campaign. There are certain questions that every marketeer always asks while designing a campaign.

  • What would be our marketing campaign?

  • Who would be the target audience?

  • How would we measure the effectiveness of our campaign?

The OpenERP campaign is based on the principle of lead automation. A lead is created according to a specific response by a customer towards a stimulus. An example: filling the car insurance calculator on your website may create a lead in OpenERP.

The first step is to define the campaign, i.e. the sequence of steps to be performed. By defining the campaign, we trigger a set of activities in the Marketing Campaign application of OpenERP.

From the lead automation, we define the sequence of steps we ought to follow, the modes of creating and processing these activities and the cost involved in this campaign. After each activity and based on its respective stimuli, we can trigger the next event of the campaign concerned.

划分营销活动

The two most important points for any successful campaign are the adoption of a concrete methodology of execution and choosing the right segment: a target loop of customers to whom our campaign would be directed (i.e. your target audience). Inappropriate focus on the wrong segment would result in the campaign being misfired and our efforts would reach deaf ears.

Through the Segment tab in the Campaign module, we can define our segment for each Campaign activity. Indeed, it is perfectly well possible that with every step downwards, the segment gets narrowed in terms of number. You can also synchronize the entire campaign steps according to the defined segments.

Our insurance company wants to attack the Spanish market, and will define a segment called Spanish Leads. Of course you would want your segment to be valid for leads coming from Spain only. To achieve this, go to the Leads list view. Filter all the leads for Spain (type Spain in the Country field), make sure to clear the salesteam, so that all leads coming from Spain will be selected. Then click Save Filter and call it for instance Spanish Leads. Now return to the Campaigns menu and open the Segment, then click the Filter field to select Spanish Leads. The segment will now only apply to Spanish leads.

As you can see, the Marketing Campaign module is closely synchronized with the Customer Relationship Management Business Application. Let us consider the segment we cater in the campaign as Leads in OpenERP. Goals are set for each campaign, which would be considered as a desired state. Once a lead meets our objective criteria of goals, we change the lead status by converting it into an Opportunity, meaning that we should give focused attention.

Once the lead satisfies our final objective, we would consider it as a partner/customer and close that lead.

电子邮件模板

OpenERP allows you to create your own email templates. You can use the Expression Builder to have the variables created for you. Suppose you would like to add the Contact Name in the email, but of course, this will be a different name for each email.

In the Expression Builder, in Field, select Contact Name. Automatically, the Expression will be filled. Copy the value from the expression and paste it in your email, e.g. Dear ${object.contact_name}. So your email will start with Dear followed by the name of the contact. This way you automatically create personalized emails.

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.

小技巧

Configuring Marketing Campaigns

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.

设置营销活动

/doc_static/6.0/_images/crm_market_campaign.png

Marketing Campaign

  1. 简介

A campaign defines a workflow of activities that items/objects 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 object/item passing through a given campaign activity. See it as a step that still can go either way. 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 cancelled/deleted; if the condition is met, the action is executed, the workitem is marked as Done, and propagated to the next activities.

  1. 营销活动 (Marketing ‣ Campaigns ‣ Campaigns)

营销活动

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).

模式

A campaign can be in one of 4 modes:

  • Test Directly: processes 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: processes the campaign but does not actually execute the actions, so the result is simply the set of corresponding campaign workitems. 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 do exactly what you want them to do). 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 the campaign node: 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 target audience.

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).

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.

Start Activity

Activities that have the Start checkbox set, will receive a new workitem corresponding to each new resource/object 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 for more information on Comparators.

The individual tests can use the “object” name to refer to the object/resource 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 == ‘Insurance Offer Lead’ would select only leads whose title is exactly “Insurance Offer 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 == ‘Insurance Offer EU Zone1 - Industry Consulting/Technology’ would select leads that entered this campaign through the “Insurance Offer Lead EU Zone1 - Industry Consulting/Technology” 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.

小技巧

Help

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 import/export with CSV files.

You can also use the special formula re.search(PATTERN_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. An example for CRM leads:

  • re.search(‘Plan to buy: True’, object.description) would be true if the Notes on a Lead contain this text: “Plan to buy: 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:

  • object.state != ‘pending’ and ( re.search(‘Plan to by:.*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 buy”, but not “Plan to use”.

创建营销活动的指导方针

  • 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, to 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).

  1. 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.

  1. 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 from any OpenERP screen allowing you to save filters. Save your advanced search criteria as a new filters and add them to the segment in the Filter field. Filters mainly consist in a domain expressing the criteria of selection on a model (the resource). See section 10.3 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 buy: 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 buy: False’) ]

  1. 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 Pattern/Wildcard characters

  • . (dot) represents any character (but just one)

  • * means that the previous pattern can be repeated 0 or more times

    • means that the previous pattern can be repeated 1 or more times
  • ? means that the previous pattern is optional (0 or 1 times)

  • .* would represent any character, repeated 0 or more times

  • .+ would represent at least 1 character (but any)

  • 5? would represent an optional 5 character

6.3 Reference of filter domains

Generic format is: [ (criterion_1), (criterion_2) ] to filter for resources matching both criteria. It is possible to combine criteria differently with the following operators:

  • ‘&’ is the boolean AND operator and will make a new criterion by combining the next 2 criteria (always 2). This is also the implicit operator when no operator is specified.

    • for example: [ (criterion_1), ‘&’, (criterion_2), (criterion_3) ] means criterion_1 AND (criterion_2 AND criterion_3)
  • ‘|’ is the boolean OR operator and will make a new criterion by combining the next 2 criteria (always 2)

    • for example: [ (criterion_1), ‘|’, (criterion_2), (criterion_3) ] means criterion_1 AND (criterion_2 OR criterion_3)
  • ‘!’ is the boolean NOT operator and will make a new criterion by reversing the value of the next criterion (always only 1)

    • for example: [ (criterion_1), ‘!’, (criterion_2), (criterion_3) ] means criterion_1 AND (NOT criterion_2) AND criterion_3

Criterion format is: ( ‘field_path_operand’, ‘operator’, value )

Where:

  • field_path_operand specifies the name of an attribute or a path starting with an attribute to reach the value we want to compare

  • operator is one of the possible operator:

    • ‘=’ , ‘!=’ : equal and different

    • ‘<’, ‘>’, ‘>=’, ‘<=’ : greater or lower than or equal

    • ‘in’, ‘not in’ : present or absent in a list of value. Values must be specified as [ value1, value2 ], e.g. [ ‘Belgium’, ‘Croatia’ ]

    • ‘ilike’ : search for string value in the operand

  • value is the text or number or list value to compare with field_path_operand using comparator

进一步推动营销活动的成果

Of course, Marketing Campaigns can only be effective when you also do something with the results. OpenERP offers analysis features to help you better manage future campaigns based on the outcome of past campaigns. Learning from your results, that is.

The Marketing ‣ Reporting ‣ Campaign Analysis report allows you to analyse your campaigns in detail, both ongoing and completed campaigns.

Segments allow you to keep good track of the results of a marketing campaign. You can see from which segment you have most demands, for instance.

Thanks to good insights in the way your respondents answer to your campaign, you can continuously improve your marketing results!

/doc_static/6.0/_images/camp_analysis.png

Campaign Analysis

自动获取线索

Through your website, your company wants to get as much information as possible about the people who visit the website. But how can you make sure that every person who wants to know more about your company is actually registered somewhere?

Well, you could use a Contact form for this. And precisely such a form allows you to register contacts automatically in OpenERP. By creating a link from your website’s Contact form to OpenERP, your contact data will automatically be created in the CRM (or any other application of your choice, such as HR).

Let us show you an example of how this can be achieved. The figure below shows a Contact form on a website.

/doc_static/6.0/_images/crm_contact_form.png

来自网站的咨询

All data entered in this form are linked to the Lead form in the CRM. Each time someone enters this contact form, a new lead is automatically created in OpenERP.

Such a system is a very easy yet flexible way of keeping track of your leads and automatically launch your marketing campaigns.

如何将网站联系页面转化为OpenERP线索?

OpenERP is accessible through XML-RPC interfaces, for which libraries exist in many languages.

Python 代码示例

import xmlrpclib # … define HOST, PORT, DB, USER, PASS url = ‘http://%s:%d/xmlrpc/common‘ % (HOST,PORT) sock = xmlrpclib.ServerProxy(url) uid = sock.login(DB,USER,PASS) print “Logged in as %s (uid:%d)” % (USER,uid) # Create a new lead url = ‘http://%s:%d/xmlrpc/object‘ % (HOST,PORT) sock = xmlrpclib.ServerProxy(url) args = { ‘name’ : ‘A New Lead’, ‘description’ : ‘This is a new lead from the web contact form’, ‘inventor_id’: uid, } lead_id = sock.execute(DB,uid,PASS,’crm.lead’,’create’,args)

PHP 代码示例

<? include(‘xmlrpc.inc’); // Use phpxmlrpc library, available on sourceforge // … define $HOST, $PORT, $DB, $USER, $PASS $client = new xmlrpc_client(“http://$HOST:$PORT/xmlrpc/common“); $msg = new xmlrpcmsg(“login”); $msg->addParam(new xmlrpcval($DB, “string”)); $msg->addParam(new xmlrpcval($USER, “string”)); $msg->addParam(new xmlrpcval($PASS, “string”)); resp = $client->send($msg); uid = $resp->value()->scalarval() echo “Logged in as $USER (uid:$uid)”

// Create a new lead $arrayVal = array( ‘name’=>new xmlrpcval(“A New Lead”, “string”) , ‘description’=>new xmlrpcval(“This is a new lead from the web contact form” , “string”), ‘inventor_id’=>new xmlrpcval($uid, “int”), );

$msg = new xmlrpcmsg(‘execute’); $msg->addParam(new xmlrpcval($DB, “string”)); $msg->addParam(new xmlrpcval($uid, “int”)); $msg->addParam(new xmlrpcval($PASS, “string”)); $msg->addParam(new xmlrpcval(“crm.lead”, “string”)); $msg->addParam(new xmlrpcval(“create”, “string”)); $msg->addParam(new xmlrpcval($arrayVal, “struct”)); $resp = $client->send($msg); ?>

小技巧

如何将网站联系页面转化为OpenERP线索?

For technical information about how to link a web contact form to OpenERP, please also refer to the Technical Memento that you can download from http://www.openerp.com/community, the chapter about WebServices – XML-RPC.

客户分析挖掘

The segmentation tools let you create partner groups (or categories) and act on each segment differently according to questionnaires. For example, you could create pricelists for each of the segments, or start phone marketing campaigns by segment. To allow you to work with segments in OpenERP, you should install the crm_profiling module, which can also be achieved from the Configuration Wizard (Marketing - Profiling).

Profiling can be used to qualify your customers according to a questionnaire you define. When you establish a good customer profile, this will surely help you to close your deals. Customer profiles might even help you beat your competitors!

创建售前模板配置

During presales activities it is useful to qualify your prospects quickly. You can ask a series of questions to find out what product / service to offer to the customer, or how quickly you should handle the request.

小技巧

Profiling

This method of rapidly qualifying prospects is often used by companies who carry out presales by phone. A prospect list is imported into the OpenERP system as a set of partners and the operators then ask a series of questions to each prospect by phone.

Responses to these questions enable each prospect to be qualified automatically which leads to a specific service being offered based on their responses.

As an illustration, take the case of a software company which offers a service based on the OpenERP software. The company goes to several exhibitions and encounters dozens of prospects over a few days. It is important to handle each request quickly and efficiently.

The products offered at these exhibitions are:

  • training on OpenERP – for independent people or small companies,

  • partner contract – for IT companies that intend to offer an OpenERP service,

  • OpenERP as SaaS – for small companies,

  • a meeting in conjunction with a partner to provide a demonstration aimed at providing a software integration – for companies that are slightly larger.

The IT company has therefore put a decision tree in place based on the answers to several questions to prospects. These are given in the following figure Example of Profiling Customer Prospects by the OpenERP Company:

/doc_static/6.0/_images/crm_profile_tree_eng.png

Example of Profiling Customer Prospects by the OpenERP Company

The sales person starts by asking the questions mentioned above and then after only a couple of minutes of work, he can decide what to propose to the prospective customer simply by analysing the prospect’s answers.

At the end of the exhibition, prospects’ details and their responses to the questionnaire are entered into OpenERP. The profiling system automatically classifies the prospects into appropriate partner categories.

This enables your sales people to efficiently follow up prospects and adapt their approach according to each prospect’s profile. For example, they can send a letter based on a template developed for a specific partner category. They would use OpenERP’s report editor and generator for their sales proposition, such as an invitation to a training session a week after the show.

高效使用配置模板

To use the profiling system, you have to install OpenERP’s crm_profiling module. You can also use the Reconfigure Wizard and add Marketing / Profiling.

Once the module is installed, you can create several questionnaires through the menu Sales ‣ Configuration ‣ Leads & Opportunities ‣ Questionnaires. For each questionnaire, OpenERP allows you to create a list of questions and the possible responses through the menu Sales ‣ Configuration ‣ Leads & Opportunities ‣ Questions.

To obtain the scheme presented earlier you can create the following questions and responses:

Questionnaire for Defining Profiles

Questions

Possible Responses

Journalist ?

Yes / No

Industry Sector ?

IT / ERP Consultant / Services / Industry / Others

Number of Staff ?

1 / 2-20 / 21-50 / 51-100 / 101-500 / 500+

Contact’s job function ?

Decision-maker / Not decision-maker

Already created a specification for the work ?

Yes / Soon / No

Implementation budget ?

Unknown / <100k / 101-300k / >300k

For instance, a sales person specializing in large accounts for the service sector could have a profile defined like this:

  • Budget for integration: Unknown , 100k-300k or >300k ,

  • Already created a specification for the work? Yes , No

  • Industry Sector? Services .

When entering the details of a specific prospect, the prospect’s answers to various questions can be entered in the Profiling tab of the Partner form. All you have to do is click the Use a Questionnaire button on the Profiling tab of the Partner form.

OpenERP will automatically assign prospects to the appropriate partner category based on these answers.

Customers corresponding to a specific search profile can be treated as a priority. The sales person can access the profile of the large active accounts easily.