Tag Archive | "Complete"

A Simple, Two-Month Plan to Complete a Content Project

At the end of June 2009, I was reading Copyblogger and I got a new idea: I should write an…

The post A Simple, Two-Month Plan to Complete a Content Project appeared first on Copyblogger.


Posted in IM NewsComments Off

The Complete Guide to Direct Traffic in Google Analytics

Posted by tombennet

When it comes to direct traffic in Analytics, there are two deeply entrenched misconceptions.

The first is that it’s caused almost exclusively by users typing an address into their browser (or clicking on a bookmark). The second is that it’s a Bad Thing, not because it has any overt negative impact on your site’s performance, but rather because it’s somehow immune to further analysis. The prevailing attitude amongst digital marketers is that direct traffic is an unavoidable inconvenience; as a result, discussion of direct is typically limited to ways of attributing it to other channels, or side-stepping the issues associated with it.

In this article, we’ll be taking a fresh look at direct traffic in modern Google Analytics. As well as exploring the myriad ways in which referrer data can be lost, we’ll look at some tools and tactics you can start using immediately to reduce levels of direct traffic in your reports. Finally, we’ll discover how advanced analysis and segmentation can unlock the mysteries of direct traffic and shed light on what might actually be your most valuable users.

What is direct traffic?

In short, Google Analytics will report a traffic source of “direct” when it has no data on how the session arrived at your website, or when the referring source has been configured to be ignored. You can think of direct as GA’s fall-back option for when its processing logic has failed to attribute a session to a particular source.

To properly understand the causes and fixes for direct traffic, it’s important to understand exactly how GA processes traffic sources. The following flow-chart illustrates how sessions are bucketed — note that direct sits right at the end as a final “catch-all” group.

Broadly speaking, and disregarding user-configured overrides, GA’s processing follows this sequence of checks:

AdWords parameters > Campaign overrides > UTM campaign parameters > Referred by a search engine > Referred by another website > Previous campaign within timeout period > Direct

Note the penultimate processing step (previous campaign within timeout), which has a significant impact on the direct channel. Consider a user who discovers your site via organic search, then returns via direct a week later. Both sessions would be attributed to organic search. In fact, campaign data persists for up to six months by default. The key point here is that Google Analytics is already trying to minimize the impact of direct traffic for you.

What causes direct traffic?

Contrary to popular belief, there are actually many reasons why a session might be missing campaign and traffic source data. Here we will run through some of the most common.

1. Manual address entry and bookmarks

The classic direct-traffic scenario, this one is largely unavoidable. If a user types a URL into their browser’s address bar or clicks on a browser bookmark, that session will appear as direct traffic.

Simple as that.


When a user follows a link on a secure (HTTPS) page to a non-secure (HTTP) page, no referrer data is passed, meaning the session appears as direct traffic instead of as a referral. Note that this is intended behavior. It’s part of how the secure protocol was designed, and it does not affect other scenarios: HTTP to HTTP, HTTPS to HTTPS, and even HTTP to HTTPS all pass referrer data.

So, if your referral traffic has tanked but direct has spiked, it could be that one of your major referrers has migrated to HTTPS. The inverse is also true: If you’ve migrated to HTTPS and are linking to HTTP websites, the traffic you’re driving to them will appear in their Analytics as direct.

If your referrers have moved to HTTPS and you’re stuck on HTTP, you really ought to consider migrating to HTTPS. Doing so (and updating your backlinks to point to HTTPS URLs) will bring back any referrer data which is being stripped from cross-protocol traffic. SSL certificates can now be obtained for free thanks to automated authorities like LetsEncrypt, but that’s not to say you should neglect to explore the potentially-significant SEO implications of site migrations. Remember, HTTPS and HTTP/2 are the future of the web.

If, on the other hand, you’ve already migrated to HTTPS and are concerned about your users appearing to partner websites as direct traffic, you can implement the meta referrer tag. Cyrus Shepard has written about this on Moz before, so I won’t delve into it now. Suffice to say, it’s a way of telling browsers to pass some referrer data to non-secure sites, and can be implemented as a <meta> element or HTTP header.

3. Missing or broken tracking code

Let’s say you’ve launched a new landing page template and forgotten to include the GA tracking code. Or, to use a scenario I’m encountering more and more frequently, imagine your GTM container is a horrible mess of poorly configured triggers, and your tracking code is simply failing to fire.

Users land on this page without tracking code. They click on a link to a deeper page which does have tracking code. From GA’s perspective, the first hit of the session is the second page visited, meaning that the referrer appears as your own website (i.e. a self-referral). If your domain is on the referral exclusion list (as per default configuration), the session is bucketed as direct. This will happen even if the first URL is tagged with UTM campaign parameters.

As a short-term fix, you can try to repair the damage by simply adding the missing tracking code. To prevent it happening again, carry out a thorough Analytics audit, move to a GTM-based tracking implementation, and promote a culture of data-driven marketing.

4. Improper redirection

This is an easy one. Don’t use meta refreshes or JavaScript-based redirects — these can wipe or replace referrer data, leading to direct traffic in Analytics. You should also be meticulous with your server-side redirects, and — as is often recommended by SEOs — audit your redirect file frequently. Complex chains are more likely to result in a loss of referrer data, and you run the risk of UTM parameters getting stripped out.

Once again, control what you can: use carefully mapped (i.e. non-chained) code 301 server-side redirects to preserve referrer data wherever possible.

5. Non-web documents

Links in Microsoft Word documents, slide decks, or PDFs do not pass referrer information. By default, users who click these links will appear in your reports as direct traffic. Clicks from native mobile apps (particularly those with embedded “in-app” browsers) are similarly prone to stripping out referrer data.

To a degree, this is unavoidable. Much like so-called “dark social” visits (discussed in detail below), non-web links will inevitably result in some quantity of direct traffic. However, you also have an opportunity here to control the controllables.

If you publish whitepapers or offer downloadable PDF guides, for example, you should be tagging the embedded hyperlinks with UTM campaign parameters. You’d never even contemplate launching an email marketing campaign without campaign tracking (I hope), so why would you distribute any other kind of freebie without similarly tracking its success? In some ways this is even more important, since these kinds of downloadables often have a longevity not seen in a single email campaign. Here’s an example of a properly tagged URL which we would embed as a link:


The same goes for URLs in your offline marketing materials. For major campaigns it’s common practice to select a short, memorable URL (e.g. moz.com/tv/) and design an entirely new landing page. It’s possible to bypass page creation altogether: simply redirect the vanity URL to an existing page URL which is properly tagged with UTM parameters.

So, whether you tag your URLs directly, use redirected vanity URLs, or — if you think UTM parameters are ugly — opt for some crazy-ass hash-fragment solution with GTM (read more here), the takeaway is the same: use campaign parameters wherever it’s appropriate to do so.

6. “Dark social”

This is a big one, and probably the least well understood by marketers.

The term “dark social” was first coined back in 2012 by Alexis Madrigal in an article for The Atlantic. Essentially it refers to methods of social sharing which cannot easily be attributed to a particular source, like email, instant messaging, Skype, WhatsApp, and Facebook Messenger.

Recent studies have found that upwards of 80% of consumers’ outbound sharing from publishers’ and marketers’ websites now occurs via these private channels. In terms of numbers of active users, messaging apps are outpacing social networking apps. All the activity driven by these thriving platforms is typically bucketed as direct traffic by web analytics software.

People who use the ambiguous phrase “social media marketing” are typically referring to advertising: you broadcast your message and hope people will listen. Even if you overcome consumer indifference with a well-targeted campaign, any subsequent interactions are affected by their very public nature. The privacy of dark social, by contrast, represents a potential goldmine of intimate, targeted, and relevant interactions with high conversion potential. Nebulous and difficult-to-track though it may be, dark social has the potential to let marketers tap into elusive power of word of mouth.

So, how can we minimize the amount of dark social traffic which is bucketed under direct? The unfortunate truth is that there is no magic bullet: proper attribution of dark social requires rigorous campaign tracking. The optimal approach will vary greatly based on your industry, audience, proposition, and so on. For many websites, however, a good first step is to provide convenient and properly configured sharing buttons for private platforms like email, WhatsApp, and Slack, thereby ensuring that users share URLs appended with UTM parameters (or vanity/shortened URLs which redirect to the same). This will go some way towards shining a light on part of your dark social traffic.

Checklist: Minimizing direct traffic

To summarize what we’ve already discussed, here are the steps you can take to minimize the level of unnecessary direct traffic in your reports:

  1. Migrate to HTTPS: Not only is the secure protocol your gateway to HTTP/2 and the future of the web, it will also have an enormously positive effect on your ability to track referral traffic.
  2. Manage your use of redirects: Avoid chains and eliminate client-side redirection in favour of carefully-mapped, single-hop, server-side 301s. If you use vanity URLs to redirect to pages with UTM parameters, be meticulous.
  3. Get really good at campaign tagging: Even amongst data-driven marketers I encounter the belief that UTM begins and ends with switching on automatic tagging in your email marketing software. Others go to the other extreme, doing silly things like tagging internal links. Control what you can, and your ability to carry out meaningful attribution will markedly improve.
  4. Conduct an Analytics audit: Data integrity is vital, so consider this essential when assessing the success of your marketing. It’s not simply a case of checking for missing track code: good audits involve a review of your measurement plan and rigorous testing at page and property-level.

Adhere to these principles, and it’s often possible to achieve a dramatic reduction in the level of direct traffic reported in Analytics. The following example involved an HTTPS migration, GTM migration (as part of an Analytics review), and an overhaul of internal campaign tracking processes over the course of about 6 months:

But the saga of direct traffic doesn’t end there! Once this channel is “clean” — that is, once you’ve minimized the number of avoidable pollutants — what remains might actually be one of your most valuable traffic segments.

Analyze! Or: why direct traffic can actually be pretty cool

For reasons we’ve already discussed, traffic from bookmarks and dark social is an enormously valuable segment to analyze. These are likely to be some of your most loyal and engaged users, and it’s not uncommon to see a notably higher conversion rate for a clean direct channel compared to the site average. You should make the effort to get to know them.

The number of potential avenues to explore is infinite, but here are some good starting points:

  • Build meaningful custom segments, defining a subset of your direct traffic based on their landing page, location, device, repeat visit or purchase behavior, or even enhanced e-commerce interactions.
  • Track meaningful engagement metrics using modern GTM triggers such as element visibility and native scroll tracking. Measure how your direct users are using and viewing your content.
  • Watch for correlations with your other marketing activities, and use it as an opportunity to refine your tagging practices and segment definitions. Create a custom alert which watches for spikes in direct traffic.
  • Familiarize yourself with flow reports to get an understanding of how your direct traffic is converting. By using Goal Flow and Behavior Flow reports with segmentation, it’s often possible to glean actionable insights which can be applied to the site as a whole.
  • Ask your users for help! If you’ve isolated a valuable segment of traffic which eludes deeper analysis, add a button to the page offering visitors a free downloadable ebook if they tell you how they discovered your page.
  • Start thinking about lifetime value, if you haven’t already — overhauling your attribution model or implementing User ID are good steps towards overcoming the indifference or frustration felt by marketers towards direct traffic.

