Okay, this is probably more documentation than you all are looking for since you have the alerts, etc. already running, but here is how we have our entire program set up:
Southco Distribution Leads - Basic Program Overview
User logs activity/interesting moments; once they pass our threshold, the lead is pushed to SFDC where a custom program runs to determine if the lead should be assigned to an internal salesperson or distribution channel partner. If the latter, the program essentially kicks off.
After waiting 3 days from the initial activity, we send the distributor an email alert with details about the lead and the activity they generated. If there is additional high-scoring activity in a short time frame, we will send another email alert to let them know this lead is probably hot.
In the email alerts, we have a link to a landing page where we require them to send feedback about the lead. In SFDC we run a report that shows the number of leads sent vs. feedback received by each distributor. They are scored on this report.
The Nitty Gritty Details
Custom Fields/Segments
Lead Type – We look at the OwnerID in SFDC and have a segmentation set up based on these. One of the values is Distribution (the others are for our lead queues for our internal lead scoring campaigns). A lead has to be in the Distribution segment to qualify for this program.
Emails for Lead Distribution - A comma-separated list of email addresses that we use as the recipients of the lead alert emails using a token. These values are populated in SFDC at the distributor account level.
Request Type - This gets populated by a smart campaign that looks at the values in the Last Interesting Moment field & gives Request Type a value of things like, “Brochure Request”, “Sample Request”, etc. since our internal business rules dictate we can’t give our distributors too much detail about what the customer is doing.
Lead Feedback – This gets populated first when we send the email alert out with this value: “
Sent – {{system.date}},”. It gets overwritten when the distributor fills out the lead feedback form, which is why we have the next field.
Compiled Lead Feedback – This is a dynamic field that just keeps getting appended every time Lead Feedback is changed. We change the new value to: “
{{system.date}} – {{lead.Lead Feedback}}, {{lead.Compiled Lead Feedback}}”.Distribution No Potential – A Boolean field that appears on the Lead Feedback landing page; if a distributor never wants us to send that lead again, they check that box.
Email Alerts
Interesting Moment Email – Alerts distributors about the lead activity. We give the following information:
-
Lead ID – this is included in case we need to troubleshoot and other details are missing for some reason. Some of our distributors also asked for a customer number so they can record in their systems.
-
Customer Type – value is either “Existing Customer” or “New Lead”
-
Basic Info - Name, Title, Company, Industry, Location (City, State, Country), Email Address, Phone Number
-
Request Type – See above in custom fields for details. Value is: “{{lead.Request Type:default=No details available}}”
-
Last Request Date – Value is: “{{lead.Last Interesting Moment Date:default=Unknown}}”
-
Feedback History – Value is: “{{lead.Compiled Lead Feedback:default=No previous feedback on this lead}}”
A big red CTA button that reads, “PROVIDE FEEDBACK ON THIS LEAD >>” has a link to the Lead Feedback landing page using the following query parameters:
DistributionLeadsFeedbackLP.html?FirstName={{lead.First Name}}&LastName={{lead.Last Name}}&Company={{company.Company Name}}&Country={{lead.Country}}&Email={{lead.Email Address}}&Compiled_Lead_Feedback__c={{lead.Compiled Lead Feedback}} High Scoring Activity Email – Alerts distributors about high-scoring or frequent activity in a short timeframe. We base this on a scoring field we have set up that calculates behavior score for the past 4 weeks only. This email is identical to the Interesting Moments email except we change the colors in the template to a red header (to indicate urgency) and we do not include the feedback link since we already sent this lead with the original email.
Landing Pages/Form
Lead Feedback Landing Page – A standard template landing page with form that shows the basic info (First Name, Last Name, Company, Country, Email Address, Lead Feedback History) about the lead in read-only fields. The fields get pre-populated with this info using JavaScript which gets the value of the fields from the querystring in the email link.
JavaScript looks basically like this:
<script> // to set cookies. Uses noConflict just in case var $jQ = jQuery.noConflict(); var pEmail = $jQ.getQueryString({ ID: "Email" });var pFirstName = $jQ.getQueryString({ ID: "FirstName" });var pLastName = $jQ.getQueryString({ ID: "LastName" });var pCompany = $jQ.getQueryString({ ID: "Company" });var pCountry = $jQ.getQueryString({ ID: "Country" });var pCompiled_Lead_Feedback__c = $jQ.getQueryString({ ID: "Compiled_Lead_Feedback__c" });var p_mkt_trk = $jQ.getQueryString({ ID: "_mkt_trk" }); pFirstName=pFirstName.replace(/%20/g," ");pLastName=pLastName.replace(/%20/g," ");pCompany=pCompany.replace(/%20/g," ");pCountry=pCountry.replace(/%20/g," ");pCompiled_Lead_Feedback__c=pCompiled_Lead_Feedback__c.replace(/%20/g," "); document.getElementById("Email").setAttribute("value", pEmail);document.getElementById("FirstName").setAttribute("value", pFirstName);document.getElementById("LastName").setAttribute("value", pLastName);document.getElementById("Company").setAttribute("value", pCompany);document.getElementById("Country").setAttribute("value", pCountry);document.getElementById("Compiled_Lead_Feedback__c").setAttribute("value", pCompiled_Lead_Feedback__c);document.getElementById("Compiled_Lead_Feedback__c").value = pCompiled_Lead_Feedback__c;document.getElementById("_mkt_trk").setAttribute("value", p_mkt_trk); $jQ(document).ready(function() { poller = setInterval(function(){if($jQ('#Email').val().length >= 1){ $jQ('#Email').attr('readonly', true); clearInterval(poller); $jQ('#FirstName').attr('readonly', true); clearInterval(poller); $jQ('#LastName').attr('readonly', true); clearInterval(poller); $jQ('#Company').attr('readonly', true); clearInterval(poller); $jQ('#Country').attr('readonly', true); clearInterval(poller); $jQ('#Compiled_Lead_Feedback__c').attr('readonly', true); clearInterval(poller); } }, 500); }); </script>This is a Forms 1.0 form and I have the form prefill sent to false (under Form Settings). We ran into two issues initially:
-
The form fields were being populated by the distributor’s own information.
-
Fixed by turning off munchkin code on the landing page. We removed this code:
<?php echo $mContext['endElements']; ?>-
All spaces in the field values had the HTML entity “%20” instead of an actual space.
-
Fixed by the JavaScript replace function
Lead Feedback Thank You Page – Just a standard thank you page
Smart Campaign Workflows
These were all detailed to some degree previously, but here are the details of each workflow running for this program. They are all triggered campaigns.
Create Request Type – Note that although this program initiated collecting this data, we have decided to let it run for all our leads in case we want to use it for other programs.
-
Trigger: Data Value Changes – Attribute is Last Interesting Moment
-
Flow: Change Data Value – Attribute is Request Type with 3 choices based on the value of Last Interesting Moment
Compile Lead Feedback – Tip: we are using this same technique to compile all sorts of other data (interesting moments, material requests, dates of activities, etc.)
-
Trigger: Data Value Changes – Attribute is Lead Feedback
-
Flow: Change Data Value – Attribute is Compiled Lead Feedback. New Value is: “{{system.date}} – {{lead.Lead Feedback}}, {{lead.Compiled Lead Feedback}}”
Remove Distributor No Potential – This is really a fail-safe, as we check to make sure the value of this field is true before we send alerts, but there are certain timing things that necessitated this workflow.
-
Trigger: Data Value Changes – Attribute is Distributor No Potential, New Value is true
-
Flow: Remove from Flow – Campaigns Send Interesting Moments Alerts and Send High Activity Alerts
Send Interesting Moment Alerts – The main campaign. It’s triggered with filters & all filters apply.
-
Trigger: Data Value Changes – Attribute is 4-Week Behavior Score, New Value is at least 20
-
Filter: SFDC Type is not Contact (we don’t want to send an existing house account customer to our distributors!)
-
Filter: Emails for Lead Distribution is not empty (to avoid sending an email to no one)
-
Filter: Distributor No Potential is false
-
Filter: Segment is Distributor
-
Flow:
-
Step 1: Wait – Duration: 3 days. Must end on Mon-Fri (we don’t want our distributors calling on the customer immediately)
-
Step 2: Change Data Value – Attribute is Lead Feedback, New Value is “{{system.date}} – Sent from Southco”
-
Step 3: Sent Alert. Send To value is “None”; To Other Emails value is “{{lead.Emails for Lead Distribution}}”
Send High Activity Alerts – Almost identical to the Send Interesting Moments Alerts campaign, except the trigger is based on a higher score and we do not change the Lead Feedback value.
Set Progression Status: Lead Sent – We use this to keep a record we can report on in SFDC by creating a task. We created a custom channel in the program for this.
-
Trigger: Sent Alert – Emails was the Interesting Moment Alert or High Activity Alert
-
Flow:
-
Step 1: Change Program Status – Program: Distribution Leads, New Status > Lead Sent
-
Step 2: Add to List – List Name: Distribution Leads (we have used this list for a couple different reasons: historical reporting, some troubleshooting, etc.)
-
Step 3: Create Task – these all have a subject of “Email Sent to Distribution” with a dynamic comments filed that contains the value “{{Lead.Assigned Distributor Match}}” which gives us the distributor account name so we can report on it.
-
Step 4: Wait – Duration: 1 month
-
Step 5: Change Program Status – Program: Distribution Leads, New Status > Not in Program (we do this so our program shows us the leads sent in the past month)
Set Progression Status: Feedback Provided – We use this to keep a record we can report on in SFDC by creating a task.
-
Trigger: Fills Out Form – Form Name is Distribution Leads Form
-
Flow:
-
Step 1: Change Program Status – Program: Distribution Leads, New Status > Feedback Left
-
Step 2: Add to List – List Name: Distribution Leads – Feedback Left
-
Step 3: Create Task – these all have a subject of “Feedback Received” with a dynamic comments filed that contains the value “{{Lead.Assigned Distributor Match}}” which gives us the distributor account name so we can report on it.
-
Step 4: Wait – Duration: 1 month
-
Step 5: Change Program Status – Program: Distribution Leads, New Status > Not in Program
Okay, hopefully the formatting isn't too funky. I have this in a Word document if anyone wants it, just send me an email at alepre@southco.com. Let me know if you have any other questions; I'd be happy to share more details and/or collaborate on ideas.