This document covers how to manage capturing repeat campaign engagement in Salesforce. We call this Repeat Responses. But first some background on possible use-cases for repeat responses.
A person submits a high value form more than once
In Salesforce, a ‘Person’, whether they are a lead or contact record, can only be a member of a campaign once.
However, you may need visibility for a person that engages with the same campaign over time. For example, a person may submit a ‘Demo Request’ type of form more than once over time, and unless you are rotating the campaigns associated to fixed forms on a regular basis, another campaign member will not be created for the additional form submission.
For such a high-value form we would want to create a repeat campaign member in order to drive sales follow-up for both responses, each tracking a unique funnel. This is a use-case for creating a ‘Repeat Response’ which we’ll review in the next section.
In the Response Management data-model a single campaign member tracking a funnel is tied to a single opportunity.
There are some companies that wish to track the same campaign member to multiple opportunities. An example of this would be a new business expansion opportunity, or Pilot conversion opportunity. Because of the 1:1 relationship between campaign members and opportunities this reporting requirement requires the insertion of a repeat response.
The response management system handles these, and other use-cases and in this document, we’ll review the following:
- Review: what is a response?
- What is a repeat response
- Reporting on repeat responses
- Admin setup
- Repeat response configuration
- Repeat response creation
- Programmatic repeat response insertion
Review: What is a Response?
In this document when we reference a Response we are referring to a Campaign Member record in Salesforce.com. A Campaign Member is considered a “Response” when the Full Circle field ‘Response Date’ is populated.
This date field is populated when a campaign member is created with a member status where ‘Responded’ is checked. Note that we are not referencing the Label, we are referencing the highlighted configuration. (see image below).
Technical Deep Dive
- To update campaign member status settings, go to the Campaign > Advanced Settings button.
- Even if the member status is later set to a status that is not configured as Responded, for example ‘Sent’ in the image above, the campaign member is still considered a Response because the Response Date field is populated.
- The API name for the campaign member Response Date field is FCRM__FCR_Response_Date__c. When inserting a member programmatically ensure the member status is configured correctly by validating the CampaignMemberStatus.HasResponded Boolean field is set to True.
What is a Repeat Response
Response Management supports repeat business cases by enabling the creation of repeat responses. Still limited to the ‘one campaign member per campaign’ salesforce limitation, a repeat response is actually a repeat Campaign and a repeat campaign member.
In the previous example where a person submitted a demo form twice, if repeats are enabled we would have 2 campaigns and 2 campaign members. The repeat Campaign name will be appended with the words ‘Repeat’ and a Number indicating which repeat number the campaign is:
Whether or not a repeat campaign and campaign member is created depends on the Response Management and Campaign configuration. These are discussed in the admin setup and programmatic insertion sections.
Technical Deep Dive
- Repeat responses can be created in the following ways:
a. From the UI by selecting a response prompt campaign
b. From campaign member updates done by the repeat response user
c. With Response Management reactivation default campaign insertion
d. Lead or contact Superpower field
e. With Apex code
- Because these campaigns are dynamically created (cascaded) we call the original campaign the ‘Cascade Parent’. These repeat campaigns are not part of the Salesforce hierarchy, they are at the same level of the originating campaign, so they may reference the same campaign parent if one is populated on the cascade parent campaign. These repeat campaigns reference the cascade parent campaign with a lookup field called Cascade Parent.
- When a repeat campaign is created, the system copies over most of the fields on the Cascade parent including the parent Campaign ID
- Repeat responses rely on Response Management Configuration, Campaign configuration and Marketing Automation configuration. Each marketing automation system has different considerations that impact its ability to talk to Response Management in a way that will inform the creation of repeats.
a. The Response management application always references the fields and settings on the Cascade Parent Campaign when making decisions about creating repeats.
- The repeat campaign is created with the name appended with the words “ - Repeat #” where # is the Repeat Campaign count. The Cascade Parent name will be preserved unless it’s too long – in which case it will truncate the end of the name to make room for the Repeat # appended to the end.
- Although the repeat campaign names are incremented with the count number, you cannot rely on a member being added sequentially to campaigns. In low volume settings this is usually the case but in high volume situations the code will add a member to an available campaign (remember, these are buckets in which to store members). Looking at the campaign repeat number to determine the repeat count is also not reliable because members may be deleted and we do not re-parent campaign member records. What you can tell by the repeat count number is the maximum number of times any one individual was added to the same campaign.
Reporting on Repeat Responses
When a repeat campaign is created it references the original campaign (called Cascade parent campaign) with a lookup field.
There may be cases where you prefer to group your campaign and repeat campaigns under the same campaign report. Here is how you can go about grouping these metrics.
Campaign Member Reports
Most of your reports will be Campaign member Reports. For campaign member reports – use the field Campaign Name (Repeat Parent) field to report on campaigns by the name of the cascade parent name. you can see an example of this in the report below.
For Campaign reports – in order to see repeat campaigns, use the Contains clause, or you can combine campaign name = XYX with an ‘or’ Cascade Parent = XYZ to see all repeats from the same campaign plus the original.
Campaign Influence Reports
For reporting on Campaign Influence, you’ll be using the Campaign Influence Detail object – report on the Cascade Parent Campaign field instead of the Campaign Name field
Admin Repeat Response Configuration
Rules for creating repeat responses are both global and Campaign specific. They are also subject to the restrictions described in the next section on repeat response creation. The next section will reference how to programmatically insert repeats.
Global Repeat Response Rules
Global repeat response rules are configured in the Full Circle CRM Response Management Application on the Response Processing Configuration page. Located at Setup > Installed Packages > Manage (by the full circle CRM link) and click on the Response Processing button.
On this page you will see some global settings:
- Auto Cascade Levels – is the maximum number of repeats allowed for any response.
- Default Timeout is the default Timeout period in numbers as the minimum time in minutes for the creation of a repeat response.
- Campaign Segment Timeouts translates the picklist value on the Campaign field ‘Repeat Timeout Segments’ to minutes. If you modify picklist values – adjust related minutes here.
- Repeat Response Users is where you associate specific users as repeat response users. This is typically a dedicated Marketing Automation user. More information on this defined user is in the next section.
Campaign Specific Repeat Response Rules
Each campaign has fields that identify how it does or doesn’t allow repeat responses. Remember that we are only evaluating this configuration on the Cascade Parent campaign and not on the repeat campaign.
- Repeat Responses Allowed. This checkbox must be checked to allow repeats on this campaign. (NOTE: Apex code may call functions to bypass this setting.).
- Repeat Response Timeout Segments. A value in this field will take precedence over the global Campaign Segment Timeouts value. So, for example, if your global timeout setting is one week, you can configure a specific campaign to allow repeats after 4 hours. This field is a picklist, you can change or add different value here. Just be sure to go into the applications configuration and associate the correct minute values to the new picklist values in the global response management configuration section.
Repeat Response Creation
Given the criteria for repeat response creation there are still conditions that have to be met in order to create a repeat response. We didn’t want to design repeat response craziness where any sales person can accidentally create repeats, so we have specific conditions that must be met. A repeat response, even if meeting the global and campaign criteria, can only be created in these specific ways.
- The user must be a defined repeat response user in configuration. This is the special power that the dedicated marketing automation user has for creating repeats during campaign association or update.
- The association must be done through the Response Prompt UI. Regular users can generate repeat responses when selecting a campaign from the response prompt UI assuming repeats are allowed.
- Through the use of the FCCRM Superpower field – using workflow you can set a command for campaign associations on Leads or Contacts that can create repeat responses.
- Through the Response Prompt Reactivation Scenario that inserts a default campaign that allows repeats.
- Through Apex Code calling specific functions during campaign insert or update.
Repeat Response Evaluation
The evaluation on whether or not to insert a repeat happens when an existing response is updated –and the following is true:
- The campaign allows repeats
- The repeat timeout segment has been met (Campaign specific or global)
- The number of global repeats has not been met
- The update is done by a repeat response user, or via the Response Prompt UI, through the use of the FCCRM Superpower field or with Apex Code specifying the creation of a repeat.
NOTE: Apex code may override some of the settings above as part of our extensibility model. For example, Apex code may create a repeat even though one isn’t allowed on the campaign itself.
Marketing Automation Considerations for repeat responses
The dedicated marketing automation user is typically configured as the Repeat Response user in the Response Management Configuration. In that way if the marketing automation causes an update to an existing campaign member, the system may insert a repeat campaign.
To be clear, Response Management is seeing an update from the Marketing Automation user (if defined as the Repeat Response User) on the campaign member. It is not a specific update to the campaign member status field, for example, it’s just an update.
However, marketing automation systems do not update campaign members in the same way, and there may need to be adjustments to be able to ‘force’ an update to the campaign member. Please contact your FCI Support Rep for information on Repeat Response considerations for your Marketing Automation system.
Programmatic Repeat Response Creation
It is possible to create repeat responses programmatically. Response Management has an extensibility model that can allow you to run as if you are the repeat response user, or to force the insertion of a repeat even if the campaign isn’t configured to allow repeats, and to bypass any repeat timeouts. (Note that the global repeat configurations still apply so if the system is configured to allow 10 repeats per campaign, apex will not be able to insert the 11th campaign).
Please work with your FCI Support Rep to work with you on your business case, and to determine the best approach.