I hope this guide has been useful. With any luck, you arrived looking for ways to reduce the level of direct traffic in your reports, and left with some new ideas for how to better analyze this valuable segment of users.

Thanks for reading!

Sign up for The Moz Top 10, a semimonthly mailer updating you on the top ten hottest pieces of SEO news, tips, and rad links uncovered by the Moz team. Think of it as your exclusive digest of stuff you don’t have time to hunt down but want to read!

Moz Blog

Posted in IM NewsComments Off

So You Want to Build a Chat Bot – Here’s How (Complete with Code!)

Posted by R0bin_L0rd

You’re busy and (depending on effective keyword targeting) you’ve come here looking for something to shave months off the process of learning to produce your own chat bot. If you’re convinced you need this and just want the how-to, skip to “What my bot does.” If you want the background on why you should be building for platforms like Google Home, Alexa, and Facebook Messenger, read on.

Why should I read this?

Do you remember when it wasn’t necessary to have a website? When most boards would scoff at the value of running a Facebook page? Now Gartner is telling us that customers will manage 85% of their relationship with brands without interacting with a human by 2020 and publications like Forbes are saying that chat bots are the cause.

The situation now is the same as every time a new platform develops: if you don’t have something your customers can access, you’re giving that medium to your competition. At the moment, an automated presence on Google Home or Slack may not be central to your strategy, but those who claim ground now could dominate it in the future.

The problem is time. Sure, it’d be ideal to be everywhere all the time, to have your brand active on every platform. But it would also be ideal to catch at least four hours sleep a night or stop covering our keyboards with three-day-old chili con carne as we eat a hasty lunch in between building two of the Next Big Things. This is where you’re fortunate in two ways;

  1. When we develop chat applications, we don’t have to worry about things like a beautiful user interface because it’s all speech or text. That’s not to say you don’t need to worry about user experience, as there are rules (and an art) to designing a good conversational back-and-forth. Amazon is actually offering some hefty prizes for outstanding examples.
  2. I’ve spent the last six months working through the steps from complete ignorance to creating a distributable chat bot and I’m giving you all my workings. In this post I break down each of the levels of complexity, from no-code back-and-forth to managing user credentials and sessions the stretch over days or months. I’m also including full code that you can adapt and pull apart as needed. I’ve commented each portion of the code explaining what it does and linking to resources where necessary.

I’ve written more about the value of Interactive Personal Assistants on the Distilled blog, so this post won’t spend any longer focusing on why you should develop chat bots. Instead, I’ll share everything I’ve learned.

What my built-from-scratch bot does

Ever since I started investigating chat bots, I was particularly interested in finding out the answer to one question: What does it take for someone with little-to-no programming experience to create one of these chat applications from scratch? Fortunately, I have direct access to someone with little-to-no experience (before February, I had no idea what Python was). And so I set about designing my own bot with the following hard conditions:

  1. It had to have some kind of real-world application. It didn’t have to be critical to a business, but it did have to bear basic user needs in mind.
  2. It had to be easily distributable across the immediate intended users, and to have reasonable scope to distribute further (modifications at most, rather than a complete rewrite).
  3. It had to be flexible enough that you, the reader, can take some free code and make your own chat bot.
  4. It had to be possible to adapt the skeleton of the process for much more complex business cases.
  5. It had to be free to run, but could have the option of paying to scale up or make life easier.
  6. It had to send messages confirming when important steps had been completed.

The resulting program is “Vietnambot,” a program that communicates with Slack, the API.AI linguistic processing platform, and Google Sheets, using real-time and asynchronous processing and its own database for storing user credentials.

If that meant nothing to you, don’t worry — I’ll define those things in a bit, and the code I’m providing is obsessively commented with explanation. The thing to remember is it does all of this to write down food orders for our favorite Vietnamese restaurant in a shared Google Sheet, probably saving tens of seconds of Distilled company time every year.

It’s deliberately mundane, but it’s designed to be a template for far more complex interactions. The idea is that whether you want to write a no-code-needed back-and-forth just through API.AI; a simple Python program that receives information, does a thing, and sends a response; or something that breaks out of the limitations of linguistic processing platforms to perform complex interactions in user sessions that can last days, this post should give you some of the puzzle pieces and point you to others.

What is API.AI and what’s it used for?

API.AI is a linguistic processing interface. It can receive text, or speech converted to text, and perform much of the comprehension for you. You can see my Distilled post for more details, but essentially, it takes the phrase “My name is Robin and I want noodles today” and splits it up into components like:

  • Intent: food_request
  • Action: process_food
  • Name: Robin
  • Food: noodles
  • Time: today

This setup means you have some hope of responding to the hundreds of thousands of ways your users could find to say the same thing. It’s your choice whether API.AI receives a message and responds to the user right away, or whether it receives a message from a user, categorizes it and sends it to your application, then waits for your application to respond before sending your application’s response back to the user who made the original request. In its simplest form, the platform has a bunch of one-click integrations and requires absolutely no code.

I’ve listed the possible levels of complexity below, but it’s worth bearing some hard limitations in mind which apply to most of these services. They cannot remember anything outside of a user session, which will automatically end after about 30 minutes, they have to do everything through what are called POST and GET requests (something you can ignore unless you’re using code), and if you do choose to have it ask your application for information before it responds to the user, you have to do everything and respond within five seconds.

What are the other things?

Slack: A text-based messaging platform designed for work (or for distracting people from work).

Google Sheets: We all know this, but just in case, it’s Excel online.

Asynchronous processing: Most of the time, one program can do one thing at a time. Even if it asks another program to do something, it normally just stops and waits for the response. Asynchronous processing is how we ask a question and continue without waiting for the answer, possibly retrieving that answer at a later time.

Database: Again, it’s likely you know this, but if not: it’s Excel that our code will use (different from the Google Sheet).

Heroku: A platform for running code online. (Important to note: I don’t work for Heroku and haven’t been paid by them. I couldn’t say that it’s the best platform, but it can be free and, as of now, it’s the one I’m most familiar with).

How easy is it?

This graph isn’t terribly scientific and it’s from the perspective of someone who’s learning much of this for the first time, so here’s an approximate breakdown:



Time it took me


You set up the conversation purely through API.AI or similar, no external code needed. For instance, answering set questions about contact details or opening times

Half an hour to distributable prototype


A program that receives information from API.AI and uses that information to update the correct cells in a Google Sheet (but can’t remember user names and can’t use the slower Google Sheets integrations)

A few weeks to distributable prototype


A program that remembers user names once they’ve been set and writes them to Google Sheets. Is limited to five seconds processing time by API.AI, so can’t use the slower Google Sheets integrations and may not work reliably when the app has to boot up from sleep because that takes a few seconds of your allocation*

A few weeks on top of the last prototype


A program that remembers user details and manages the connection between API.AI and our chosen platform (in this case, Slack) so it can break out of the five-second processing window.

A few weeks more on top of the last prototype (not including the time needed to rewrite existing structures to work with this)

*On the Heroku free plan, when your app hasn’t been used for 30 minutes it goes to sleep. This means that the first time it’s activated it takes a little while to start your process, which can be a problem if you have a short window in which to act. You could get around this by (mis)using a free “uptime monitoring service” which sends a request every so often to keep your app awake. If you choose this method, in order to avoid using all of the Heroku free hours allocation by the end of the month, you’ll need to register your card (no charge, it just gets you extra hours) and only run this application on the account. Alternatively, there are any number of companies happy to take your money to keep your app alive.

For the rest of this post, I’m going to break down each of those key steps and either give an overview of how you could achieve it, or point you in the direction of where you can find that. The code I’m giving you is Python, but as long as you can receive and respond to GET and POST requests, you can do it in pretty much whatever format you wish.

1. Design your conversation

Conversational flow is an art form in itself. Jonathan Seal, strategy director at Mando and member of British Interactive Media Association’s AI thinktank, has given some great talks on the topic. Paul Pangaro has also spoken about conversation as more than interface in multiple mediums.

Your first step is to create a flow chart of the conversation. Write out your ideal conversation, then write out the most likely ways a person might go off track and how you’d deal with them. Then go online, find existing chat bots and do everything you can to break them. Write out the most difficult, obtuse, and nonsensical responses you can. Interact with them like you’re six glasses of wine in and trying to order a lemon engraving kit, interact with them as though you’ve found charges on your card for a lemon engraver you definitely didn’t buy and you are livid, interact with them like you’re a bored teenager. At every point, write down what you tried to do to break them and what the response was, then apply that to your flow. Then get someone else to try to break your flow. Give them no information whatsoever apart from the responses you’ve written down (not even what the bot is designed for), refuse to answer any input you don’t have written down, and see how it goes. David Low, principal evangelist for Amazon Alexa, often describes the value of printing out a script and testing the back-and-forth for a conversation. As well as helping to avoid gaps, it’ll also show you where you’re dumping a huge amount of information on the user.

While “best practices” are still developing for chat bots, a common theme is that it’s not a good idea to pretend your bot is a person. Be upfront that it’s a bot — users will find out anyway. Likewise, it’s incredibly frustrating to open a chat and have no idea what to say. On text platforms, start with a welcome message making it clear you’re a bot and giving examples of things you can do. On platforms like Google Home and Amazon Alexa users will expect a program, but the “things I can do” bit is still important enough that your bot won’t be approved without this opening phase.

I’ve included a sample conversational flow for Vietnambot at the end of this post as one way to approach it, although if you have ideas for alternative conversational structures I’d be interested in reading them in the comments.

A final piece of advice on conversations: The trick here is to find organic ways of controlling the possible inputs and preparing for unexpected inputs. That being said, the Alexa evangelist team provide an example of terrible user experience in which a bank’s app said: “If you want to continue, say nine.” Quite often questions, rather than instructions, are the key.

2. Create a conversation in API.AI

API.AI has quite a lot of documentation explaining how to create programs here, so I won’t go over individual steps.

Key things to understand:

You create agents; each is basically a different program. Agents recognize intents, which are simply ways of triggering a specific response. If someone says the right things at the right time, they meet criteria you have set, fall into an intent, and get a pre-set response.

The right things to say are included in the “User says” section (screenshot below). You set either exact phrases or lists of options as the necessary input. For instance, a user could write “Of course, I’m [any name]” or “Of course, I’m [any temperature].” You could set up one intent for name-is which matches “Of course, I’m [given-name]” and another intent for temperature which matches “Of course, I’m [temperature],” and depending on whether your user writes a name or temperature in that final block you could activate either the “name-is” or “temperature-is” intent.

