Author: Jeff Shearer

  • Is your marketing pipeline data leak-proof?

    Is your marketing pipeline data leak-proof?

    Most companies rely on out-of-the-box reports from Salesforce to understand how their marketing efforts are translating to pipeline and revenue. The assumption is this data is accurate, yet there are flaws in how Salesforce tracks marketing impact. In fact, these flaws are big enough to cause as much as 50% of data about marketing sourced/influenced pipeline to be totally inaccurate in reports.

    It starts with how marketing impact is tracked on individuals — leads and contacts. If you’re like most, you’re writing to fields like Lead Source to track the first (or last) touch, and using campaigns to track the different programs that a given lead/contact has interacted with. These two data points — lead-level fields and campaign membership — are the basis for nearly all Salesforce marketing reports, and the reason why you can make statements like “we generated 200 leads from search engine marketing last month” or “50 people registered for the webinar”.

    It’s reasonable to assume that these same insights should translate well to tracking pipeline impact too, right? The answer, it turns out, depends on how the opportunity was created.

    Opportunities created through lead conversion

    If a lead flows through your funnel in a perfectly orderly way, the lead gets converted to an account, and an opportunity is generated. This is how Salesforce lead conversion is designed to work. When this happens, the new opportunity will automatically have the lead (now a contact) associated to it. The opportunity will also inherit key lead details, namely lead status, and any campaign history that the lead was a part of prior to being converted.

    With all this information attached to the opportunity, you can accurately say where the opportunity was sourced from, and even what influenced it. Since all this association of data happens automatically, you can safely rely on it for reporting purposes. Meanwhile…

    Opportunities created manually

    We all like to think our sales processes fit into a nice and tidy flowchart, yet the reality in most organizations is that opportunities get created through other ways than just lead conversion. For example, suppose an existing customer expresses interest in a new product. Since that customer wouldn’t be a lead in the system anymore, the sales rep will most likely create an opportunity directly from their existing account.

    The problem, though, is that a manually created opportunity won’t have a contact associated with it by default. This also means that marketing data like lead source or campaign history are often blank. It’s why your campaign pipeline reports never seem to add up properly with the total pipeline reports — if no one is added to the opportunity, no campaigns will be added either.

    Bottom line, manually-created opportunities, left to their own devices, make measurement of marketing impact completely unreliable. And this isn’t just an edge case. In nearly every Salesforce org I’ve seen, manually-created opportunities — those created outside of the typical lead conversion process — account for 50% or more of the total opportunities in the system. This means that 50% of your marketing pipeline data is just not accurate.

    You can quickly confirm how big of an issue this is in your organization by running a simple opportunity report, and checking how many lack a primary contact.

    The solution

    Never fear, this can be fixed, and without buying any specialized software. Work with your Salesforce admin to modify the default way opportunities can be created, and ask them to remove the ability for opportunities to be created anywhere besides a lead conversion, or directly from a contact. This requires a bit of customization to accomplish, but should be a relatively straightforward change for your admin. Just make sure you train your sales team on the new process, as you’ll want to ensure they still know how to create opportunities.

    You can also use 3rd party tools to address this issue, though they’ll come in handy later, when you’re trying to get more than just one contact on each opportunity. Just the step above will make a big difference to fill in gaps in your data.

  • Fallback Alerts: How to build a broken link warning system in Marketo

    Fallback Alerts: How to build a broken link warning system in Marketo

    You don’t want to provide a poor user experience or waste ad spend on broken links. Marketo has a default fallback page you can set to help prevent a totally stuck user, but this doesn’t help you fix broken links that you don’t know about. Wouldn’t it be great if you could be alerted whenever that page was visited, find out what page drove them to the 404, and fix the broken link right away?

    It’s actually pretty easy to do, and you can build this warning system it in about ten minutes.

    First you need to visit Admin > Landing Pages, and make sure you have some sort of uniqueness built in to your Marketo fallback URL. A lot of people use their main website 404 page, and others create a dedicated 404 for Marketo. Others just redirect to their homepage. You’re fine in any case (so long as whatever page you’re pointing to has munchkin on it) but you’ll want to edit the URL in the admin settings to include a custom querystring so you can properly identify traffic to that page from Marketo links versus other website traffic.Marketo Fallback Alerts

    Now build a simple email alert that you’ll use to send every time the fallback page is hit. The two key pieces to include here are the tokens:

    • {{trigger.referrer}} – this will pull in the referring URL that triggered the fallback page. This won’t tell you specifically the broken link, but it will tell you what page the broken link exists on, which is often* enough to identify the issue.
    • {{SP_Send_Alert_Info}} – the awesome system token Marketo provides to insert links to the corresponding record in Marketo or Salesforce. This is great in case {{trigger.referrer}} doesn’t provide anything useful – you can always drill into the activity log of the lead tosuss out why they hit the fallback page.

     

    marketo-fallback-email-alert

    Next, build a smart campaign in your operational program or whatever area you keep miscellaneous data management stuff, and have it trigger every time your fallback page is visited, with a modifier included to catch the querystring. You’ll also want to include some sort of filter that ensure the triggering lead is known to the database, such as “email address is not empty” (you used to be able to use “is anonymous = false, but thats no longer available). You need this because I’ve noticed anonymous leads still tend to trigger a smart campaign like this, which will result in a bunch of alerts with no information in them. Not super helpful.

     

    marketo-fallback-alert-trigger

    For the flowstep, send the alert to you or whoever needs to know to fix it. I like to include everyone who can modify affected domains – so a Marketo admin and a website manager are good places to start.

    marketo-fallback-alert-flowstep

     

    As a rule, I don’t like getting email alerts for much, but a broken link is high priority issue, and an easy one to fix at that, so an email alert feels appropriate here. That said, if you prefer, you could also log an interesting moment using the same {{trigger.referrer}} token, or assign a task too. It’s up to you.

    Once you get the alert, sometimes the referrer URL will be enough to allow you to hunt down the offending link, but even if it is not, you can always dig into the activity log of the lead who triggered it, and look at the web pages they’ve recently visited.

    *Note – This doesn’t always work when the referrer is a search engine or a direct visit, because in the former you can’t necessarily see the search query that drove them, and the latter has no referrer to track. Though in my experience, the most common offenders of broken links are on thank you pages, or the thank you page itself being set incorrectly on a form’s settings. In either of those cases, a lead would generally be known to Marketo, so your alert would properly notify you.

     

    All the credit for this idea goes to Adam New-Waterson, you can hear more about this topic from our presentation at Marketo Summit 2016.

     

  • New Lead Processing Queues

    New Lead Processing Queues

    Remember “PEMDAS” in school? That little trick to figuring out the right order of operations for solving algebra equations?

    So if you had to solve an equation like 4 x (3 + 4), PEMDAS would tell you to solve the stuff in the parentheses first before multiplying so that you’d get the correct answer.

    I find myself confronted with the same sort of “order of operations” conundrums in Marketo all the time. When a new lead is created, there are actions, like data value changes and program associations, that I want to ensure occur ahead of something else, such as a Salesforce sync. But these actions often exist in disparate areas, and there isn’t an obvious, direct way to control what happens first.

    Or is there?

    The Campaign is Requested/Request Campaign trigger & flowstep combination is a powerful way to allow control over the order of disparate triggers.

    Campaign is Requested

    Request Campaign

    Take a new lead creation action, as an example. For us, there are several data steps we want to occur before anything gets synced to Salesforce. For instance, we want to ensure the new lead isn’t missing any key values, like lead source, status, etc. We also want to ensure their country name/state name match an approved list of values (aka we want “United States”, not “USA” or “‘Merica”).

    Geographic Field Cleanup

    The essence of this is a chain of triggered smart campaigns that all use the “Campaign is Requested” trigger, and their flowstep ends with a “request campaign” flowstep, requesting the next campaign in the series.
    NewLeadQueue

    Here’s an example of how these chain together:

    1. Step 1: Lead Created (this one just watches for new leads created in the system, and kicks of the chain of actions)
      1. Trigger: Lead Is Created
      2. Flowstep: Request Campaign: Step 2
    2. Step 2: Clean up Lead Source & Type
      1. Trigger: Campaign is Requested
      2. Flowstep 1: If lead source is empty, populate with a default value
      3. Flowstep 2: if lead source is irregular, normalize it
      4. Flowstep 3: Request Campaign: Step 3
    3. Step 3: Fix Geographic fields
      1. Trigger: Campaign is Requested
      2. Flowstep 1:
        1. Choice 1: if Country is US, USA, United States of America, America etc, change value to “United States”
        2. Choice 2: if Country is “England, Scotland, etc” change value to “United Kingdom”
      3. Flowstep 2: Request Campaign: Step 4
    4. Step 4: Assign to a Nurture Program
      1. Trigger: Campaign is Requested
      2. Flowstep 1:
        1. Choice 1 If lead meets whatever criteria you use to assign to a nurture stream, add to engagement program
      3. Flowstep 2: Request Campaign – Continue until you reach the end of the chain

    The examples I’ve described above are primarily data management & manipulation, but a new lead processing queue can also be handy for engagement program assignment, or calling external services and webhooks. For example, suppose you use a lead enrichment tool that works via a webhook. Include that step as part of your new lead processing queue, and you can ensure all new leads get enriched as they enter the database.

    Completing the queue before a CRM sync

    While the processing queue can be extremely handy on its own, some special considerations come into play if you’re trying to ensure the queue occurs before a sync to your CRM.  . First consider all the activities that could sync a lead to Salesforce. This includes any existing smart campaigns that use the “Sync to Salesforce” or any other Salesforce related flowstep, along with any programs that are tied to a Salesforce campaign (This last one is the one most people forget).

    We’re heavy users of the program to campaign sync, so minding when the sync occurs relative to our processing queue is really important. We don’t want leads accidentally ending up in Salesforce before we get a chance to clean their data up. The way to prevent this is build in a wait step in front of any program status change steps. So if you have an event program with a smart campaign that updates a lead’s status to “Registered”, you need a wait step of a couple of minutes in front of the status change flowstep.

    Queue Diagram

    Unless you have a really long queue of complex actions, usually 2-3 minute wait steps is plenty. But if you really want to hone in on how long your queue takes to process, you can create timestamp fields for start and end times, and have the first campaign in your queue stamp leads on entry, and the final campaign stamp on completion. Then after you have a few weeks of data, export all the leads that ran through the system, and calculate the average time between start and end.

    A few caveats

    • I like to avoid excess use of trigger campaigns in Marketo where possible, as at scale, they can significantly degrade performance of the tool. In a way, this processing queue is beneficial in this regard, because you’re effectively consolidating many of your disparate trigger campaigns into a single, orderly list. However if you are a user with a database of significant size, you’ll want to thoroughly test out a processing queue such as the one above to confirm performance isn’t negatively impacted.
    • A longer processing queue can get a bit bogged down with big list imports or other batch creation of leads. So don’t rely on it here, as these may cause a spike in processing time, and may cause a sync to occur before the queue gets done processing.
    • Programs with a landing page and form in them will automatically assign a program status when a form is completed. It’s something Marketo does that you cannot disable, presumably as a safeguard if you were to build a program and forget to active your smart campaigns. This is super annoying. A way to get around this is by storing your landing pages in programs that are not tied to a Salesforce campaign, or by using the Add to Salesforce campaign actions instead of the program-campaign sync feature.

    Once you get a basic processing queue up and running, it’s super easy to expand and modify it. It also makes hunting down critical lead creation activities a breeze, since they’re all chained together in a nice, ordered list.

  • Program templates: Best-of-class in a bottle

    Program templates: Best-of-class in a bottle

    I’ve worked with companies using Marketo across large teams and small teams. Each has their own set of challenges, but one they share is the need for consistency and simplicity in their marketing programs.

    All too often, you’ll see organizations with programs that just don’t feel consistent, because they all have a different look and feel. And if the front-end looks disjointed, then all the behind-the-scenes structure, tracking, and reporting is at least as messy.

    It’s easy enough to spin up a new program in Marketo, or clone a prior program and adapt it, but real productivity comes with the use of templates for your programs. Meticulously created and maintained, these are your absolute best campaigns, and are your ticket to more predictable marketing efforts. With program templates, big teams benefit from better alignment and turnaround time. Yet even a one-person Marketo master can benefit from standardizing their processes in templates.

    Where do templates make sense?

    Your first step is identifying where templates actually make sense. Build a list of your most common use cases in Marketo. Do you run a lot of events in the field? Webinars? Downloadable content? Here’s my rule – anything I’m doing more than a few times a quarter is a prime candidate for a program template.

    Next, identify all the assets you might need in your program. For an event program, that may include invites, reminders and follow up emails, Registration and thank you landing pages. Plus all the smart campaigns for sending emails and tracking registrations.

    You want your templates to contain every possible asset you might need for most circumstances. There will still be occasions where you need to build something more custom, but these should become the exception to the rule once your templates are in place.

    Marketo Program Templates

    You should also use this opportunity to review your program channel tags. I prefer to maintain a small list of channel types in Marketo, as it helps keep your list of templates small too. For example, Marketo out of the box contains tags for tradeshows and roadshows. Yet these are built quite the same in Marketo. Unless you have major reporting needs that require this differentiation, I recommend collapsing these sub-types into broader categories, like “Event”, “Webinar”, “Content”, etc. Stay away from overly specific channel names, because it’s a pain to change the tags once the template has been created, and you ideally want to avoid maintaining a big list of templates.

    Once you’ve identified your key use-case programs, and all the assets they need, build out everything in a shell template program, but leave the content of everything empty for now, because you’ll be setting tokens for most of it.

    Token Time

    Next you’ll want to tackle the setup of your program tokens. While you can follow any naming convention you like, it’s important to remain consistent, and record these token names in a document somewhere. I like to use a spreadsheet to log every token name, its type, and its intended use case.

    To help keep your list of tokens tight, think of how a particular token can be used globally, across several different templates. In other words, avoid tokens like {{my.Webinar Invite Email Subject Line}}, and instead pick a more generic name like {{my.Email – Invite – Subject Line}}, that can be used across different templates. Remember, in most cases this won’t just be you working with these templates, so sticking to a standard system will keep tokens easier to remember, and more versatile if you need to adapt them to new templates later.

    Tokens work great for front end content on your assets, and can be used anywhere in your emails and landing pages. So for an invite email, you may set a token for the sender email, the subject line, the banner image URL, the headline, and even the body text. For a landing page, you may set tokens for your headline, the body content of the page, the header on the form, and even for hidden values on the form itself. For smart campaigns, tokens are helpful for change data value actions and interesting moments. A great use case is logging an interesting moment after a lead registers for a webinar, and populating the name of the initiative in an interesting moment.

    Marketo Program Token Setup

    When setting your tokens in the program settings, I’ve found it helpful to specify an obvious default value such as “EDIT ME”. This will make it easier to visually see which tokens have been set, and which still need to be edited.

    Once all your tokens are built, reference each of these tokens in your assets, and confirm in preview mode that you didn’t misspell or miss any tokens. There are some pitfalls to tokens though. This is far from an exhaustive list, but a few to watch out for:

    • If you set a token for the body text of your email, you may decide to use a rich text token for this. This is fine, but remember that the plain text version of the email will render that same token content explicitly, code included. So you may need to create plain text tokens for these sections.
    • Be careful with setting tokens for links in emails. Anytime a link exists that you want to track clicks, be sure that link is in a rich text token, not a plain text token.
    • Be wary of referencing tokens in your programs that you will only use some of the time. Marketo used to be make it easier to delete tokens in the program settings menu, but it tends to produce errors when you do this now, especially for approved email and landing page assets.

    If you want to align to a solid naming convention for your tokens and general great info on the power of tokens, check out Edward Unthank’s presentation from Summit 2015 on the subject.

    Tying all the loose ends

    Once all your assets are loaded in the program, approve all the assets, and reference them within each of the smart campaigns (but don’t switch on any smart campaigns). This will ensure that when you clone your template, all the asset references are maintained when the program is cloned, and minimizes extra edit work.

    Now give the template a test by cloning, and editing each token, checking to ensure everything is populated. This takes time to do, but it is critical that your templates are flawless before you start asking your teams to work in them.

    As you begin using the templates, you’ll likely receive feedback over time for improvements. you may also want to update the design of your assets over time. Before making and edits to the template itself, first clone the current version of the template into a new version that is clearly named. Keep the old versions in an archive folder. This will ensure that if you break anything, you can always revert back to the old version.

    And that’s it! I’ve opted not to get into my specific program structure, as everyone will have different use cases, and the assets that make sense for my purposes may not always work for you. Though if you do ever want to talk structure specifics, feel free to reach out, I’m happy to talk 1:1.

  • A Marketo field for every occasion

    A Marketo field for every occasion

    Chicken or fish?

    It’s as if every program or event has some random, custom field requirement. Dietary restrictions at an event, questions for a webinar, or a time slot for an in-person consultation. Fields aren’t exactly hard to create in Marketo, but they live on forever once they’re created, and can lead to a ton of confusion later. Avoid the temptation to add new fields in every scenario. There’s a much better way to deal with this, and I’ll show you how.

    Instead of creating a new field for every random request, create a small handful of temporary “burner fields” that you can use over and over again. Just remember these aren’t to be used for data you want to hold on to. Nothing critical like contact info, lead profile info, etc. Just single or temporary-use data.

    In fact, for truly temporary data, it’s a bad idea to keep this sort of data around permanently – if you ever run a similar program again in the future, you run the risk of referencing old data in the new program. Not to mention it creates a complete mess when trying to find the proper fields to use.

    To start, you’ll want to create at least one string field, but you may want a few of these. Give it distinct names like Temporary Text Field 1, Temporary Text Field 2, etc.

    Burner fields on a Marketo form
    Add your temporary field to a form – here’s an example of a multi-location event registration form.

    Once you add one of these fields to a form, you’ll need a way to record the temporary value, and then clear the field so it can be used again later.

    Set up a smart campaign that triggers when your form is submitted (this may already exist for something like an event registration action), with specific actions for dealing with the value just stored in your burner field. And your method here may vary a bit depending on the data you’re capturing.

    For example, if you’re running a multi-location roadshow, and you want to use one registration form for the entire series, you might want to use your temporary field to display a selection of all the events in the series.

    In the smart campaign that triggers on the form submission, use the value in that field to add the lead to the appropriate sub-program, or static list.

    Then, follow up with a data value change of the temporary field, and set a new value of “NULL”. This will clear the field of it’s value for that particular lead.

    Temporary fields in a Marketo smart campaign
    Here’s the same roadshow example on the smart campaign. Marketo sorts through the temporary field values, assigns to the proper program, and then clears the value out.

    Alternatively, if the data is something more open-ended like dietary restrictions or webinar questions, consider setting up an email alert that fires when the form is submitted, which will essentially stamp that value in an email for future reference, even if it no longer exists on the lead. If email alerts won’t work, you could also opt to add all the leads to a static list, and subscribe to it. Then set a timed smart campaign to clear out the field of any values after your event or whenever the data will be used.

    Now you have a field for every occasion, and you’ll probably discover new use cases for them all the time. If you ever have concerns about the use of a field overlapping across programs, you just add another temporary field, or better yet, assign your burner fields by use case or region to avoid any accidental crossover.

  • Bombproof your list imports with proxy fields

    Bombproof your list imports with proxy fields

    photo-1436902773985-52c1040b6100

    List imports are scary stuff.

    There are a lot of things that can go wrong with pushing a file of leads into your database. Duplicates. Overwritten values. Bad data. List imports open you up to a lot of risk to your Marketo database all at once.

    But you can set up a line of defense for your more sensitive fields using what I call “proxy fields”, which help you intelligently manage how data is overwritten.

    List imports are a daily task for us, and so we’ve gotten pretty strict on the data requirements for new leads, particularly with the lead status field. When we upload, we need to be able to distinguish between suspects/inquiries and truly qualified leads.

    We block field updates for the lead status field, meaning it only accepts the first value from a list import, and won’t be changed by future imports. This helps us ensure a lead that’s already an MQL cannot move backwards and become a suspect from a later list import.

    List imports with field blocking
    Here’s my crappy drawing of how field update blocking works. New leads get a status, existing leads (who already have a status) are unchanged.

    This is handy, but field blocking is a double edged sword. Suppose a lead was originally imported as a suspect, but is now on an import list where we’ve marked them as an MQL. In that case, we actually want them to become an MQL, but since that field blocking is in place, that lead’s status won’t be changed, and we’d be forced to fix it manually.

    To work around this, we created a proxy field, called “Import Lead Status.” It replaces the standard lead status field on our import lists, and more intelligently manages the data, making sure leads can move forward in status, but not backwards.

    Marketo List imports with proxy fields
    Here’s what imports look like with a proxy field. We’re now conditionally assigning lead status from list imports, so existing leads can be updated when it makes sense. Sweet!

    Here’s how to set it up in about 10 minutes:

    • Create a new text field with a name distinct from the original field (this should be a marketo-only field), such as “Import Lead Status.” Ensure no field updates are blocked. You may also want to set a few list import aliases for this field, as this is the field you’ll want all your list imports to map to in the future.
    • Create a smart campaign set to run every time a lead qualifies, with two triggers: one for anytime your new field’s value changes, and another for when the lead is created (since data value change triggers won’t fire for new leads). You’ll also want to include two filters:
      • A filter to exclude any lead statuses you do not want to change. You need to include this so your import lead status doesn’t move any leads backwards inadvertently. I decided that anything Marketing Qualified or beyond (SAL, SQL, etc) shouldn’t be changed.
      • A filter the specifies that the import lead status field isn’t empty (for the aforementioned “lead is created” trigger)
    • For your new Smart Campaign’s flow, you just need one step, “Change Data Value” that sets the lead status by grabbing the value from the proxy field, using a field token.

    How to set up proxy fields in MarketoHow to set up proxy fields in Marketo

     

    The nice thing about this process is it’s invisible to your other Marketousers. We have a standard import template that we require for any list uploads, and I have “lead status” and variations of it mapped to this proxy field as a safeguard, so to anyone importing lists, this is no different to how they managed the process before. Since implementing this process, it’s had a big impact on efficiency and accuracy for us.

    Obviously this is just one example of a proxy field – you could do something similar for geographic fields, company names, phone numbers, and much more. If you’re doing something similar, I’d love to hear about it!

  • One Landing Page Template to Rule Them All

    One Landing Page Template to Rule Them All

    This post originally appeared on the Champion Blog of the Marketo Community on August 10, 2015

    ringI hate repeating work in Marketo. Yet landing page templates seem to be an area that requires a lot of repeat work. It seems natural to just build a new template when you have some new use case, channel, or brand to contend with. But the problem with this approach shows up later, when changes are needed at a global level. Suddenly you’re stuck with all sorts of versions to update. The end result is a bunch of legacy templates with outdated code, and maybe one or two templates that actually remain current.

    So instead of building new templates each time some minor new change is needed, I try to think about the process backwards-identify the elements I might need to customize on my landing pages, and then build a flexible template that will let me control those changes in the future.

    This approach is made more viable with the new guided landing page templates, which add an awesome new functionality called Variables. These, plus some creative applications of program/folder {{my.Tokens}}, allow you to build a template that works for nearly any situation. Here are a few ideas to try:

    Branding: logo swaps, color palate changes, fonts, etc

    Logo and style changes are some of the more common edits you might be making to a template. You may need different looks for an SEM page vs an event registration page, or for a parent and sub brand. At a minimum, you should wrap key brand elements like a logo within a “mktEditable” div. The magic of this class allows the content within it to be directly editable within the landing page editor.

    You can get even more control with variables, for scenarios like:

    • Toggling between two main logos (boolean variable)
    • Changing the accent color used on your pages (color variable)
    • Setting the URL of an element like a banner image (string variable)

    CSS TokensAnd when you need finer tuned control and the ability to overhaul CSS on the fly, program {{my.Tokens}} are what you’ll want to use. Consider putting a few placeholder tokens in <style> </style> tags in your header for any program or folder-specific CSS editing you might want to do.

    Tokens are great in that you can choose whether or not you want to assign them a value, so it’s always worth adding a few to your templates should you need them later. They’re especially handy when you’re testing a new form design, or need to make broader layout changes. It’s as simple as pasting the new CSS snippet into a token, and the pages within that folder or program will instantly reflect the new code–no draft approval required.

    Placement and visibility of elements

    Landing Page VariablesIf you check out the documentation on variables, you’ll see a few mentions of manipulating the visibility of elements in your page, such as making your footer shown or hidden. But you can take this idea a lot further, and build variables that allow you to display a form or secondary call to action with the flip of a switch. You can use this sort of idea in tandem with other variables that control the width of different elements (especially when using a responsive, grid-based framework like Bootstrap). This allows you to use the same template for both your landing pages with forms and form-free confirmation pages.

    Scripts and tags

    It’s common to see separate landing page templates when specific tracking scripts are needed, such as a confirmation page to track goal conversions in Google Analytics, or on a specific landing page used to fire a remarketing script. This can get clunky to manage across multiple templates, and a few tokens will serve you well here.

    Just as with CSS tokens, you can set a few dedicated javascript tokens in your template which can be referenced as needed. Then, if you have a specific program or set of programs that you need to call a script for, just put in a value for one of your script tokens, and you’ll be set. Note: if you’re really clever, you’ll put programs that use common scripts in the same folder, such as those used for Search Engine Marketing. Then you can just set the token in one place–at the folder level, and all the programs within it will automatically inherit that value.

    Better yet,  you can solve a lot of this with Google Tag Manager. It’s a wonderful tool that allows you to fire different scripts based on different scenarios: a specific page view, a click, or another event you configure there. This will probably keep your PPC manager or agency happy, because they don’t have to fuss with different landing pages to get the configuration needed.

    Localization and miscellaneous meta info

    For global brands with page localization needs, there are meta properties such as HTML language type and CSS text direction (for languages like Hebrew that read right to left). You can set these sorts of items as variables in your template too, allowing you to quickly swap between localization preferences.

    There’s a few other miscellaneous use cases too:

    • Copyright year – this changes every year, so think about setting a token for it in your footer if you display one. This will save you hours of work fixing landing pages on January 1st.
    • Footer links – For social icons, privacy and T&C links, make that area a token that you can change globally. This stuff does sometimes change, and with a token it takes just seconds to update.
    • Open Graph tags – Do you ever wonder how people get their posts to display well on social networks with full sized images? Chances are they’re using open graph tags to specify post meta content. So you can place this data in your templates and set via tokens for quick updates.

    clapIf you were to implement every one of these ideas, you’d have a lot of tokens and variables to contend with. So the key word here is moderation–just because you can make everything a token or a variable doesn’t always mean you should. This is doubly important for variables, which require hard coding into the templates, so tweaking these all the time isn’t really ideal.

    These ideas just scratch the surface of what some of you have already come up with–so please share any clever template ideas you’re using in the comments!

  • 4 Marketing Lessons from The Martian

    marketing-tips-from-the-martian

    I’m a huge fan of survival stories – from the balloon-wrecked castaways of Jules Verne’s The Mysterious Island to 80′s legend and mullet-master Macgyver. I’m inspired by stories where creative solutions are found just by using the tools at hand–turning a cement mixer into a makeshift aircraft, or creating explosives from random items found in the woods. In Andy Weir’s The Martian, he does just that in a story about surviving for years before being rescued in the most inhospitable place imaginable. While this is a story of survival, I realized in reading it that it actually has some important lessons in it for marketers too.

    FYI I wouldn’t call this post a spoiler for the Martian, but if you like surprises, maybe go read the book first.

    1. Constraints create focus

    In The Martian, astronaut Mark Watney is stranded on Mars with only 30 days of supplies, yet has years to wait until a plausible rescue mission is mounted. Food is perhaps his biggest initial challenge. He has to apply his botany background to a completely new pursuit: growing crops on a planet without oxygen. He puzzles out how to blend martian soil with soil samples from earth, and how to multiply a meager supply of potatoes into years of sustenance. The fact that he has limited supplies focuses his energy and drives decisions forward.

    For marketers, often the biggest constraints are budget and resources. Certainly we all fantasize about what we could do with a bigger team or more budget, but the reality is usually underwhelming by comparison. Yet these constraints are a great thing. With less disposable budget, you’re forced to make more creative uses for the money you do have.  With less budget and human resources, you’ve got to figure out how to make your own potatoes go farther. Small teams like those at Basecamp build incredible products with tiny teams and budgets by focusing on the critical stuff, and ignoring the rest.

    Ultimately the best marketers thrive because of constraints posed on them, not despite them.

    2. Look at problems sideways

    The limit of food supply for Watney was a scary constraint, but the real creativity came when he realized he didn’t have nearly enough water supply to actually cultivate the crops he wanted to grow. He could have just tried to grow what he could, and ration it as best as possible, but this sort of linear thinking would only have delayed the inevitable, and probably would have gotten him killed.

    Instead, he approached the problem sideways: instead of trying to optimize the supply he had, he thought up a way to actually increase his water supply by re-purposing the base elements found in the hydrogen fuel of his landing craft.

    The best ideas are rarely landed through lateral thinking. Often they come by imagining methods and technologies outside of their intended purposes, or thinking in a wildly new direction. In marketing automation, I’m exposed to many situations where this sort of sideways thinking is a necessity. In fact, it’s my favorite part of the job, though marketers of any skill set can benefit from non-linear thinking. In a time where marketing “best practices” rule, we must not neglect the power of original, and unconventional ideas.

    3. Experimentation drives innovation

    Watney’s Mars is unforgiving. His barebones equipment is constantly breaking down or insufficient for the new tasks at hand. He experiments with different tweaks to his tools, all meant to further his goal of survival and rescue.

    The basis of marketing experimentation is rooted on the scientific methods of hypothesis development and A/B testing. It’s a popular topic among marketers, but few in B2B experiment enough. It’s always surprising to me how many marketing decisions are still in many ways driven by gut, intuition, or the aforementioned best practices. These are still valuable to decision making, but continuous testing and observation is often left out of the process. And yet it’s one of the only ways for marketers to achieve bulletproof credibility.

    4. Think in terms of years, not just weeks

    Staying alive from day-to-day was priority #1 for Watney, but he never lost sight of the long term goal: getting rescued. After all, daily survival does no good if you fail the day before rescue.

    For marketers, losing sight of strategic goals  for tactical initiatives is an easy trap to fall into. On mars, short-term thinking undermines any chance of rescue. Back on earth, that equates to lost productivity, profitability, and credibility. The individual campaigns initiatives that make up a marketer’s efforts are important, but only when seen as part of the bigger picture: growth in the marketplace, greater brand visibility, or reaching ubiquity in a new market. It’s the big stuff that takes years to build that ultimately matters in the end.

     

  • 4 ways a one-to-one CRM sync aligns sales and marketing teams

    4 ways a one-to-one CRM sync aligns sales and marketing teams

    one-to-one-databaseOne of the annoying “features” often pitched by marketing automation vendors is the ability to maintain a separate marketing and sales database. In other words, hold certain leads back from being synced from your marketing automation platform into your CRM.

    This sounds desirable on paper: The ability to hold leads back until they’re ready for the sales team to follow up. Marketing gets to ensure their sales teams don’t dive in before a lead is ready, and sales sees more value in marketing because they’re only getting the leads that are qualified. Win-win, right?

    But this misaligned marketing and sales database only causes problems, and ends up hurting the marketing and sales relationship too. Instead, marketing and sales operations teams should strive to achieve a One-to-one sync between their marketing automation and CRM databases, where leads always exist in both system. Here’s why:

    Better visibility for sales

    Holding leads back implies that marketing is able to accurately predict which leads are qualified, and which aren’t. But this isn’t always the case. While marketing automation is scary good at tracking online lead behavior, there are certain things it doesn’t do well, namely offline tracking and phone calls. Suppose you have a lead that hasn’t yet been synced, but decides to pick up the phone and call a confused salesperson who can’t find the lead in their system. This then leads to sales creating a duplicate in the system, which lacks all the activity you were tracking on the original lead. With a 1:1 sync, all leads are always visible for sales to look up, should they need the visibility.

    Improved personalization

    Because you’re only syncing some leads, it’s hard to rely on personalizing your emails to come from a sales representative, because only a portion of your leads are actually owned by a sales rep in your CRM. With a 1:1 sync, you can use your lead owner tokens much more liberally (assuming your assignment rules are working well).

    Complete CRM campaign touch tracking

    Marketing automation tools like Marketo have their own Salesforce campaigns equivalent, Programs. These are great for seeing all the marketing touches that have occurred for a lead, and can even by tied to directly sync with a Salesforce campaign. This is hugely valuable when you’re running an event and your sales team is curious how many people have registered or attended. They can see the data on their leads natively within the campaign reporting of Salesforce. But if you’re trying to hold certain leads back, you can’t maintain this campaign sync. This also means  that any program activity that occurred pre-sync won’t be tied back to salesforce campaign activity after the sync occurs. So if your lead attended a webinar, downloaded a whitepaper, and watched a video before they were synced, that data won’t necessarily be mapped back into Salesforce campaigns.

    Improved reporting

    Without a 1:1 sync, to get an accurate picture of the full funnel, marketers have to run reports in both their automation system and their CRM. True, some automation tools have their own funnel reporting tools, but a common cause of sales and marketing misalignment is reliance on different data. If marketers start relying on reports outside of what sales sees, it starts undermining the relationship they’re trying to build. That’s not to say that marketing-specific reporting tools don’t have their place, but when it comes to funnel-critical reporting, CRM-based reports are the only way to go.

    These benefits all just scratch the surface of a 1-to-1 sync. So it’s surprising to see so many organizations that don’t pursue this. In my experience, the the opposition often comes from a lack of understanding of how to properly implement this, or a resistant sales team that doesn’t want “junk” in their systems. But these concerns are often unfounded with the right approach and training. Plus there are a few ways you can implement this depending on your business situation.

    For example, you could choose to sync all leads and assign to a marketing owner (Avoid queues if possible), and then reassign later once leads reach a qualification status. This works, but requires some extra workflow logic on the CRM end (because the default lead assignment rules only run upon lead creation), or creating your assignment rules within your marketing automation tool.

    Or you could take arguably the cleanest approach: assign all leads to the proper sales rep with a descriptive lead status value, and train your sales teams to set views for their leads so they only look at the leads that are qualified. This is most easily done by adding a lead status values that mimic the names in your revenue cycle: inquiry/suspect, marketing qualified lead, etc). The key here is to set expectations through training with your sales teams so that they understand which leads to work and when.

  • Building a Scalable Alert System in Marketo

    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.