Hi there,
Hoping the community can help.
I'm trying to set up a smart campaign to automatically send an email to a closed won opportunity 24 hours after an opportunity is closed won. The business case is as follows:
The Opportunity is designated into two types of opportunities, self-service and white glove, these are determined by a salesforce formula field checkbox that is accurate before the opp is closed.
Below is what I have set up:
Currently I'm only seeing about a 40% hit rate rate on members being added to the list and can't figure out why some members are not being added to the list.
Any thoughts on this? Sanford Whiteman
Solved! Go to Solution.
Ray,
I believe what might be happening here is that at the time the contact's opportunity is updated to "Sales Closed: True", they do not qualify for all of the filters in "Was Added to Opportunity" so they do not trigger the flow. So how about running a batch campaign instead that checks every day for all of the filters in "Was Added to Opportunity" as well as "Sales Closed: True". This ensures all of them will move to the flow since both conditions need to be met in order to enter the wait step and get the email.
Hi Ray,
There is a risk in the way your trigger is set with a filter: there is no reason the opportunity that fires the trigger is the same as the opportunity in the "was added to opportunity" filter. If the person is added to 2 oppies simultaneously, it may lead to false positives.
There is no way around it as the "role" constraint is only available on the filter, not on the trigger. Still, I would add the "CC Self-Service Welcome", "Sales Type" and "Vertical" constraints to the trigger and the "sales closed" constraint to the filter to remove some of the discrepancies.
-Greg
If the person is added to 2 oppies simultaneously, it may lead to false positives.
Absolutely! But here we have a false negative, which means the overly broad interpretation of the filter wouldn't be the cause.
I think the direct cause is exactly what Devraj said above:
at the time the contact's opportunity is updated to "Sales Closed: True", they do not qualify for all of the filters in "Was Added to Opportunity"
Therefore I think an SFDC-side trigger on Opportunity is the solution. Don't let the Oppty get closed unless business criteria have been met -- either with the current Sales Closed field or a secondary field dedicated to this flow.
Yes, agreed on this, In fact, I am not saying the contrary
Getting sales to add contacts into the OCR table is a never ending fight. It is a fight that the sales managers need to get involved in: they should not tolerate that opportunities are managed without the company knowing who are the relevant contacts.
We also often modify SFDC setup to improve the OCR completion rates (such as removing the possibility to create oppies from the account or opportunity tabs, setting an OCR counter on oppies and adding validation rules to it, etc...)
-Greg
Grégoire Michel I definitely agree that modifying the SFDC setup to no allow opptys to be created/closed/moved stages without these types of roles is best practice, we're definitely moving in that direction but haven't got the buy in from management as to the necessity of making it required. My hope is that by running some automated email programs to customers that we can show why this is an essential practice and should be mandated and not simply strongly suggested and checked manually by CS.
I think that Sanford Whiteman answer
Therefore I think an SFDC-side trigger on Opportunity is the solution. Don't let the Oppty get closed unless business criteria have been met -- either with the current Sales Closed field or a secondary field dedicated to this flow.
is ultimately the "correct" answer from a fundamental perspective, but think I will see what Devraj Grewal 's idea with the batch campaign yields.
Hey Ray,
First question - Is this an on-demand bidirectional sync with your CRM? If your sync happens in batches you may have folks falling out of the process because the accounting team is overwriting the field quickly. I wasn't completely clear on whether or not this checkbox is separate from your "Closed Won" field. I've included this info just in case they're using the same field.
Also...
If this is SFDC you MUST ensure that your sales team is properly assigning people to roles on the opportunity. It sounds like this could be your issue (as it is in many organizations). Basically, if your sales team is adding all relevant players to the opportunity and assigning them a proper role you'll have people falling out of your process. This could be the case if your sales guys are check your checkbox and THEN adding people to oppty/role.
A good way to overcome the obstacle of your sales team following an incorrect procedure is to switch this from a trigger to a batch campaign. It sounds like this being a trigger is unnecessary since you're waiting 24 hours to send your email. If you have other things that need to happen immediately you can disregard this and keep it as a trigger.
If none of that works...
Check the particulars around your filter. It seems like there are a lot of moving parts which can get you in trouble if you're not absolutely meticulous.
I think I understand why I want to move to a batch campaign...yes the field is in Salesforce my understanding is: the trigger would require the rep to have added the OCR to to oppty before the closed checkbox is marked true, if they're added after even directly after they check the box these will not evaluate to be true.
Sanford Whiteman is there any good literature either on marketo or elsewhere on the best way to evaluate your instances triggers versus batch campaigns? I inherited this marketo instance and feel as though there is probably a lot of bad practice as only a few members of the team were marketing automation users before using it,
It sounds like this being a trigger is unnecessary since you're waiting 24 hours to send your email.
But 24 hours from a trigger firing isn't the same as a scheduled batch running every 24 hours. You can't reproduce a 24-hour wait with daily batches: you'll always send before or after your goal (sometimes wildly so!). Of course this may be an acceptable change, but it's not the same concept.
Thanks for your input, Sanford.
While you're correct from a technical standpoint, I have to think from a practical business stand point a batch is going to work out just fine for him.
Most businesses want to have uniformity (easily achieved with a batch) when sending out such correspondence. i.e If my account rep marks a contract as closed at 5 pm, you're probably trying to send your client an email connecting them with their new CSM at a time other than 5pm the next day, but maybe that's just me.
Further, it's very easy to get "trigger happy" and bog your system down after awhile. Being judicious with your triggers can help avoid this problem from creeping up often.
At the end of the day the automation manager here has to evaluate based on their needs.
Further, it's very easy to get "trigger happy" and bog your system down after awhile
I know of a Marketo instance that is having 22000+ active triggers and is still working fine. Do not take me wrong here, I am not saying that we should use triggers without any discernment, but simply that the level of triggers at which you would clutter your instance is quite high. So create triggers when you need them and get rid of them when you don't (such as in engagement programs for instance...)
-Greg
Grégoire Michel wrote:
I know of a Marketo instance that is having 22000+ active triggers and is still working fine. Do not take me wrong here, I am not saying that we should use triggers without any discernment, but simply that the level of triggers at which you would clutter your instance is quite high. So create triggers when you need them and get rid of them when you don't (such as in engagement programs for instance...)
That's interesting. I've ran into this issue with far fewer trigger campaigns than 22000+. There were also a tremendous number of smart lists also. I've always been told that yes if you need a trigger use it, but be judicious with them.
I wonder why my experience would be different. Perhaps the triggers had less to do with it than the smart lists? Hard to know.
It really depends on how often the triggers are evaluated and fired. You can have many, but only a few tens of "lead is created", "clicks link in email" or "opens email" will kill you instance performance, for instance.
-Greg
+1.
And just for fun, a way to visualize the event model in the browser is with a page like this.
The page has 30,000 distinct DOM event listeners -- 10,000 bound to each of 3 containers.
So #1 can be thought of as a Marketo trigger that's bound in many SCs but only sporadically qualifies people; #2 is like a Marketo trigger that qualifies a lot of people but doesn't do a lot in the corresponding flow; #3 is like a trigger that both qualifies a lot of people and does a lot of work once qualified.
If you hover over each area for the same amount of time, say 1 minute, you'll see a CPU profile like this:
Although it's prepared to fire 10,000 times, you don't see the click listener at all in the profile, since you didn't click. And the minimal mousemove listener fires millions of times, but uses a tiny amount of CPU compared to the more weighty mousemove listener.
While Marketo's event handling code is obviously not the same as the browser's JS engine, the architectural concept is similar enough to make the point.
Most businesses want to have uniformity (easily achieved with a batch) when sending out such correspondence. i.e If my account rep marks a contract as closed at 5 pm, you're probably trying to send your client an email connecting them with their new CSM at a time other than 5pm the next day, but maybe that's just me.
I don't think there's a "most businesses" rule here, and we don't need to change business logic if the platform doesn't require it. After all, the reason Wait Steps exist is to allow for time-relative reactions to triggers, and the [End On] constraint allows for more flexibility than just 5pm-5pm.
Sure, Sanford. You're free to think whatever you like. If the user needs this to be a trigger, they can keep it as such.
Ray,
I believe what might be happening here is that at the time the contact's opportunity is updated to "Sales Closed: True", they do not qualify for all of the filters in "Was Added to Opportunity" so they do not trigger the flow. So how about running a batch campaign instead that checks every day for all of the filters in "Was Added to Opportunity" as well as "Sales Closed: True". This ensures all of them will move to the flow since both conditions need to be met in order to enter the wait step and get the email.
So Devraj Grewal your suggestion is that I do is add all of the parameters in my combined trigger program and make them a batch program like below:
I'm new to Marketo so this entire conversation has been extremely helpful to me to understand where to use triggers and where to use batches.
That's correct. This ensures you do not run into the issue of the trigger firing when not all of the opportunity's parameters have been met and thus people will not qualify. Run this batch daily and this will then send the email. If you want to make sure the email is only sent at a certain time of the day, you can include a wait step with advanced wait steps to wait until a M-F at 9a or something similar.
Hey Devraj Grewal I'm still not seeing this batch trigger appropriately.
When I look at my list in salesforce of opportunity contacts who should be on this list and compare it to those not on the list I'm not seeing any striking similarities.
I have the batch campaign set up to run everyday at 7PM. and it looks identical to the screenshot above.
Could the "Date of Activity" be creating an issue here with the filtering? Do I need that field?
You may not need that field since it doesn't matter when the contact was added to the opportunity, you just care if the opportunity closed in the past 24 hours. So I would actually remove the Date of Activity constraint.
This worked perfectly Devraj Grewal -- thank you so much for the assist on this!
Ray