The “right time” is defined by contexts. Contexts help define whether an intent will be activated, but are also created by certain intents. I’ve included a screenshot below of an example interaction. In this example, the user says that they would like to go to on holiday. This activates a holiday intent and sets the holiday context you can see in input contexts below. After that, our service will have automatically responded with the question “where would you like to go?” When our user says “The” and then any location, it activates our holiday location intent because it matches both the context, and what the user says. If, on the other hand, the user had initially said “I want to go to the theater,” that might have activated the theater intent which would set a theater context — so when we ask “what area of theaters are you interested in?” and the user says “The [location]” or even just “[location],” we will take them down a completely different path of suggesting theaters rather than hotels in Rome.

The way you can create conversations without ever using external code is by using these contexts. A user might say “What times are you open?”; you could set an open-time-inquiry context. In your response, you could give the times and ask if they want the phone number to contact you. You would then make a yes/no intent which matches the context you have set, so if your user says “Yes” you respond with the number. This could be set up within an hour but gets exponentially more complex when you need to respond to specific parts of the message. For instance, if you have different shop locations and want to give the right phone number without having to write out every possible location they could say in API.AI, you’ll need to integrate with external code (see section three).

Now, there will be times when your users don’t say what you’re expecting. Excluding contexts, there are three very important ways to deal with that:

  1. Almost like keyword research — plan out as many possible variations of saying the same thing as possible, and put them all into the intent
  2. Test, test, test, test, test, test, test, test, test, test, test, test, test, test, test (when launched, every chat bot will have problems. Keep testing, keep updating, keep improving.)
  3. Fallback contexts

Fallback contexts don’t have a user says section, but can be boxed in by contexts. They match anything that has the right context but doesn’t match any of your user says. It could be tempting to use fallback intents as a catch-all. Reasoning along the lines of “This is the only thing they’ll say, so we’ll just treat it the same” is understandable, but it opens up a massive hole in the process. Fallback intents are designed to be a conversational safety net. They operate exactly the same as in a normal conversation. If a person asked what you want in your tea and you responded “I don’t want tea” and that person made a cup of tea, wrote the words “I don’t want tea” on a piece of paper, and put it in, that is not a person you’d want to interact with again. If we are using fallback intents to do anything, we need to preface it with a check. If we had to resort to it in the example above, saying “I think you asked me to add I don’t want tea to your tea. Is that right?” is clunky and robotic, but it’s a big step forward, and you can travel the rest of the way by perfecting other parts of your conversation.

3. Integrating with external code

I used Heroku to build my app . Using this excellent weather webhook example you can actually deploy a bot to Heroku within minutes. I found this example particularly useful as something I could pick apart to make my own call and response program. The weather webhook takes the information and calls a yahoo app, but ignoring that specific functionality you essentially need the following if you’re working in Python:

    req = request.get_json
    print(json.dumps(req, indent=4))
#process to do your thing and decide what response should be

    res = processRequest(req)
# Response we should receive from processRequest (you’ll need to write some code called processRequest and make it return the below, the weather webhook example above is a good one).
        "speech": “speech we want to send back”,
        "displayText": “display text we want to send back, usually matches speech”,
        "source": "your app name"

# Making our response readable by API.AI and sending it back to the servic

 response = make_response(res)
    response.headers['Content-Type'] = 'application/json'
    return response
# End

As long as you can receive and respond to requests like that (or in the equivalent for languages other than Python), your app and API.AI should both understand each other perfectly — what you do in the interim to change the world or make your response is entirely up to you. The main code I have included is a little different from this because it’s also designed to be the step in-between Slack and API.AI. However, I have heavily commented sections like like process_food and the database interaction processes, with both explanation and reading sources. Those comments should help you make it your own. If you want to repurpose my program to work within that five-second window, I would forget about the file called app.py and aim to copy whole processes from tasks.py, paste them into a program based on the weatherhook example above, and go from there.

Initially I’d recommend trying GSpread to make some changes to a test spreadsheet. That way you’ll get visible feedback on how well your application is running (you’ll need to go through the authorization steps as they are explained here).

4. Using a database

Databases are pretty easy to set up in Heroku. I chose the Postgres add-on (you just need to authenticate your account with a card; it won’t charge you anything and then you just click to install). In the import section of my code I’ve included links to useful resources which helped me figure out how to get the database up and running — for example, this blog post.

I used the Python library Psycopg2 to interact with the database. To steal some examples of using it in code, have a look at the section entitled “synchronous functions” in either the app.py or tasks.py files. Open_db_connection and close_db_connection do exactly what they say on the tin (open and close the connection with the database). You tell check_database to check a specific column for a specific user and it gives you the value, while update_columns adds a value to specified columns for a certain user record. Where things haven’t worked straightaway, I’ve included links to the pages where I found my solution. One thing to bear in mind is that I’ve used a way of including columns as a variable, which Psycopg2 recommends quite strongly against. I’ve gotten away with it so far because I’m always writing out the specific column names elsewhere — I’m just using that method as a short cut.

5. Processing outside of API.AI’s five-second window

