Building a Scalable Alert System in Marketo

“What have you done for me today?”
It’s the unspoken question asked every day by sales teams. Alignment between sales and marketing teams has a lot to do with communication and visibility. If sales doesn’t see the value of marketing at a daily, tactical level, trust erodes fast.

There’s entire books sales and marketing alignment. I’m not here to write one of those. Instead, I’ll show how redesigning a simple but critical process, your lead alerts, can up your perceived value to your sales team.

When I first started using Marketo, my sales team was in a constant state of flux. There were new and departing faces, and management would completely redefine territories at the first sign of a stalled pipeline. As the designated Marketo jockey, it was up to me to ensure the right reps saw the right notifications. But keeping this up to date in Marketo was both time consuming and tricky to keep accurate everywhere.

Sound familiar?

If you’ve just adopted marketing automation, you’ll have handful of situations where you’d want to send an alert, such as the contact-us form on the website. This is easy to do—just create a smart campaign that triggers off a specific form fill, and runs a flow step of send alert to lead owner.

Simple Alerts
An example of the simplest of lead alerts. They’re easy to build, but you’ll outgrow them quickly.

But as you grow, you’ll add more forms and different alerts for different offers. You’ll also need to keep pace with a growing and evolving sales organization. Soon your simple alert processes will get unwieldy (and unreliable).

If you’re at this point, the first step you should take is in adopting some global assets, particularly with your forms (See #4 in this post for more on that topic).

Think about the forms you can use within multiple programs. For example, a “download a whitepaper” form could be the same form re-used for different whitepapers. If you can’t do that, at least create a common naming convention e.g. “Form – Contact Us”, “Form – Contact Us v2” etc. This is handy because your alerts can start to live in one place, and you can trigger off of all-inclusive logic like “form name contains “Contact Us”.

Form name contains example
Name your forms consistently, and you can rely on much more open filter logic

You’ll find this will close some of the gaps in your alerts, and will help wrangle the odd campaign sending out alerts when it shouldn’t be.  This is an elegant solution, as long as you keep your naming conventions tight.

But then comes the process of determining who should get which alerts. If you’re like me, your sales team is carved up by geographic region. If you’re syncing your leads to salesforce, and they’re then getting assigned to the reps, you can just use the lead owner info to determine who should get which alert. But what if the audience you want to alert doesn’t own records in SFDC? This often happens with account management teams, SDR teams, or organizations using lead queues (If you haven’t discovered it yet, lead queues make the {{lead.lead owner}} tokens unusable). For situations where you can’t lean on CRM data, you need to adapt Marketo to handle this.

When you’re at scale with a complex territory assignment rules that change often, and more than a handful alerts to manage, you can build your alerts based on Segmentations and Program Tokens ({{my.Tokens}}). These will let you update territories and recipients in one place, with changes immediately affecting all your alerts.

Using a Segmentation to define sales territories

Marketo Segmentation for Geography
Now you’ve got a reliable way to identify which territory a given lead belongs to.

First create a new Segmentation, and define your segments based on your sales team’s territory assignments. In the filters of each segment, you’d use country or whatever field that defines geography to specify that segment. Once approved, Marketo will slice up your data and dump leads into the appropriate buckets.

If you haven’t already, it’s time to create a central program for all your alerts. Build out your first smart campaign with the appropriate trigger, eg: Form name starts with “Contact Us”. For the flow step, you’ll send an alert with a conditional statement for each of the segments you defined earlier.

This tells Marketo to send a particular alert to a particular person based on which segment the lead (which triggered the alert campaign) is a member of.

Using a marketo segmentation as conditional logic
You can use the segmentation you just created as filter criteria, or, in this case, conditional logic for your alerts.

Note: While we’re using this segmentation for a somewhat unusual purpose, it’s also great for dynamic content (for which it was originally designed for). Most people under use Segmentations, but it’s a great feature with some pretty cool use cases far beyond this example.

Using tokens to define alert recipients

Now we’ve got our logic in place, but what we’re most concerned about is who the alert is going to. You could plug in a list of email addresses under the “to other recipients” section. But remember that anytime your assignments change or you hire a new rep, you’ve got to change that in every alert campaign. It’ll seem easy now, but it’ll be a pain later. Trust me.

So instead, go into the My tokens area of your program, and create text tokens with consistent names like {{my.NW-Sales-Rep}}. Do this for for each of your territories and reps, and set the token values to their email addresses.

Setting Marketo tokens for alerts
Create tokens for each of your regions. Note: It’s possible to put several emails in a single token value. Just separate them with a comma.

Once your tokens are all set, plug them into the flow step choices under “other recipients”. Marketo will send to the token values whenever the alert fires.

Setting tokens in Marketo flowsteps
Your alert flowstep will now be a long set of choice steps, each with a different segment and corresponding token.

Note: You can only use tokens in a smart campaign like this when it’s based on at trigger. You cannot use {{my.Tokens}} in batch smart campaigns.

Bringing it all together

Once you’ve built out the rest of your alerts and set all your tokens, you’ll feel like you did a lot of work for no clear reason.

But you’ll see this pay off when your territories and sales teams start to change. You’ll find that you can skip edits to individual alerts, and instead update either tokens or Segmentations, depending on what’s changing.

You’ll save time, but most importantly, you’ll ensure consistency and reliability for the alerts to your sales teams.


Comments

4 responses to “Building a Scalable Alert System in Marketo”

  1. Brian Vass Avatar
    Brian Vass

    Jeff, great article! Do you have any additional best practices on created a central alert program? Our alerts are all over the place and it’s not efficient.

  2. Jeff Shearer Avatar
    Jeff Shearer

    Hey Brian,
    Thanks! I will think about putting together more thoughts on alerts in a future post. But in a nutshell:

    -Consolidated, global alerts are a must
    -Limits are a good thing – Only alert on important stuff. Don’t cave to requests to create unique alerts for ever scenario.
    -Related to above – use interesting moments more, and alerts less
    -Language in the alert should be about the action needed by the rep. Avoid getting too deep on details within the alert itself. That’s what the SFDC detail link is for.
    – Explore creating SLA violation alerts that copy in a sales rep’s manager or the department head. Use these sparingly though or they’ll get ignored.

  3. Hey Jeff,

    Thanks for documenting this approach. I’m running into an issue that I hope you can address.

    I’m using my.tokens, but I need to reference email addresses associated to other Objects, e.g. Opportunities, and when using velocity scripting, this works just fine. My.tokens reference record specific values, not a static value like you outlined in your approach and alerts fail when I try to do this; the tokens don’t render so the alerts aren’t sent. Any tips for addressing this? Thanks in advance.

    Daniel

  4. Jeff Shearer Avatar
    Jeff Shearer

    Hey Daniel,

    Awesome question, but if I understand your question correctly, I don’t think your approach with an email script will work. The reason a {{my.token}} works for delivering an alert in my example is because they’re effectively replacing a plain text value. Attempting to use any other type of token in the alert flowstep other than a text token is likely to produce an error. Email scripts especially wouldn’t work here, as I believe they must be used in an email asset itself in order to render properly.

    That said, I love the idea conceptually, but I’m afraid Marketo isn’t quite there yet.