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.

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".

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

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.

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.

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.

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.