It needs to be said that this step complicates things by no small amount. It also makes it harder to integrate with different applications. Rather than flicking a switch to roll out through API.AI, you have to write the code that interprets authentication and user-specific messages for each platform you’re integrating with. What’s more, spoken-only platforms like Google Home and Amazon Alexa don’t allow for this kind of circumvention of the rules — you have to sit within that 5–8 second window, so this method removes those options. The only reasons you should need to take the integration away from API.AI are:

  • You want to use it to work with a platform that it doesn’t have an integration with. It currently has 14 integrations including Facebook Messenger, Twitter, Slack, and Google Home. It also allows exporting your conversations in an Amazon Alexa-understandable format (Amazon has their own similar interface and a bunch of instructions on how to build a skill — here is an example.
  • You are processing masses of information. I’m talking really large amounts. Some flight comparison sites have had problems fitting within the timeout limit of these platforms, but if you aren’t trying to process every detail for every flight for the next 12 months and it’s taking more than five seconds, it’s probably going to be easier to make your code more efficient than work outside the window. Even if you are, those same flight comparison sites solved the problem by creating a process that regularly checks their full data set and creates a smaller pool of information that’s more quickly accessible.
  • You need to send multiple follow-up messages to your user. When using the API.AI integration it’s pretty much call-and-response; you don’t always get access to things like authorization tokens, which are what some messaging platforms require before you can automatically send messages to one of their users.
  • You’re working with another program that can be quite slow, or there are technical limitations to your setup. This one applies to Vietnambot, I used the GSpread library in my application, which is fantastic but can be slow to pull out bigger chunks of data. What’s more, Heroku can take a little while to start up if you’re not paying.

I could have paid or cut out some of the functionality to avoid needing to manage this part of the process, but that would have failed to meet number 4 in our original conditions: It had to be possible to adapt the skeleton of the process for much more complex business cases. If you decide you’d rather use my program within that five-second window, skip back to section 2 of this post. Otherwise, keep reading.

When we break out of the five-second API.AI window, we have to do a couple of things. First thing is to flip the process on its head.

What we were doing before:

User sends message -> API.AI -> our process -> API.AI -> user

What we need to do now:

User sends message -> our process -> API.AI -> our process -> user

Instead of API.AI waiting while we do our processing, we do some processing, wait for API.AI to categorize the message from us, do a bit more processing, then message the user.

The way this applies to Vietnambot is:

  1. User says “I want [food]”
  2. Slack sends a message to my app on Heroku
  3. My app sends a “swift and confident” 200 response to Slack to prevent it from resending the message. To send the response, my process has to shut down, so before it does that, it activates a secondary process using “tasks.”
  4. The secondary process takes the query text and sends it to API.AI, then gets back the response.
  5. The secondary process checks our database for a user name. If we don’t have one saved, it sends another request to API.AI, putting it in the “we don’t have a name” context, and sends a message to our user asking for their name. That way, when our user responds with their name, API.AI is already primed to interpret it correctly because we’ve set the right context (see section 1 of this post). API.AI tells us that the latest message is a user name and we save it. When we have both the user name and food (whether we’ve just got it from the database or just saved it to the database), Vietnambot adds the order to our sheet, calculates whether we’ve reached the order minimum for that day, and sends a final success message.

6. Integrating with Slack

This won’t be the same as integrating with other messaging services, but it could give some insight into what might be required elsewhere. Slack has two authorization processes; we’ll call one “challenge” and the other “authentication.”

Slack includes instructions for an app lifecycle here, but API.AI actually has excellent instructions for how to set up your app; as a first step, create a simple back-and-forth conversation in API.AI (not your full product), go to integrations, switch on Slack, and run through the steps to set it up. Once that is up and working, you’ll need to change the OAuth URL and the Events URL to be the URL for your app.

Thanks to github user karishay, my app code includes a process for responding to the challenge process (which will tell Slack you’re set up to receive events) and for running through the authentication process, using our established database to save important user tokens. There’s also the option to save them to a Google Sheet if you haven’t got the database established yet. However, be wary of this as anything other than a first step — user tokens give an app a lot of power and have to be guarded carefully.

7. Asynchronous processing

We are running our app using Flask, which is basically a whole bunch of code we can call upon to deal with things like receiving requests for information over the internet. In order to create a secondary worker process I’ve used Redis and Celery. Redis is our “message broker”; it makes makes a list of everything we want our secondary process to do. Celery runs through that list and makes our worker process do those tasks in sequence. Redis is a note left on the fridge telling you to do your washing and take out the bins, while Celery is the housemate that bangs on your bedroom door, note in hand, and makes you do each thing. I’m sure our worker process doesn’t like Celery very much, but it’s really useful for us.

You can find instructions for adding Redis to your app in Heroku here and you can find advice on setting up Celery in Heroku here. Miguel Grinberg’s Using Celery with Flask blog post is also an excellent resource, but using the exact setup he gives results in a clash with our database, so it’s easier to stick with the Heroku version.

Up until this point, we’ve been calling functions in our main app — anything of the form function_name(argument_1, argument_2, argument_3). Now, by putting “tasks.” in front of our function, we’re saying “don’t do this now — hand it to the secondary process.” That’s because we’ve done a few things:

  • We’ve created tasks.py which is the secondary process. Basically it’s just one big, long function that our main code tells to run.
  • In tasks.py we’ve included Celery in our imports and set our app as celery.Celery(), meaning that when we use “app” later we’re essentially saying “this is part of our Celery jobs list” or rather “tasks.py will only do anything when its flatmate Celery comes banging on the door”
  • For every time our main process asks for an asynchronous function by writing tasks.any_function_name(), we have created that function in our secondary program just as we would if it were in the same file. However in our secondary program we’ve prefaced with “@app.task”, another way of saying “Do wash_the_dishes when Celery comes banging the door yelling wash_the_dishes(dishes, water, heat, resentment)”.
  • In our “procfile” (included as a file in my code) we have listed our worker process as –app=tasks.app

All this adds up to the following process:

  1. Main program runs until it hits an asynchronous function
  2. Main program fires off a message to Redis which has a list of work to be done. The main process doesn’t wait, it just runs through everything after it and in our case even shuts down
  3. The Celery part of our worker program goes to Redis and checks for the latest update, it checks what function has been called (because our worker functions are named the same as when our main process called them), it gives our worker all the information to start doing that thing and tells it to get going
  4. Our worker process starts the action it has been told to do, then shuts down.

As with the other topics mentioned here, I’ve included all of this in the code I’ve supplied, along with many of the sources used to gather the information — so feel free to use the processes I have. Also feel free to improve on them; as I said, the value of this investigation was that I am not a coder. Any suggestions for tweaks or improvements to the code are very much welcome.


As I mentioned in the introduction to this post, there’s huge opportunity for individuals and organizations to gain ground by creating conversational interactions for the general public. For the vast majority of cases you could be up and running in a few hours to a few days, depending on how complex you want your interactions to be and how comfortable you are with coding languages. There are some stumbling blocks out there, but hopefully this post and my obsessively annotated code can act as templates and signposts to help get you on your way.

Grab my code at GitHub

Bonus #1: The conversational flow for my chat bot

This is by no means necessarily the best or only way to approach this interaction. This is designed to be as streamlined an interaction as possible, but we’re also working within the restrictions of the platform and the time investment necessary to produce this. Common wisdom is to create the flow of your conversation and then keep testing to perfect, so consider this example layout a step in that process. I’d also recommend putting one of these flow charts together before starting — otherwise you could find yourself having to redo a bunch of work to accommodate a better back-and-forth.

Bonus #2: General things I learned putting this together

As I mentioned above, this has been a project of going from complete ignorance of coding to slightly less ignorance. I am not a professional coder, but I found the following things I picked up to be hugely useful while I was starting out.

  1. Comment everything. You’ll probably see my code is bordering on excessive commenting (anything after a # is a comment). While normally I’m sure someone wouldn’t want to include a bunch of Stack Overflow links in their code, I found notes about what things portions of code were trying to do, and where I got the reasoning from, hugely helpful as I tried to wrap my head around it all.
  2. Print everything. In Python, everything within “print()” will be printed out in the app logs (see the commands tip for reading them in Heroku). While printing each action can mean you fill up a logging window terribly quickly (I started using the Heroku add-on LogDNA towards the end and it’s a huge step up in terms of ease of reading and length of history), often the times my app was falling over was because one specific function wasn’t getting what it needed, or because of another stupid typo. Having a semi-constant stream of actions and outputs logged meant I could find the fault much more quickly. My next step would probably be to introduce a way of easily switching on and off the less necessary print functions.
  3. The following commands: Heroku’s how-to documentation for creating an app and adding code is pretty great, but I found myself using these all the time so thought I’d share (all of the below are written in the command line; type cmd in on Windows or by running Terminal on a Mac):
    1. CD “””[file location]””” - select the file your code is in
    2. “git init” – create a git file to add to
    3. “git add .” – add all of the code in your file into the file that git will put online
    4. “git commit -m “[description of what you’re doing]” “ - save the data in your git file
    5. “heroku git:remote -a [the name of your app]” – select your app as where to put the code
    6. “git push heroku master” - send your code to the app you selected
    7. “heroku ps” – find out whether your app is running or crashed
    8. “heroku logs” – apologize to your other half for going totally unresponsive for the last ten minutes and start the process of working through your printouts to see what has gone wrong
  4. POST requests will always wait for a response. Seems really basic — initially I thought that by just sending a POST request and not telling my application to wait for a response I’d be able to basically hot-potato work around and not worry about having to finish what I was doing. That’s not how it works in general, and it’s more of a symbol of my naivete in programming than anything else.
  5. If something is really difficult, it’s very likely you’re doing it wrong.
    While I made sure to do pretty much all of the actual work myself (to
    avoid simply farming it out to the very talented individuals at
    Distilled), I was lucky enough to get some really valuable advice. The
    piece of advice above was from Dominic Woodman, and I should have
    listened to it more. The times when I made least progress were when I
    was trying to use things the way they shouldn’t be used. Even when I
    broke through those walls, I later found that someone didn’t want me to
    use it that way because it would completely fail at a later point.
    Tactical retreat
    is an option. (At this point, I should mention he wasn’t
    the only one to give invaluable advice; Austin, Tom, and Duncan of the
    Distilled R&D team were a huge help.)

Sign up for The Moz Top 10, a semimonthly mailer updating you on the top ten hottest pieces of SEO news, tips, and rad links uncovered by the Moz team. Think of it as your exclusive digest of stuff you don’t have time to hunt down but want to read!

Moz Blog

Posted in IM NewsComments Off

The complete guide to optimizing content for SEO (with checklist)

Google has stated that “content” is among its top three ranking factors, but what makes content “good” from an SEO perspective? Columnist Nate Dame outlines what makes high-quality SEO content.

The post The complete guide to optimizing content for SEO (with checklist) appeared first on Search…

Please visit Search Engine Land for the full article.

Search Engine Land: News & Info About SEO, PPC, SEM, Search Engines & Search Marketing

Posted in IM NewsComments Off

See the complete agenda for MarTech Europe

Technology-powered marketing, or “modern” marketing, is reshaping organisations’ processes and operations, managerial hierarchies, and enabling us to reinvent the customer journey. Large enterprise websites typically have 75 technologies in their martech stacks, according to a recent study. What’s…

Please visit Search Engine Land for the full article.

Search Engine Land: News & Info About SEO, PPC, SEM, Search Engines & Search Marketing

Posted in IM NewsComments Off

The Complete Guide to Creating On-Site Reviews+Testimonials Pages

Posted by MiriamEllis

“Show your site’s credibility by using original research, citations, links, reviews and testimonials. An author biography or testimonials from real customers can help boost your site’s trustworthiness and reputation.”Google Search Console Course

2017 may well be the year of testimonials and reviews in local SEO. As our industry continues to grow, we have studied surveys indicating that some 92% of consumers now read online reviews and that 68% of these cite positive reviews as a significant trust factor. We’ve gone through a meaningful overhaul of Google’s schema review/testimonial guidelines while finding that major players like Yelp will publicly shame guideline-breakers. We’ve seen a major publication post a controversial piece suggesting that website testimonials pages are useless, drawing thoughtful industry rebuttals illustrating why well-crafted testimonials pages are, in fact, vitally useful in a variety of ways.

Reviews can impact your local pack rankings, testimonials can win you in-SERP stars, and if that isn’t convincing enough, the above quote states unequivocally that both reviews and testimonials on your website can boost Google’s perception of a local business’ trustworthiness and reputation. That sounds awfully good! Yet, seldom a day goes by that I don’t encounter websites that are neither encouraging reviews nor showcasing testimonials.

If you are marketing local enterprises that play to win, chances are you’ve been studying third-party review management for some years now. Not much has been written about on-site consumer feedback, though. What belongs on a company’s own testimonials/reviews page? How should you structure one? What are the benefits you might expect from the effort? Today, we’re going to get serious about the central role of consumer sentiment and learn to maximize its potential to influence and convert customers.

Up next to help you in the work ahead: technical specifics, expert tips, and a consumer feedback page mockup.

Definitions and differentiations

Traditional reviews: Direct from customers on third-party sites

In the local SEO industry, when you hear someone talking about “reviews,” they typically mean sentiment left directly by customers on third-party platforms, like this review on TripAdvisor:


Traditional testimonials: Moderated by owners on company site

By contrast, testimonials have traditionally meant user sentiment gathered by a business and posted on the company website on behalf of customers, like this snippet from a bed-and-breakfast site:


Review content has historically been outside of owners’ control, while testimonial content has been subject to the editorial control of the business owner. Reviews have historically featured ratings, user profiles, images, owner responses, and other features while testimonials might just be a snippet of text with little verifiable information identifying the author. Reviews have typically been cited as more trustworthy because they are supposedly unmoderated, while testimonials have sometimes been criticized as creating a positive-only picture of the business managing them.

Hybrid sentiment: Review+testimonial functionality on company site

Things are changing! More sophisticated local businesses are now employing technologies that blur the lines between reviews and testimonials. Website-based applications can enable users to leave reviews directly on-site, they can contain star ratings, avatars, and even owner responses, like this:

In other words, you have many options when it comes to managing user sentiment, but to make sure the effort you put in yields maximum benefits, you’ve got to:

  1. Know the guidelines and technology
  2. Have a clear goal and a clear plan for achieving it
  3. Commit to making a sustained effort

There is a ton of great content out there about managing your reviews on third-party platforms like Yelp, Google, Facebook, etc., but today we’re focusing specifically on your on-site reviews/testimonials page. What belongs on that page? How should you populate and organize its content? What benefits might you expect from the investment? To answer those questions, let’s create a goal-drive plan, with help from some world-class Local SEOs.

Guidelines & technology

There are two types of guidelines you need to know in the consumer sentiment space:

1) Platform policies

Because your website’s consumer feedback page may feature a combination of unique reviews and testimonials you directly source, widgets featuring third-party review streams, and links or badges either showcasing third-party reviews or asking for them, you need to know the policies of each platform you plan to feature.

Why does this matter? Since different platforms have policies that range from lax to strict, you want to be sure you’re making the most of each one’s permissions without raising any red flags. Google, for example, has historically been fine with companies asking consumers for reviews, while Yelp’s policy is more stringent and complex.

Here are some quick links to the policies of a few of the major review platforms, to which you’ll want to add your own research for sites that are specific to your industry and/or geography:

2) Google’s review schema guidelines

Google has been a dominant player in local for so long that their policies often tend to set general industry standards. In addition to the Google review policy I’ve linked to above, Google has a completely separate set of review schema guidelines, which recently underwent a significant update. The update included clarifications about critic reviews and review snippets, but most germane to today’s topic, Google offered the following guidelines surrounding testimonial/review content you may wish to publish and mark up with schema on your website:

Google may display information from aggregate ratings markup in the Google Knowledge Cards. The following guidelines apply to review snippets in knowledge cards for local businesses:

- Ratings must be sourced directly from users.
- Don’t rely on human editors to create, curate or compile ratings information for local businesses. These types of reviews are critic reviews.
- Sites must collect ratings information directly from users and not from other sites.

In sum, if you want to mark up consumer feedback with schema on your website, it should be unique to your website — not drawn from any other source. But to enjoy the rewards of winning eye-catching in-SERP star ratings or of becoming a “reviews from the web” source in Google’s knowledge panels, you’ve got to know how to implement schema correctly. Let’s do this right and call on a schema expert to steer our course.

Get friendly with review schema technology.


The local SEO industry has come to know David Deering and his company TouchPoint Digital Marketing as go-to resources for the implementation of complex schema and JSON-LD markup. I’m very grateful to him for his willingness to share some of the basics with us.

Here on the Moz blog, I always strive to highlight high quality, free resources, but in this case, free may not get the job done. I asked David if he could recommend any really good free review schema plugins, and learned a lot from his answer:

