This article outlines the recommended data flow between Marketo, Chili Piper, and Salesforce. What we're looking to do is:
- Retrieve the Marketo Form Fill
- Chili Piper Creates the Salesforce Event
- Update Marketo with the Booking Status
Chili Piper's form concierge router empowers this flow.
Retrieve the Marketo Form Fill
The primary functionality that Marketo is responsible for is collecting the Lead Information and Creating a Lead Record in Salesforce if one does not exist. Ideally, Marketo will write to SFDC as quickly as possible. Writing quickly enables Chili Piper to create the associated Event relation, Ownership and write to custom fields quickly.
If you have other automations running that will provide routing, data enrichment, assignment rules, etc., you may want to write your own custom field to the Lead object that flags this specifically as a "Chili Piper submission". Add this field as a condition in your other automation to prevent these other automations from running. Otherwise, you may create a scenario where data is overwritten by each automation, depending on who updates the record first.
Your campaigns may have more sophistication, but this will outline the high-level logic. Note that images are subject to change.
1. Create Marketo Program and Smart Campaign for Chili Piper
2. Create Smart List - "Who" (image below)
- “Fills Out Form Trigger”
- Fills Out Form is "Program.Meeting Request Form Name"
- This Trigger will be the form(s) where you have Chili Piper integrated
3. Create Flow - "What"
Add Flow Step: Sync to SFDC (create a lead in SFDC if it doesn’t already exist) - We have the first choice to handle existing Contacts. Marketo won’t create a duplicate Lead if one already exists.
4. Activate Your Smart Campaign - "When"
Chili Piper Creates the Salesforce Event
To prevent Chili Piper from creating a duplicate Lead in SFDC, you must disable Lead creation by Chili Piper in your Inbound Router under Salesforce options:
Calendar is displayed to prospect - What’s happening?
At this point, Marketo will be creating the Lead record in SFDC, and the prospect will be viewing the calendar (unless the lead has been disqualified via Chili Piper queue rules).
Assuming the prospect was not disqualified, 2 Things can happen now:
#1 When a Prospect books a meeting
Chili Piper begins its booking flow. Here’s everything that happens in the booking flow:
In the background, Chili Piper periodically searches Salesforce to find the newly created Lead record based on email match.
If it doesn’t find it because it hasn’t been created yet, it keeps looking until Marketo creates the Lead.
Once the Lead is found, Chili Piper executes its workflow into Salesforce. This contains:
- Creating an Event in Salesforce with all meeting details, e.g., Assignee, Date/Time, Queue Name, Meeting Type, Booking Status, etc.
Note that it is crucial to have the option enabled within the Inbound Router to allow Chili Piper to create Events:
- Set a new Lead Owner based on the “Assignee” of the Meeting per Workspace CRM Actions setting for the Meeting Type.
- Populates "Booking_Status_CP" custom field on Lead/Contact object with "Booked".
#2 When a meeting is not booked
In the event that the prospect closes the calendar without selecting a time/date, Chili Piper will still do two things per your Chili Piper settings. These triggers will fire after a meeting is not booked and after a timeout period specified in the Inbound Router.
Below are the actions that fire:
- Re-Assign the Lead Owner* from the SFDC Queue to a rep, based on your Chili Piper Queue Rules.
You can optionally enable distribution for existing Contact records. If this is not enabled we will send an email alert to the existing Contact owner to notify them that their prospect tried to book.
- Optionally, send an email alert to the newly distributed Lead/Contact Owner to alert them that the form was filled, but no meeting was booked.
If you don't want these actions to happen, you can prevent it by simply not enabling any active queues in this section.
Update Marketo with the Booking Status
There are a handful of reasons why you want Marketo to know whether a meeting was booked or not. This could be to log an Interesting Moment, Send a “Booked” or “Did Not Book” Email to Reps/Managers, Send an Email to Clients, Change score, Add to Campaign, etc.
What you want to do is create a custom field in Marketo called “Meeting Booked” and then have that field updated to “True” or “False”, depending on if a meeting was booked or not.
There are a few ways you can do this; I’ve outlined them below:
Wait for the Sync Back from SFDC to Marketo to see the “Booking Status” or "Meeting Type" Data Value Change.
Pros: It’s reliable.
Cons: The sync back from SFDC to Marketo can take 5-15 minutes.
Here’s how you would log an interesting Moment using this method and using Meeting Type from Chili Piper.
You’ll see in the flow we have set the “Meeting Booked” value to “True”. This would tell Marketo that a Meeting is Booked based on that value. You then run another triggered Smart Campaign to run your “Booked” flow based on that Data Value Change.
After a set amount of time to set the value “Meeting Booked” = False, set Marketo to run a Smart Campaign that looks to see if “Meeting Booked” = “True”. If not, have Marketo set this value to “False”.
As noted, the sync can sometimes take longer than expected. The average is around 5 minutes but considering high volume it may take longer.
Lastly, we need another Smart Campaign that sets the value back to Null after a few hours or a day to reset the logic if the person was to book again.
Connect your Chili Piper to Zapier. When a Meeting is Booked, Chili Piper will fire a Zap and then from Zapier you'd feed to Marketo to update the “Meeting Booked” field to “True”. If Marketo does not see this Data Value Change of “Meeting Booked” = “True” after the timeout period set within your Chili Piper Router, the Marketo sets the value for “Meeting Booked” = “False”
Pros: Faster update to Marketo when Meeting is booked (or not).
Cons: You must rely on a third-party system (Zapier) to be part of the flow.