Boy, that’s a tough one because I don’t use any plugins or tools to do the markup work. I find that none of them do a good job at adding markup to a page. Some come close, but the plugin files still need to be edited in order for everything to be correct and properly nested. So I tend to hard-code the templates that would control the insertion of reviews onto a page. But I can tell you that GetFiveStars does a pretty good job at marking up reviews and ratings and adding them to a site. There might be others, too, but I just don’t have any personal experience using them, unfortunately.

It sounds like, at present, best bets are going to be to go with a paid service or roll up your sleeves to dig into schema hard coding. *If anyone in our community has discovered a plugin or widget that meets the standards David has cited, please definitely share it in the comments, but in the meantime, let’s take a look at the example David kindly provided of perfect markup. He notes,

“The following example is rather simple and straightforward but it contains everything that a review markup should. (The example also assumes that the review markup is nested within the markup of the business that’s being reviewed):”

"review": {
    "@type": "Review",
    "author": {
        "@type": "Person",
        "name": "Reviewer's Name",
        "sameAs": "<a href="http://link-to-persons-profile-page.com">http://link-to-persons-profile-page.com</a>"
    "datePublished": "2016-09-23",
    "reviewBody": "Reviewer's comments here...",
    "reviewRating": {
        "@type": "Rating"
        "worstRating": "1",
        "bestRating": "5",
        "ratingValue": "5"

This is a good day to check to see if your schema is as clean and thorough as David’s, and also to consider the benefits of JSON-LD markup, which he describes this way:

“JSON-LD is simply another syntax or method that can be used to insert structured data markup onto a page. Once the markup is created, you can simply insert it into the head section of the page. So it’s easy to use in that sense. And Google has stated their preference for JSON-LD, so it’s a good idea to make the switch from microdata if a person hasn’t already.”

There are some do’s and don’ts when it comes to schema + reviews

I asked David if he could share some expert review-oriented tips and he replied,

Well, in typical fashion, Google has been fickle with their rich snippet guidelines. They didn’t allow the marking up of third-party reviews, then they did, now they don’t again. So, I think it would be a good idea for businesses to begin collecting reviews directly from their customers through their site or through email. Of course, I would not suggest neglecting the other online review sources because those are important, too. But when it comes to Google and rich snippets, don’t put all of your eggs (and hopes) in one basket.

*As a rule, the reviews should be directly about the main entity on the page. So keep reviews about the business, products, services, etc. separate — don’t combine them because that goes against Google’s rich snippet guidelines.”

And any warnings about things we should never do with schema? David says,

“Never mark up anything that is not visible on the page, including reviews, ratings and aggregate ratings. Only use review markup for the entities that Google allows it to be used for. For example, the review and rating markup should not be used for articles or on-page content. That goes against Google’s guidelines. And as of this writing, it’s also against their guidelines to mark up third-party reviews and ratings such as those found on Google+ or Yelp.

Ready to dig deeper into the engrossing world of schema markup with David Deering? I highly recommend this recent LocalU video. If the work involved makes you dizzy, hiring an expert or purchasing a paid service are likely to be worthwhile investments. Now that we’ve considered our technical options, let’s consider what we’d like to achieve.

Define your consumer feedback page goals.


If I could pick just one consultant to get advice from concerning the potential benefits of local consumer feedback, it would be GetFiveStars’ co-founder and renowned local SEO, Mike Blumenthal.

Before we dive in with Mike, I want to offer one important clarification:

If you’re marketing a single-location business, you’ll typically be creating just one consumer feedback page on your website to represent it, but if yours is a multi-location business, you’ll want to take the advice in this article and apply it to each city landing page on your website, including unique user sentiment for each location. For more on this concept, see Joy Hawkins’ article How to Solve Duplicate Content Local SEO Issues for Multi-Location Businesses.

Now let’s set some goals for what a consumer feedback page can achieve. Mike breaks this down into two sections:

1. Customer-focused

  • Create an effective page that ranks highly for your brand so that it becomes a doorway page from Google.
  • Make sure that the page is easily accessible from your selling pages with appropriately embedded reviews and links so that it can help sell sitewide.

2. Google-focused

  • Get the page ranking well on brand and brand+review searches
  • Ideally, get designated with review stars
  • Optimally, have it show in the knowledge panel as a source for reviews from the web

This screenshot illustrates these last three points perfectly:


Time on page may make you a believer!

Getting excited about consumer feedback pages, yet? There’s more! Check out this screenshot from one of Mike’s showcase clients, the lovely Barbara Oliver Jewelry in Williamsville, NY, and pay special attention to the average time spent on http://barbaraoliverandco.com/reviews-testimonials/:


When customers are spending 3+ minutes on any page of a local business website, you can feel quite confident that they are really engaging with the business. Mike says,

“For Barbara, this is an incredibly important page. It reflects almost 9% of her overall page visits and represents almost 5% of the landing pages from the search engines. Time on the page for new visitors is 4 minutes with an average of over 3 minutes. This page had review snippets until she recently updated her site — hopefully they will return. It’s an incredibly important page for her.”

Transparency helps much more than it hurts.

The jewelry store utilizes GetFiveStars technology, and represents a perfect chance to ask Mike about a few of the finer details of what belongs on consumer feedback pages. I had noticed that GetFiveStars gives editorial control to owners over which reviews go live, and wanted to get Mike’s personal take on transparency and authenticity. He says,

“I strongly encourage business owners to show all feedback. I think transparency in reviews is critical for customer trust and we find that showing all legitimate feedback results in less than a half-point decline in star ratings on average.

That being said, I also recommend that 1) the negative feedback be held back for 7 to 10 days to allow for complaint resolution before publishing and 2) that the content meet basic terms of service and appropriateness that should be defined by each business. Obviously you don’t want your own review site to become a mosh pit, so some standards are appropriate.

I am more concerned about users than bots. I think that a clear statement of your terms of service and your standards for handling these comments should be visible to all visitors. Trust is the critical factor. Barbara Oliver doesn’t yet have that but only because she has recently updated her site. It’s something that will be added shortly.

Respond to on-page reviews just as you would on third-party platforms.

I’d also noticed something that struck me as uncommon on Barbara Oliver Jewelry’s consumer feedback page: she responds to her on-page reviews, just as she would on third-party review platforms. Mike explains:

“In the ‘old’ days of reviews, I always thought that owner responses to positive reviews were a sort of glad handing … I mean how many times can you say ‘thank you’? But as I researched the issue it became clear that a very large minority of users (40%) noted that if they took the time to leave feedback or a review, then the owner should acknowledge it. That research convinced me to push for the feature in GetFiveStars. With GetFiveStars, the owner is actually prompted to provide either a private or public response. The reviewer receives an email with the response as well. This works great for both happy and unhappy outcomes and serves double-duty as a basis for complaint management on the unhappy side.

You can see the evolution of my thinking in these two articles

What I used to think: Should A Business Respond to Every Positive Review?

What I think after asking consumers their thoughts: Should A Business Respond to Every Positive Review? Here’s The Consumer View.

Reviews on your mind, all the time

So, basically, consumers have taught Mike (and now all of us!) that reasonable goals for reviews/testimonials pages include earning stars, becoming a knowledge panel review source, and winning a great average time on page, in addition to the fact that transparency and responsiveness are rewarded. Before he zooms off to his next local SEO rescue, I wanted to ask Mike if anything new is exciting him in this area of marketing. Waving goodbye, he shouts:

Sheesh … I spend all day, every day thinking about these sorts of things. I mean my motto used to be ‘All Local, All the Time’… now it’s just ‘All Reviews, All the Time.’

I think that this content that is generated by the business owner, from known clients, has incredible import in all aspects of their marketing. It is great for social proof, great user-generated content, customer relations, and much more. We are currently ‘plotting’ new and valuable ways for businesses to use this content effectively and easily.

I’m experimenting right now with another client, Kaplan Insurance, to see exactly what it takes to get rich snippets these days.”

I know I’ll be on the lookout for a new case study from Mike on that topic!

Plan out the components of your consumer feedback page


Phil Rozek of Local Visibility System is one of the most sophisticated, generous bloggers I know in the local SEO industry. You’ll become an instant fan of his, too, once you’ve saved yourself oodles of time using his Ultimate List of Review Widgets and Badges for Your Local Business Website. And speaking of ‘ultimate,’ here is the list Phil and I brainstormed together, each adding our recommended components, for the elements we’d want to see on a consumer feedback page:

  • Full integration into the site (navigation, internal linking, etc.); not an island page.
  • Welcoming text intro with a link to review content policy/TOS
  • Unique sentiment with schema markup (not drawn from third parties)
  • Specification of the reviewers’ names and cities
  • Owner responses
  • Paginate the reviews if page length starts getting out of hand
  • Provide an at-a-glance average star rating for easy scanning
  • Badges/widgets that take users to the best place to leave a traditional third-party review. Make sure these links open in a new browser tab!
  • Video reviews
  • Scanned hand-written testimonial images
  • Links to critic-type reviews (professional reviews at Zagat, Michelin, etc.)
  • A link to a SERP showing more of the users’ reviews, signalling authenticity rather than editorial control
  • Tasteful final call-to-action

And what might such a page look like in real life (or at least, on the Internet)? Here is my mockup for a fictitious restaurant in Denver, Colorado, followed by a key:

Click to open a bigger version in a new tab!

Key to the mockup:

  1. Page is an integral part of the top level navigation
  2. Welcoming text with nod to honesty and appreciation
  3. Link to review content policy
  4. Paginated on-page reviews
  5. Call-to-action button to leave a review
  6. Easy-to-read average star rating
  7. Schema marked-up on-page reviews
  8. Sample owner response
  9. Links and badges to third party reviews
  10. Link to SERP URL featuring all available review sources
  11. Links to professional reviews
  12. Handwritten and video testimonials
  13. Tasteful final call-to-action to leave a review

Your live consumer feedback page will be more beautifully and thoughtfully planned than my example, but hopefully the mockup has given you some ideas for a refresh or overhaul of what you’re currently publishing.

Scanning the wild for a little sentiment management inspiration

I asked Phil if he’d recently seen local businesses recently making a good effort at promoting consumer feedback. He pointed to these, with the proviso that none of them are 100% perfect but that they should offer some good inspiration. Don’t you just totally love real-world examples?

Lightning round advice for adept feedback acquisition

Before we let Phil get back to his work as “the last local SEO guy you’ll ever need,” I wanted to take a minute to ask him for some tips on encouraging meaningful customer feedback.

“Don’t ask just once. In-person plus an email follow-up (or two) is usually best. Give customers choices and always provide instructions. Ask in a personal, conversational way. Rotate the sites you ask for reviews on. Try snail-mail or the phone. Have different people in your organization ask so that you can find ‘The Champ’,” says Phil. “Encourage detail, on-site and off-site. Saying things like ‘It will only take you 60 seconds’ may be great for getting big numbers of on-site testimonials, but the testimonials will be unhelpfully short or, worse, appear forced or fake. Dashed-off feedback helps no one. By the way, this can help you even if a given customer had a bad experience; if you’re encouraging specifics, at least he/she is a little more likely to leave the kind of in-depth feedback that can help you improve.”

Sustain your effort & facilitate your story

Every time Google sharpens focus on a particular element of search, as they are clearly doing right now with consumer and professional sentiment, it’s like a gift. It’s a clanging bell, an intercom announcement, a handwritten letter letting all of us know that we should consider shifting new effort toward a particular facet of marketing and see where it gets us with Google.

In this specific case, we can draw extra inspiration for sustaining ourselves in the work ahead from the fact that Google’s interest in reviews and testimonials intersects with the desires of consumers who make transactional decisions based, in part, on what Internet sentiment indicates about a local business. In other words, the effort you put into acquiring and amplifying this form of UGC makes Google, consumers, and your company happy, all in one fell swoop.

If you took all of the sentiment customers express about a vibrant, given business and put it into a book, it would end up reading something like War and Peace. The good news about this is that you don’t have to write it — you have thousands of potential volunteer Tolstoys out there to do the job for you, because reviewing businesses has become a phenomenal modern hobby.

Your job is simply to provide a service experience (hopefully a good one) that moves customers to start typing, back that up with a variety of ongoing feedback requests, and facilitate the publication of sentiment in the clearest, most user-friendly way.

Some more good news? You don’t have to do all of this tomorrow. I recently saw a Google review profile on which a business had “earned” over 100 reviews in a week — a glaring authenticity fail, for sure. A better approach is simply to keep the sentiment conversation going at a human pace, engaging with your customers in a human way, and ensuring that your consumer feedback page is as good as you can possibly make it. This is manageable — you can do this!

Are you experimenting with any page elements or techniques that have resulted in improved user feedback? Please inspire our community by sharing your tips!

Sign up for The Moz Top 10, a semimonthly mailer updating you on the top ten hottest pieces of SEO news, tips, and rad links uncovered by the Moz team. Think of it as your exclusive digest of stuff you don’t have time to hunt down but want to read!

Moz Blog

Posted in IM NewsComments Off

Google To Complete Major Redesign For AdWords Over Next 12 Months

Google announced this morning they are going to be redesigning the AdWords platform over the next 12-18 months. Of course…

Search Engine Roundtable

Posted in IM NewsComments Off

Introducing Rainmaker: The Complete Solution for Content Marketers and Online Entrepreneurs

Four years ago this month, Copyblogger Media was born.

Up until that point, I had launched several businesses off of Copyblogger, with several smart partners. Each of those individual businesses were killing it and had me involved, but those smart individuals weren’t collaborating with each other … because why would they?

The five of us convened in a Denver conference room – the first time the group had ever met in person. In just three hours, we worked through the seemingly impossible task of merging five companies into one new entity, with everyone’s equity interest and responsibilities in place.

How was that even possible? In short: shared vision.

We all agreed to come together to build something bigger than we could build separately. And just like that, we were a new venture of 15 people who had to quickly learn to work together if we were going to accomplish our goals.

Today – as a growing group of 42 – we’re revealing the result of our combined efforts. While four years may seem like forever in Internet time, it seems to have all worked out perfectly.

During those four years, we built the parts of our ultimate vision while we grew revenue. Because we’ve never taken venture capital, we had to operate like a real company – one that provides value to paying customers while patiently executing on a larger goal.

  • First we worked to make StudioPress the go-to source for WordPress design.
  • Then we launched a premium WordPress hosting division called Synthesis to make sure we had the infrastructure aspect down cold.
  • Scribe was rapidly evolved from simple SEO copywriting software into the patent-pending suite of audience optimization tools it is today.
  • We created sophisticated “no-code” development tools that power our own membership areas, lead generation, and digital sales engines.
  • And then we did the hardest thing – created a website deployment system that allowed for amazing ease-of-use combined with maximum security and performance.

Everything we built was for our own use first, with WordPress at the core. We are, after all, doing the same work to build our business that our audience and customer base does – so it makes sense that we built tools good enough for our own use.

Since inception, our goal as a company was to take those parts and fuse them into a complete solution for content marketers and online entrepreneurs.

A solution that our own editorial team of poets and misfits could use to build anything they want … without worrying about technology.

Not because we needed something to sell. Instead, a solution we’ve used ourselves to build a $ 10 million-a-year company out of a simple blog, and by practicing what we preach.

Today, we’d like to invite you to check it out, free of charge.

Okay, great. So what’s the Rainmaker Platform anyway?

Great question. Let me give you the bullet points first.

With Rainmaker, you can:

  • Create powerful content-driven websites on your own domains.
  • Build membership sites and online training courses.
  • Sell digital products like software, ebooks, and more.
  • Perform sophisticated online lead generation.
  • Optimize your content for search engines and social networks.
  • Absorb cutting-edge tactics and strategy with included training.
  • Avoid a patchwork of plugins, themes, and complicated code.
  • Forget about upgrades, maintenance, security, and hosting headaches.
  • Take your site and content elsewhere at any time if you so choose.

It’s been battle-tested by over 1,000 tough customers over the last five months, and now it’s ready for you to test drive – at absolutely no charge.

What can I build with Rainmaker?

Another great question. Let me give you some concrete examples of sites you can build.

Copyblogger.com alone gets over 500,000 unique visitors a month without advertising. It’s essentially a static home page, a blog, a collection of landing pages, and a combination free/paid membership area, which includes a forum in addition to all sorts of scheduled and archived content.

You can build a site just like Copyblogger with Rainmaker.

Or, let’s look at StudioPress, which sells hundreds-of-thousands-of-dollars in digital products every month. It’s essentially a collection of sales pages with a blog, a checkout process, and a protected area for delivery of the purchased products.

You can build a site just like StudioPress with Rainmaker.

Want to build an online training course, powered initially by a podcast, like at New Rainmaker? Whether for lead generation or as the product itself?

You guessed it … New Rainmaker is built on Rainmaker.

And if you want a custom design like any of those sites, you can do that as well on Rainmaker. But the $ 10,000 to $ 30,000 (or more) in development work some would charge you just to build the bones of the site is off the table, which is nice.

Plus, a full suite of podcasting features. Research, outreach, and optimization tools. 27 cutting-edge, future-proof HTML5 responsive designs. And much more.

In fact, Rainmaker does way more than I’ve mentioned here. But you need to experience that for yourself with the free 30-day trial.

So what’s the deal?

You’re on absolute fire with these questions.

The essence of the deal is simple – try Rainmaker for 30 days at no charge and see if it works for you. Cancel with the click of a big, easy-to-find button if you decide to move on.

But the deal is actually much sweeter than that.

As I mentioned, for the last five months we’ve been running a pilot program for Rainmaker. We offered the best deal you’ll ever see in exchange for feedback from real, paying customers.

For the next two weeks, we’re offering you the same special deal that the people in our Pilot Program got. Rainmaker is already at version 2.0 thanks to the feedback from these brave souls, which means you get the same incredible deal, but with a vastly improved initial experience. And even that will continue to get better.

What do you get, specifically?

  • All current Rainmaker features
  • Monthly billing option
  • Professional and prompt support
  • Customer-only affiliate program
  • Our best price, locked in for the life of your account

Plus, at no extra charge as they are released:

  • Additional reporting and analytics
  • Additional themes and landing pages
  • Social media posting and scheduling
  • Improved learning management system
  • Integrated RSS reader
  • Curation-to-content tools
  • Marketing automation

One catch – you’ve got to start your free trial before October 3rd to get this deal. After that, the advanced features will become part of a more expensive plan, and other benefits such as the length of the trial and the monthly billing option will go away.

I’ll write more about these upcoming features in the next week or so, because they’re really exciting. But go ahead and check out everything Rainmaker does right now at no charge.

About the author

Brian Clark

Brian Clark is founder and CEO of Copyblogger, and uncompromising evangelist for the Rainmaker Platform. Get more from Brian on .

The post Introducing Rainmaker: The Complete Solution for Content Marketers and Online Entrepreneurs appeared first on Copyblogger.


Posted in IM NewsComments Off

A Complete Guide to Crawling Inside Your Customer’s Head With Empathy Maps

two men sitting on a bench outside a diner, a woman leans against a wall next to them

Jack Ungulate is a strange bird.

When he drinks beer, he licks his index and middle finger, swipes the bottle opening, and then pauses, with the bottle raised to his mouth, before turning it upside down.

Each time, every time.

He also has a routine with his steel-toe boots. The left one must go on first, then the right. But he takes them off in reverse.

And then there’s his ritual when buying large ticket items like a car: he sends his wife to the lot while he sits in the garage, waiting for her to call.

When people talk to him about saving for his children’s college fund, he quickly cuts them off to inform them there is no fund because he’d prefer to cultivate a sense of ownership by encouraging them to pay their own way through school.

He enjoys the scowls that appear on their faces.

As he methodically replaces a defective steam gauge on a heating system, he thinks about his father and why they never talk. Then he contemplates how he’s going to break it to his own son that he won’t be able to make it to his kayak competition that evening because he has to cover a co-worker’s night shift.

The overtime, however, will go towards their trip to Cancun in April. That should ease the sting.

Clearly, Jack is not so much strange as he is just complex. Like most humans. And all of your customers.

How well do you know your customers?

Where product development should start

We all need to know our customers in order to create products they’ll actually buy. This is why the minimum viable audience idea is so powerful.

It doesn’t start with the product. It starts with the customer.

That means the media you create — the daily podcast, weekly Hangouts, the monthly downloads — all contribute to attracting an audience. As that audience grows, you learn their needs, wants, hopes, and fears.

That information allows you to build a worldview of your customer. And when you confirm that worldview in your media, it allows you to sell products they actually want to buy.

Think of the Theodore Roosevelt quote:

Nobody cares how much you know until they know how much you care.

Empathy is your goal.

What is empathy?

Empathy consists of two parts:

  1. The intellectual identification with the feelings, thoughts, or attitudes of another.
  2. The vicarious experiencing of those feelings, thoughts, or attitudes.

Keep in mind, while they are close cousins, empathy is not sympathy.

Jesse Prinz, Professor of Philosophy at the City University of New York, Graduate Center, writes, “… sympathy is a third-person emotional response, whereas empathy involves putting oneself in another person’s shoes.”

Sympathy is a toddler who offers his blanket to another toddler crying. Sympathy is a nurse flying to Haiti at her own expense to aid earthquake victims. Sympathy, as the dictionary puts it, “is sorrow or pity for another’s misfortune or suffering.”

Empathy, on the other hand, is knowing how it feels to be obsessive (like Jack in the opening story). It is knowing how it feels to worry about salespeople taking advantage of you. And it is knowing how it feels to have to tell your son — yet again — you have to miss a very important baseball game because of work.

Here’s a personal example.


I’ve lost two fathers in my lifetime: my stepfather through a climbing accident and my biological father through a failed battle with lung cancer.

Therefore, when I bump into people who’ve lost their father — whether family, friends, or strangers — I can identify with their pain.

The word “empathy” is only about 100 years old. However, our notions of empathy were previously associated with “sympathy.”

Prinz tells us that Adam Smith, the father of modern economics, said this about sympathy:

Whatever is the passion which arises from any object in the person principally concerned, an analogous emotion springs up, at the thought of his situation, in the breast of every attentive spectator.

In other words, Prinz adds, “Empathy requires a kind of emotional mimicry … Empathy is a kind of vicarious emotion: it’s feeling what one takes another person to be feeling.”

To state it another way, this time quoting copywriter Aaron Orendorff, it’s about entering the conversation that is already going on in a person’s heart.

The advertisers who translate these feelings into content and advertisements will advertise effectively … without seeming to actually advertise anything at all.

When advertisers empathize effectively

You’ve seen empathy in advertising. They are the commercials that make you smile or cry. They are the ads that pull your heartstrings.

In his article “Empathy Sells,” Grant Tudor (strategic planner at Ogilvy & Mather), shares two recent commercials to prove this point.

Take this one from Procter & Gamble.

It’s an ode to mothers and the relentless, instinctual, and sacrificial hard work they put in for their children. Procter & Gamble says, “Mothers, we understand you.”

Watch this video by Google, this time, for dads:

It’s all about a father recording his emotional connection — the pride and joy and humility fatherhood generates — with his daughter through technology.

By the way, these two short ads have something in common. Did you notice it? If not, here it is: indirect selling.

In the case of Procter & Gamble, the end of the commercial shows a quick sequence of product logos. With Google, the product is part of the narrative.

Naturally you have to ask, does this approach work? Yes, it does.

According to an extensive 2007 case study analysis by the World Advertising Research Center, emotional ads outsell informational ones by 19 percent.

The only problem is that you, as a business owner, don’t have the time or ability to experience your customers’ thoughts, feelings, and attitudes. So, you must learn how to experience these qualities another way: research.

Introducing the empathy map

Empathy maps emerged out of the web design user experience world in its attempt to empathize with users. As Dr. James Patell of Stanford d.school told CNN:

One of the founding tenets of the d.school (the Hasso Plattner Institute of Design at Stanford) is human-centered design. Rather than beginning with shiny new technology, we start by trying to establish deep, personal empathy with our users to determine their needs and wants. We must fill in two blanks: Our users need a better way to ___ BECAUSE ___. The because portion is a big deal.

Burn this into your memory: “Our users need a better way to ____ BECAUSE ____.”

David Gray, author of The Connected Company and Gamestorming, is the man behind the empathy map. He told me in an email, “The Empathy Map was developed as part of the consulting approach we took at XPLANE, the company I founded. As I recall, it was developed in the context of some work we did with Caterpillar.”

Empathy maps vary in shapes and sizes, but there are basic elements common to each one:

  • Four quadrants broken into “Thinking,” “Seeing,” “Doing,” and “Feeling.”
  • Covered in sticky notes

Some versions have two additional boxes at the bottom of the quadrants: “Pains” and “Gains.” A drawing of a human head at the center of the empathy map reminds us we are talking about a real, live person.


To get started, download and print a large version of the empathy map above here.

Empathy map session basics

Identify who should help you build an empathy map. Here are some key people to invite:

  • You
  • Stakeholders
  • Customer support leads
  • Vendors
  • Product developers
  • Salespeople
  • Copywriters

And here are items (if you have them) to bring to the session:

  • Large empathy map
  • A mix of colored sticky notes
  • Dry erase marketers
  • White board
  • Personas
  • Worldview descriptions
  • Data from user interviews
  • Testimonials
  • Insights from your web analytics (related to customer actions)
  • Social media mentions
  • Your marketing story

If it helps, at the bottom of the empathy map, draw two boxes: “Pains” and “Gains.”

In the “Pains box,” you can put your customers’ challenges and obstacles. Ask, “What keeps my customer up at night?”

In the “Gains” box, include the goals your customers hope to accomplish. Ask, “What motivates my customer to get up in the morning?” and “What are her hopes and dreams?”

Make sense?

Do this during your session

When everyone is ready, you, as the moderator, should ask questions like:

  • How do they think about their fears and hopes?
  • What do they hear when other people use your product?
  • What do they see when they use your product? What is the environment?
  • What do they say or feel when using your product, whether in private or public?
  • What are their pain points when using your product?
  • Is this a positive or a painful experience for them?
  • What does a typical day look like in their world?
  • Do they hear positive feedback about your company from external sources?
  • What do they hope to gain from using your product?
  • Has your customer repeated quotes or defining words?

Encourage your empathy map group to jot down needs and insights that emerge as you work through this exercise, then paste those notes in the proper boxes on the large empathy map.

The process takes a bit of role playing. Don’t be afraid.

Summarize the session

At the end of the session, encourage team members to share their thoughts about the exercise and the customer. Do they have a new hypothesis? Have they identified obvious needs and new behaviors? What insights have they gained?

Once you are finished, summarize your conclusions. Organize these thoughts, feelings, actions, and sayings into a summary about what you’ve learned.

In the meantime, hang the empathy map and all the notes in an area of your office where people pass or congregate. Invite people to add ideas to the map. If you work remotely, create a shared document and send out reminders regularly to encourage people to add ideas.

By the way, if you don’t have personas or worldview descriptions for your customers, don’t worry. You can still perform this exercise without those. In fact, it may help inform those other descriptors.

What we need is more research

You may think such detailed work is overwhelming. You need personas, worldviews, and now empathy maps. Really? That’s enough to make your head spin.

Trust me, this is not research overkill.

Some work may overlap, but none of it will go to waste. In fact, research will help you define and redefine your customer over time. And you can never know too much about your customer.

You need to perform more research. That’s how you crawl into your customer’s head.


Your turn …

Or course, there is more than one way to research your customers, and an empathy map is just one of many.

What other methods have you used? Let’s continue the discussion on Google+.

In some cases, you can develop empathy for your customers by inserting yourself in their lives for several days, weeks, or months. Or you could simply be your ideal customer.

Some of the best marketing comes from products created by people who are their ideal prospect.

For example, at Copyblogger, just about everybody who works here is an ideal customer. In fact, many of us were consumers of the content and products before we joined the team.

More importantly, the engine for all of our products revolves around trying to solve issues we run up against. This is Brian Clark’s story, starting back when he practiced law in the 90s and continuing now with the Rainmaker Platform.

We try to solve the very issues you’re dealing with because we empathize. We’ve been there, and are there, every day.

That’s why we put together our New Rainmaker course — a two-week free training opportunity that will teach you how to create the kind of media that your customers will love. Learn more here.

Flickr Creative Commons Image via Ryan Vaarsi.

About the author

Demian Farnworth

Demian Farnworth is Copyblogger Media’s Chief Copywriter. Follow him on Twitter or Google+.

The post A Complete Guide to Crawling Inside Your Customer’s Head With Empathy Maps appeared first on Copyblogger.

Related Stories


Posted in IM NewsComments Off

The Complete Guide to Reconversion

Posted by TomRoberts

A great deal of emphasis is placed on inbound marketing and attracting new customers. However, we should be careful not to neglect the existing clients that we may have. These people are just as important as new customers and more often than not can provide you with a great return of investment. We should give our existing clients the marketing focus they deserve.

In this guide, I will look at why remarketing and reconverting your clients can be a valuable tactic for your business, while also providing examples on how we can do just that.

I hope you find this guide to be something a little bit different than what we normally see on Moz and, most of all, I hope you find it useful. I’d love it if you could read through the whole post, but for those revisiting or those strapped for time, here are a few links to jump you to each chapter:

Prelude: What Prompted the Post Chapter 1: I Demand Satisfaction
Chapter 2: Don't Count Out a Discount Chapter 3: The Best Things in Life are Free
Chapter 4: The Lost Art of Email Marketing Chapter 5: Community is Key
Conclusion: Let's Get Out There

Prelude: What Prompted the Post

I am just a poor boy, though my story’s seldom told. We don’t see an awful lot of in-house SEO perspectives here on SEOmoz and even less so from the financial services sector, of which my current role is in. This does give me the opportunity, however, to provide a real case study of how a company has identified the need to get more value from the client base and how they have done so.

Basically, our company provides a way for people to trade the financial markets, things like equities, currency pairs and so on. We provide this service in a number of countries across Europe, with the UK being our primary market.

The curious thing about this industry, over the last 6-12 months is that, while we as a company have acquired new clients somewhat exponentially, the trading volumes of those clients, effectively the amount that they have been trading, has not seen the same amount of growth. This is something that is reported to be affecting the industry as a whole.

There are likely a number of factors that are contributing to this. Market volatility as a whole is at a record low, while we are also reviewing our marketing channels to see which ones are providing the most worth to us. However, the thing that we felt we had most control over was ensuring that our clients were as happy as they could possibly be with us, which in turn would extend the time period they want to trade with us and would do so with more frequency.

This guide will aim to show what we have done as a company to help ensure our clients are satisfied with us and want to reconvert and how these methods can apply to a wide range of industries.

Chapter 1: I Demand Satisfaction

Shut up and take my money!

If you’re trying to get people to come back to your business and reconvert, they better have had a bloomin’ good experience the first time round. It goes without saying that people will need to have a positive experience with your company to even consider returning, regardless of whatever marketing campaign you are using to entice them back.

Therefore, the first part of any reconversion strategy is ensuring that the conversion the first time round is as smooth as possible. If you’re working on an ecommerce site, cart abandonment is always a hot topic and I really like Russ Henneberry’s guide on decreasing abandonment over on CrazyEgg.

The best way to know whether or not you are being well received is to have an open dialogue with your clients. SEOmoz is a great example of this, while at ETX Capital we always display a free contact number on our website, so that people only have to pick up the phone to talk with us. Being readily available on social media, particularly Twitter, is another great way to garner client feedback. Over 30% of top brands have launched a dedicated customer service handle and I’d advise you to check out the Simply Measured case study on brands’ Twitter activity.

You may also want to consider asking your clients to leave you their feedback on external review sites, such as Review Centre. Not only do you often get detailed feedback from people leaving reviews, your ranking here can help you obtain rich snippets in your PPC ads. If you receive over 30 reviews for your business and keep an average rating of 4 or more, you can have fancy, shmancy stars appear next to your ads like these:

Car Insurance Rich Snippets
Oh my God – it’s full of stars!

Finally, you definitely need to check out Joshua Unseth’s SEOmoz post on using Google Analytics for a Q&A strategy. Not only is it a brilliant resource, it can also help you discover what people are asking about your brand in Google search. You may find some trends on your service that you can address prior to people converting.

Chapter 2: Don’t Count Out a Discount

Discount Tent - Get It?
Source: NoSweatShakespeare.com

It might seem simple, but it is often effective. Offering discounts to returning customers is a great way to have them return and to build up a bit of brand loyalty. I can remember in November last year that I had a mullet to rival Billy Ray Cyrus and I decided that it was time for a smart cut. I went to Rush salon with no intention of returning for regular cuts, as I thought it was a bit pricey. One loyalty card stamp and two 25% off cuts later and I’m already looking forward to my next princess day!

Repeat customers very often cost less than acquiring new customers, so when you’re working out your margins and what discount you can afford to give, cost is definitely something you will want to consider.

Implementing the discount system is something that should not be underestimated either. For the ecommerce SEOs out there, you can find some very useful extensions for your CMS. OpenCart is arguably one of the best CMS systems out there right now and these three extensions may be of interest for you.

Providing physical discounts is still a very popular method as well. Providing branded cards with a discount code is a popular trick used by Amazon, when sending out its products (I must have had £600 worth of wine vouchers sent to me in three months, what are they trying to say?). I have to say I am a fan of the loyalty stamp card and I’ve often wondered why more businesses do not employ an online solution to this. For all intents and purposes, the Tesco Clubcard is a loyalty card that stores your data online, allowing you to redeem points for discounts – perhaps this could be applicable to your business?

It looks as though that more companies are heading towards loyalty stamp apps, if sites such as Stampfeet and Stampme are anything to go by. This could also be a useful discount solution for you.

Gamification is not something to be underestimated either. We see a lot of gamification in the health industry – I’d love to see a gym take it one step further and have a workout leader board. When you join the gym, you would be given a chip that logs all of your exercise on the machines. The people who run the most miles, burn the most calories, generate the most watts and so on would be given discounted membership for 1/3/6 months. It would offer an incentive for people to exercise harder, which can only be a good thing, while giving the gym some really positive PR.

Chapter 3: The Best Things in Life are Free

Oprah Giveaway
The Fandom of the Oprah is plain to see

Everyone loves free stuff, am I right? But how does giving stuff away for free translate into returning customers?

Remember, this is all about building brand loyalty and a satisfied consumer base. If you can achieve that, not only might customers be more inclined to use your services again, but happy customers may refer their friends to your business as well. Repeat customers can be walking billboards for business.

Having said that, it would be wise to plan your giveaway so that you can gain something else as well, in case the reconversions don’t come. Let me use an example of a recent contest we held on our Facebook page.

We recently offered some trading credit to our clients if they could correctly guess the US employment report, also known as the non-farm payrolls, at the start of the month. The ultimate aim was to reignite interest in trading and to see an increase in trading volumes, but we knew that we could also see the following benefits, if planned correctly:

  • An increase in ‘likes’ on our page.
  • An increase in engagement on other posts.
  • An increase in traffic and conversions, assisted or otherwise.

Because of the potential multi-benefits, we were happy to go ahead with the giveaway and I’d recommend that people look for similar multi-level benefits before parting with their product or service for nothing.

After contacting our existing clients by email on the day that the contest went live, as well as previewing the contest earlier in the week via our social media channels, we ended up seeing some great results. The ‘likes’ on our page increased substantially, analytics is reporting an increase in assisted Facebook conversions that week and we’ve also been seeing some increased engagement on our regular market updates, which is great to see. Having this open communication with our clients allows us to keep in touch with their wants and needs.

Bender loves SEO dontchaknow

The icing on the cake is that we have also seen increased trading volumes in the days and weeks since the competition was launched. Without giving away too much sensitive information, I think it would be safe to say our initial outlay in terms of cost has been recuperated and then some.

Chapter 4: The Lost Art of Email Marketing

Love Letters
Source: poofytoo.tumblr.com

According to the DMA 2012 conference, for every $ 1 spent on email marketing $ 40.56 is returned (The Email Marketing Trend Slideshare from Silverpop is a great read, if you’ve not seen it already). It surprises me that we don’t see it mentioned more often here, as it can be a great way of getting your clients to reconvert.

Many of the previous tips I have mentioned in this post have been used emails in order to generate interest, such as contacting our client base to alert them about the Facebook contest we were running. That’s not really marketing, but it is an indication that email is still one of the best ways to communicate with your customers.

Email marketing is a great way of interacting with your inactive user base and get them reconverting. There is a great CNET case study on Marketing Sherpa that looks at how offering incentives can get people to reconvert. The key takeaways are making sure that you:

  • Accurately segment your lists – ie knowing what group has been inactive for 60-120 days, which clients have been inactive for 120+ and so on.
  • Come up with a number of engagement tactics to test.
  • Identify with your team what constitutes as reactivation or reconversion.

If you’re using a decent CRM system, you will be able to track user activity, or lack thereof, in a lot of detail, such as date of last login, recent transactions etc. Using this data, you can segment your users how you want and can judge for yourself what classifies as an inactive user, for example. We use SalesForce for this purpose, but different size businesses may find better solutions elsewhere, so it is worth researching. PC World has featured five useful CRMs for small businesses in the past.

The above CNET case study makes for a great read and I think an email marketing campaign can be taken one step further by running a Facebook custom audience campaign. There is an excellent SEOmoz blog post on this topic that you should definitely check out, with one of the key highlights of custom audiences being that you can import and target people from your email list only. This obviously relies on a person using the same email for Facebook as they did with your website, but there’s a fairly decent chance that they would have. With this level of targeting, you can serve them relevant ads to supplement your email campaign, without breaking the budget.

If you’re looking to learn more about email marketing, the Aweber and Deliverability blogs are great places to start, while the email marketing whitepaper from MailChimp is a great free resource as well.

Chapter 5: Community is Key

SEO and Community
Erm…probably not this Community

Community managers: rejoice! This chapter celebrates you and all the things that you do.

This is arguably the most important section of the guide. Nurturing your community is essential for reconversion, which is something that I have alluded to throughout this guide. The better the experience a customer has with your site, the more likely there are to return, reconvert and refer.

Remember, your community is most likely an open forum and not just the people who have used, worked with or are associated with your online business. This means that you need to create a positive community for people pre-conversion as much as you need to create a positive one for post-conversion folks.

Having high quality engagements with your community is one of the most direct ways of catering to their needs. Social media is an obvious outlet for this, but sometimes it can be hard to work out which social media channel would be best, both for levels of engagement and also for usability reasons. We have already talked about how customer service handles on Twitter can offer a direct response channel, but LinkedIn is often overlooked.

Linkedin discussion groups can be a great place to engage with your community, whether it’s in your own group or joining in the discussion elsewhere. More often than not, when you’re providing and contributing to useful discussions on LinkedIn, you are not just helping your community, but also your unaided brand awareness. One of the most famous examples of a big brand using LinkedIn is Hewlett Packard.

That is a summary of the HP case study provided by LinkedIn, which you can read in full here: http://marketing.linkedin.com/sites/default/files/pdfs/LinkedIn_HPUKCaseStudy2011.pdf. HP identified that their community and the demographic that they wanted to target were present on LinkedIn and so created a non-branded, general small business discussion group that allowed users to help one another out. Despite it being non-promotional, HP saw great results as a result of unaided brand awareness and the work that they had put into the community.

Hosting discussions such as these on LinkedIn brings with it an element of trust, as it is being hosted on a website people can trust and they would probably be more inclined to engage on than perhaps your own hosted forum. Furthermore, the benefit of being able to connect with users very quickly is a very valuable one, particularly when you bear in mind that HubSpot has reported that LinkedIn is up to 277% more effective at lead generation than other social networks.

It is worth noting that setting up a LinkedIn discussion group will be a time-consuming task. Moderation and encouraging engagement can take its time, so be sure that you can commit the human resource to the project in order to help it be as good as you want it to be. There’s a great resource on social media examiner on how to build a thriving LinkedIn group, while HubSpot also provides some useful tips on how to manage groups.

Alternatively, Google+ is well on its way to matching and possibly succeeding LinkedIn as the discussion group king. Google+ communities work very much in the same manner as LinkedIn discussion groups, with the added benefit that they are arguably more visible to people surfing the net. For some industries, there is already a thriving presence on the network, with SEO being chief among them. The Google Authorship community is probably the stand out example (and you should definitely check it out if you have not done so already). It would be tough work to host discussion groups on both networks with limited resources, so it is worthwhile dipping your feet in some already existing groups in your industry to see whether or not there is an appetite for what you want to discuss.

It is a good idea to find communities in your industry that are not based on one of the big social media websites. There is a forum called Trade2Win that is extremely targeted to our audience and it serves as a great resource to them. We try to engage with our audience there as well, in order to let them know about any of our new developments and for them to also offer feedback and ask questions about our service. It can be a very open and frank discussion at times, but you have to respect with communities like these that you, as a brand rather than a consumer, are on ‘their turf’ as it were, and so you should treat it with the utmost respect. The one thing about engaging on a forum that you do not control of is that you are potentially open to attack, with no way of removing slander unless the forum master deems to do so. With that in mind, it is important that you establish a clear social media policy within your organisation before you engage, with clear rules of engagement for how to handle certain kinds of negative engagement.

Of course, nurturing your community is not exclusively an online pursuit.

There are many great things that a business can do to connect with their community offline. In London, where I am based, there is a relatively new artisan bakery called Gail’s. Their mission statement is to not only provide the best quality bakery products out there, but to also become integrated within their local communities. They do this by customising what products they stock in each store, for example in the region of Hampstead, where there is a large Jewish community; the store stocks more rye bread goods, among others.

Gail’s goes one step further than this and also holds community events in each store. Some events include book-reading clubs for their store based adjacent to a primary school, so that families can come after school and enjoy themselves. The Hampstead store also organises a garden party each year, where they invite businesses that offer local produce to set up market stalls across the high street and invite people to come and sample some tasty food. Both of these events are not designed to generate profit, but to increase the brand awareness of Gail’s and to also give back to the community that they are integrated in.

Incidentally, I don’t have much need for Gail’s anymore, as I’ve taken to making my own bread!

SEO Baking Yo
Note: Pacman Onesie not obligatory

There’s method in my madness: can you imagine if Gail’s asked people to post pictures of their loaves and funny bakes on their Facebook page, with the entrants getting discounts or even free items? That would be a prime example of a company engaging with its community online and to help them reconvert.

If you’re looking for more community ideas, you should look no further than the folks here at SEOmoz. They do a great job at engaging with their community. Just this week I was sent this swag from the team:

SEOMoz Swag
The slap-wrist has brought me much joy and my office much annoyance.

Conclusion: Let’s Get Out There

I hope this guide has inspired you to look at fun and engaging ways to spark reconversion. Let your customers know you love them and they’ll surely love you back!

I’d love to get some feedback from you in the comments below, as well as some cool stories about how you have worked on reconversions and building up your lovely communities.

Sign up for The Moz Top 10, a semimonthly mailer updating you on the top ten hottest pieces of SEO news, tips, and rad links uncovered by the Moz team. Think of it as your exclusive digest of stuff you don’t have time to hunt down but want to read!

SEOmoz Daily SEO Blog

Posted in IM NewsComments Off