Tag Archive | "Build"

How to Build Daily Habits that Support Your Goals

Last month, I wrote about how a goal-oriented approach to using technology can help you become more focused and productive. Using that guidance, I’ve now broken negative habits and built new ones that support my goals. Want to know how I changed my relationship with screens in ways I used to only dream about? Before
Read More…

The post How to Build Daily Habits that Support Your Goals appeared first on Copyblogger.


Copyblogger

Posted in IM NewsComments Off

How to Build a Trusted Framework that Expands Your Content Creativity

Psst … hey, Copyblogger is taking the week off between Christmas and New Year’s. At least, officially. I’m not supposed to be here at all. But, given that my schedule is always out of whack this time of year, I like to take advantage of the disruptions to think about what I want to make
Read More…

The post How to Build a Trusted Framework that Expands Your Content Creativity appeared first on Copyblogger.


Copyblogger

Posted in IM NewsComments Off

How to Build the Right Content Marketing Strategy for SEO Growth

Posted by AlliBerry3

Delivering content that best serves the needs of users is certainly top-of-mind for many SEOs since the Hummingbird algorithm update and subsequent buzz around RankBrain. It sounds easy enough in theory, but what does that actually mean in practice? Many SEOs believe that they’re already doing this by driving their content strategy by virtue of keyword research alone.

The problem with solely using keywords to drive your content strategy is that not all of your audience’s content needs are captured in search. Ask your nearest customer service representative what questions they answer every day; I can guarantee that you won’t find all of those questions with search volume in a keyword research tool.

Keyword research can also tempt you to develop content that your brand really shouldn’t be creating because you don’t have anything unique to say about it. Sure, you could end up increasing organic traffic, but are those going to be converting customers?

Moving away from a keyword-first-driven content strategy and into an audience-centric one will put you in a better place for creating SEO content that converts. Don’t get me wrong — there’s still an important place for keyword research. But it belongs later in the process, after you’ve performed a deep dive into your audience and your own brand expertise.

This is an approach that the best content marketers excel at. And it’s something that SEOs can utilize, too, as they strive to provide more relevant and higher-quality content for your target audiences.


How is an audience-focused content strategy different from a keyword-focused content strategy?

A content marketing strategy starts with the target audience and dives deeper into understanding your brand’s expertise and unique value proposition. Keyword research is great at uncovering how people talk about topics relevant to your brand, but it is limiting when it comes to audience understanding.

Think about one of your prospective customer’s journey to conversion. Is search the only channel they utilize to get information? If you are collecting lead information or serving up remarketing ads, hopefully not. So, why should your audience understanding be limited to keyword research?

A content strategy is a holistic plan that tackles questions like:

  • Who is my audience?
  • What are their pain points and needs?
  • What types of content do these people want to consume?
  • Where are they currently having conversations (online or offline)
  • What unique expertise does our brand offer?
  • How can we match our expertise to our audience’s needs?

Finding your unique content angle

The key to connecting with your audience is to develop your unique content angle that finds intersections between what your brand’s expertise is in and your audience’s pain points. The Content Marketing Institute refers to this as a “content tilt” because it involves taking a larger topic and tilting it in your own way. Defining your brand’s expertise can be more difficult than it appears on the surface.

It isn’t uncommon for brands to say their product is what makes them unique, but if there is a competitor out there with the same general product, it’s not unique. What makes your organization different from competitors?

Here’s an example

When I worked for Kaplan Financial Education, a professional licensing and exam prep provider brand under Kaplan Professional, finding our tilt was a real challenge. Kaplan Financial Education has a lot of product lines all within financial services, but the audience for each is different. We needed a tilt that worked for the entire Career Corner content hub we were creating. What we realized is that our core audience all has a big pain point in common: entering the financial services industry either through insurance or securities (selling stocks and bonds) has low barriers to entry and high turnover. Everyone entering that job market needs to know how to not only pass their licensing exam(s), but also be successful as professionals too, both in the early years and also in the years to come.

Kaplan Financial Education’s biggest content competitors create very factual content — they’re websites like Investopedia, Wikipedia, and governing bodies like FINRA and state government departments. But Kaplan Financial Education has something going for it that its competitors do not: a huge network of students. There are other licensing exam prep providers that compete with Kaplan Financial Education, but none that cover the same breadth of exams and continuing education. It’s the only brand in that industry that provides licensing education as individuals progress through their financial careers. “From hire to retire,” as the marketers say.

We made our content tone more conversational and solicited input from our huge student and instructor network to help new professionals be more successful. We also used their quotes and insights to drive content creation and make it more relatable and personalized. All of our content tied back to helping financial professionals be successful — either as they’re getting licensed or beyond — and rather than simply telling people what to do, we leveraged content to allow our current students and instructors to teach our prospective students.

You may be thinking… so I can only write content that fits in this tilt? Isn’t that limiting?

As SEOs, it can be really hard to let go of some keyword opportunities that exist if they don’t fit the content strategy. And it’s true that there are probably some keywords out there you could create content for and increase your organic traffic. But if they don’t fit with your target audience’s needs and your brand’s expertise, will it be the kind of traffic that’s going to convert? Likely not. Certainly not enough to spend resources on content creation and to distract yourself from your larger strategy objective.


How to build your content strategy

1. Set your goals.

Start at the end. What is you are ultimately trying to accomplish? Do you want to increase leads by a certain percentage? Do you want to drive a certain number increase in sales? Are you trying to drive subscribers to a newsletter? Document these goals first. This will help you figure out what type of content you want to create and what the calls-to-action should be.

If you’re a business like Kaplan and leads are your ultimate goal, a proven strategy is to create ungated content that provides good insights, but leaves room for a deeper dive. Have your calls-to-action point to a gated piece of content requiring some form of contact information that goes into more depth.

A business like a car dealership is going to have a primary goal of getting people into their dealership to buy a car. Their content doesn’t necessarily need to be gated, but it should have a local spin and speak to common questions people have about the car buying process, as well as show the human elements that make the dealership unique to establish trust and show how customers will be treated. Trust is especially important in that industry because they have to combat the used car salesman stereotype.

2. Identify your primary audience and their pain points.

The next step is to identify who you’re targeting with your content. There are a lot of people at your disposal to help you with this part of the process. Within your organization, consider talking to these teams:

  • Customer Service
  • Sales
  • Technical Support
  • Product Management
  • Product Marketing
  • Social Media Marketing

These are often the people who interact the most with customers. Find out what your audience is struggling with and what content could be created to help answer their questions. You can also do some of this research on your own by searching forums and social media. Subreddits within Reddit related to your topic can be a goldmine. Other times there are active, related groups on social media platforms like LinkedIn and Facebook. If you’ve ever been to the MozCon Facebook group, you know how much content could be created answering common questions people have related to SEO.

3. Determine your brand’s unique expertise.

Again, dig deeper and figure out what makes your brand truly unique. It likely isn’t the product itself. Think about who your subject matter experts are and how they contribute to the organization. Think about how your products are developed.

Even expertise that may seem boring on the surface can be extremely valuable. I’ve seen Marcus Sheridan speak a couple of times and he has one of the most compelling success stories I’ve ever heard about not being afraid to get too niche with expertise. He had a struggling swimming pool installation business until he started blogging. He knew his expertise was in pools — buying fiberglass pools, specifically. He answered every question he could think of related to that buying process and became the world thought leader on fiberglass pools. Is it a glamorous topic? No. But, it’s helpful to the exact audience he wanted to reach. There aren’t hundreds of thousands of people searching for fiberglass pool information online, but the ones that are searching are the ones he wanted to capture. And he did.

4. Figure out your content tilt.

Now put your answers for #2 and #3 together and figure out what your unique content angle will look like.

5. Develop a list of potential content topics based on your content tilt.

It’s time to brainstorm topics. Now that you know your content tilt, it’s a lot easier to come up with topics your brand should be creating content about. Plus, they’re topics you know your audience cares about! This is a good step to get other people involved from around your organization, from departments like sales, product management, and customer service. Just make sure your content tilt is clear to them prior to the brainstorm to ensure you don’t get off-course.

6. Conduct keyword research.

Now that you’ve got a list of good content topics, it’s time to really dive into long-tail keyword research and figure out the best keyword targets around the topics.

There are plenty of good tools out there to help you with this. Here are a few of my go-tos:

  • Moz Keyword Explorer (freemium): If you have it, it’s a great tool for uncovering keywords as questions, looking at the keyword competitive landscape, and finding other related keywords to your topic.
  • Keywordtool.io (free): One of the only keyword discovery tools out there that will give you keyword research by search engine. If you are looking for YouTube or App Store keywords, for instance, this is a great idea generation tool.
  • Ubersuggest.io (free): Type in one keyword and Ubersuggest will give you a plethora of other ideas organized in a list alphabetically or in a word cloud.

7. Create an editorial calendar.

Based on your keyword research findings, develop an editorial calendar for your content. Make sure to include what your keyword target(s) are so if you have someone else developing the content, they know what is important to include in it.

Here are a couple resources to check out for getting started:

8. Determine how to measure success.

Once you know what content you’re going to create, you’ll need to figure out how you’ll measure success. Continuing on with the Kaplan example, lead generation was our focus. So, we focused our efforts on measuring leads to our gated content and conversions of those leads to sales over a certain time period. We also measured organic entrances to our ungated content. If our organic entrances were growing (or not growing) disproportionate to our leads, then we’d take deeper dives into what individual pieces of content were converting well and what pieces were not, then make tweaks accordingly.

9. Create content!

Now that all the pieces are there, it’s time to do the creation work. This is the fun part! With your content tilt in mind and your keyword research completed, gather the information or research you need and outline what you want the content to look like.

Take this straightforward article called How to Get Your Series 7 License as an example. To become a registered representative (stockbroker), you have to pass this exam. The primary keyword target here is: Series 7 license. It’s an incredibly competitive keyword with between 2.9K–4.3K monthly searches, according to the Keyword Explorer tool. Other important semantically related keywords include: how to get the Series 7 license, Series 7 license requirements, Series 7 Exam, General Securities Registered Representative license, and Series 7 license pass rate.

Based on our content tilt and competitive landscape for the primary keyword, it made the most sense to make this into a how-to article explaining the process in non-jargon terms to someone just starting in the industry. We perfectly exact-match each keyword target, but the topics are covered well enough for us to rank on the front page for all but one of them. Plus, we won the Google Answer Box for “how to get your Series 7 license.” We also positioned ourselves well for anticipated future searches around a new licensing component called the SIE exam and how it’ll change the licensing process.


Once you’ve created your content and launched it, like with any SEO work, you will have a lag before you see any results. Be sure to build a report or dashboard based on your content goals so you can keep track of the performance of your content on a regular basis. If you find that the growth isn’t there after several months, it is a good idea to go back through the content strategy and assess whether you’ve got your tilt right. Borrowing from Joe Pulizzi, ask yourself: “What if our content disappeared? Would it leave a gap in the marketplace?” If the answer is no, then it’s definitely time to revisit your tilt. It’s the toughest piece to get right, but once you do, the results will follow.

If you’re interested in more discussion on content marketing and SEO, check out the newest MozPod podcast. Episode 8, SEO & Content Strategy:

Listen to the podcast

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

Authority Pro for WordPress: Demonstrate Your Expertise and Build Trust

Authority Pro is a fresh new design by our Lead Designer Rafal Tomal and the team at StudioPress. The big idea behind this specific design is to help you put the full extent of your expertise on display. Consistently demonstrating your likable expertise over time is what allows you to build meaningful and lasting trust
Read More…

The post Authority Pro for WordPress: Demonstrate Your Expertise and Build Trust appeared first on Copyblogger.


Copyblogger

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:

Label

Functionality

Time it took me

1

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

2

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

3

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

4

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:

#start
    req = request.get_json
    print("Request:")
    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.


Conclusion

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

5 Ways to Build Customer Loyalty for Your eCommerce Business

A decade or so ago, most businesses develop relationships and loyalty with their customers based on one-on-one and personalized interactions between the company owner or the staff. These days, most transactions occur online. However, customer loyalty remains a key component to the success of any business.

As the Beeketing blog explained, it’s more expensive to gain new customers than to retain current ones. A company has to spend a lot of time, effort and resources to find new clients. It’s far easier and more profitable to just keep existing customers satisfied, happy and loyal. As a matter of fact, keeping customers happy and returning can boost profitability by up to 75%.

But how does one build customer loyalty? Here are five tactics an eCommerce business can use:

1. Sell Good Quality ProductsImage result for quality

You can’t expect to garner customer loyalty if the customer’s first experience with a purchased product is one of disappointment. This is why it’s imperative that you sell good quality products. If the item, software, or downloadable content you’re selling is poorly made, your customers will not come back. They might also hurt the business further by leaving bad reviews. Conversely, delivering a well-made product will ensure repeat business and develop loyal customers.

2. Provide Great Customer Service

Aside from offering high-quality products, providing good customer service is another vital way for an eCommerce business to develop and encourage customer loyalty. A 2011 survey conducted by American Express revealed that 8 out of 10 customers would not patronize a business anymore after one bad customer service experience.

Providing good customer service isn’t necessarily hard or expensive. There are also several options open to companies, like incorporating a live chat to make it easier for customers to reach someone. Self-service options can also make it simpler for clients to troubleshoot common problems or find answers to frequently asked question. Interacting on social media and offering flexible return and exchange plans can also keep clients returning.

3. Be a Logistics MasterImage result for logistics

Much like the two previous examples, fast and reliable shipping service also strengthens customer loyalty. This is particularly true for eCommerce businesses as they have to master logistics like shipping packages safely, quickly and cheaply to their customers. This also means having a clear concept of how to pack products properly, finding the best courier and service for a specific shipment, and setting realistic expectations with the client. Remember, good products bought at fair prices that arrive promptly or when they’re expected will go a long way to earning customer loyalty.

4. Develop a Fun and Relevant Rewards or Loyalty Program

Loyalty programs are an effective but surprising underutilized marketing tactic. Make your customers feel important and valued by offering rewards for their continued engagement. This can be in form of major discounts, free gifts, or instant or early access to exclusive sales. Personalizing the promotions you give loyal customers will also make them feel important and give the impression that the company is taking care of them.

More and more companies are also opting for fun and gamified rewards programs that allow the customers to participate. For instance, a coupon app can give customers access to special deals and promotions while encouraging them to earn badges by looking for deals on particular products. Aside from making it more fun, it also creates interest for the product and could even tap into the customer’s social media network.

5. Offer Useful and Entertaining ContentImage result for useful content

Another way to boost customer value and loyalty is via content marketing. Studies indicate that retail sites that made use of content marketing could have six times better conversion rates than those sites that do not. However, the trick is to make sure that the content, copy, and marketing actions are informative, entertaining, and engaging. One prime example is the weekly digital magazine of fashion house, Mr. Porter. The articles are often about the company’s products but they also include topics that deal with health, fashion, food and the arts.

Think about the various ways your customers interact with your company. Make sure they have a positive experience every step of the way and they will keep coming back for more. More importantly, your loyal customers might even tell their friends about your business.

[Featured image via Flickr.com]

The post 5 Ways to Build Customer Loyalty for Your eCommerce Business appeared first on WebProNews.


WebProNews

Posted in IM NewsComments Off

How to Build a Better WordPress Website … One Week at a Time

"It can be scary to put your story out there on the web. It’s also empowering." – Jerod Morris

What is the key to building a better website?

Well, you first need an idea. And it needs to be useful.

Next, you need to start with the right stuff, the right raw materials. You clicked on the headline of this post, so perhaps you’re already using WordPress or strongly considering it. Good choice. Continue down that path.

After that, you have to be willing to hit Publish. Whether you’re starting your own food blog, marketing your copywriting business, or building an audience for your coaching services … you have to put your story out there on the web for all to see. That can be scary. It’s also empowering.

What comes next?

Find a path for continuous improvement

A few years ago, I wrote an article on Copyblogger titled How to Immediately Become a More Productive (and Better) Writer. A book I had just read called One Small Step Can Change Your Life by Robert Maurer inspired that post.

The book takes its cue from the Japanese concept of kaizen, which means continuous improvement — or, to be more specific, the process of achieving sustained success through small, steady steps.

This concept spoke to me then. It continues to speak to me now.

It’s so easy, especially in today’s environment of ubiquitous distraction, to get lost in big ideas and forget about the inevitable series of small steps it takes to achieve them.

I am easily prone to this. I’ve learned this about myself. I have to be intentional about pulling myself down out of the clouds so that I can actually plant my feet firmly on the ground and put one foot in front of the other … then the other … then the other.

Steps.

One at a time.

That is the only way to achieve continuous improvement — the only way to take a big, grand idea and bring it to fruition.

Now, with that as our foundation, let’s talk about your website …

The four pillars of a successful WordPress website

Building a powerful website that does everything a website should do — help you earn authority, build an audience, and drive business — is a big task.

There is a lot that goes into a successful WordPress website.

Some of the choices you have to make are big decisions, like where to host your site and what theme to use.

Other choices are smaller, more subtle, like what color to use for your call-to-action buttons and whether you should use “How to …” in two consecutive blog post headlines or change one for the sake of variety.

All of your decisions, big and small, can be categorized in one of the following four buckets:

  • Content
  • Design
  • Technology
  • Strategy

They are the four pillars of a successful WordPress website.

If your website lacks any one of these elements, it might be okay, but it’s probably not optimized to help you achieve your goals. You could also be wasting time, effort, and money.

Think about it this way:

If you have useful content, a good design, and a strong technology foundation, but no strategy … your website’s “success” might actually be misaligned with your business goals. You’re not maximizing your efforts.

And if your website lacks two of these elements, it might fail altogether.

Consider a website with useful content that adheres to a smart, cohesive strategy. That’s a good start. But if the design is ill-fitting, and if the technology is lacking (think: poor hosting and security warnings), then visitors are unlikely to stay long … if they ever reach your site at all.

The rub in this example, of course, is that you can’t really have a smart, cohesive strategy with design and technology lagging far behind. And given how intertwined content and design are, content with poor design won’t be nearly as useful as it could be.

Point being: they all fit together.

Now let’s marry together the two big ideas we’ve explored so far in this post …

How to apply kaizen to the four pillars of your website’s success

You can’t build a successful website with one inspired 48-hour work binge over a weekend.

You can’t even do it by taking an entire month, or even three or four, to focus on nothing but your website. Not if you want your success to sustain beyond those three or four months.

Sure, through evergreen content, autoresponders, and the power of digital products, you can (and should) do a lot to earn ongoing, recurring, some might say “passive” revenue … but you’ll also experience diminishing returns if you aren’t:

  • Marketing your ideas
  • Tweaking or reworking your design to keep it fresh
  • Updating WordPress and plugins to keep them secure
  • Staying vigilant about your strengths, weaknesses, opportunities, and threats

In other words, you can’t just set-and-forget your content, design, technology, and strategy.

You develop, build, and launch your website in incremental steps … and then you continue taking incremental steps to avoid stagnation and drive your site toward continuous improvement.

If that sounds like a lot of time and effort, good. Because it is.

But it’s worth it.

If you are intentional about avoiding the myopia that so many people approach online business with, then the time and effort, along with the money, that you invest into your website will not be an expense. It will be an investment. And the investment will pay off.

That said, it’s still smart to save yourself little bits of time and effort where you can. ”</p

Posted in IM NewsComments Off

How to Build SEO Strategies Effectively (and Make Them Last)

Posted by Bill.Sebald

“Strategy without tactics is the slowest route to victory. Tactics without strategy is the noise before defeat.”

I read The Art of War in college, written by the Chinese general Sun Tzu (author of the quote above). While his actual existence is debated, his work is often considered as brilliant military strategy and philosophy. Thus, The Art of War is often co-opted into business for obvious reasons. Throughout the book, you’ll realize tactics and strategy are not interchangeable terms.

strat·e·gyˈ
stradəjē/

- A method or plan chosen to bring about a desired future, such as achievement of a goal or solution to a problem.
- A plan of action or policy designed to achieve an overall aim.
- The art and science of planning and marshaling resources for their most efficient and effective use.
Source

These definitions vary slightly, but the essence is the same. A strategy is not constrained by size or application but promoted by planning and effectiveness. Let’s be honest, the word “strategy” is a term that isn’t always used the same way in the English lexicon (or our industry).

On the other hand, tactics can be isolated or serve as components in your strategy. They are actions you would impart as a step in the plan, or used as a stand-alone, typically with limited resources.

For some this is straightforward, but for others new to marketing or traditionally focused on tactical work, a strategy can be a difficult concept that requires practice. Perhaps understanding the purpose is key to dividing these terms. Let’s try this:

“The purpose of a strategy is to identify goals and build a plan of attack towards achieving those goals. The purpose of tactics are for smaller goals that could feed something bigger.”

Before you read on, please note: this is not an article devaluing tactics over strategy (despite the Sun Tzu quote). My goal is to inspire thought that can help you be more effective as a modern SEO, and possibly consider a strategy where you haven’t before.

A military analogy

I find analogies go a long way in describing lofty concepts. I could easily go with a football or legal example, but a military example might be the most comparable to what we do in marketing. And because I know my audience, I decided to go with Star Wars.

The Galactic Empire thought they could take over the galaxy with fear and brute force. They developed plans for a space station with firepower strong enough to destroy a planet. Under the command of Governor Tarkin, the Death Star was created. They tested the completed Death Star on Princess Leia’s home planet of Alderaan, which gave Obi Wan Kenobi shivers.

However, the Rebels put together a counter-strategy. Piecing together intelligence about a deliberate design flaw, and developing a plan featuring waves of small battalions, the Rebel ships would take passes at the target. They would work together in designed waves to equally defend and attack during this campaign.

As basic as that scene was at the end of Star Wars, it’s a strategy nonetheless (albeit a small one).

Confusion of strategies versus tactics — a real-world example

To make this a bit more relevant to SEO, here’s an email shared with me by a prospective client. They were looking for a new agency after they received this from their current agency:

I object to several things written here. Guest posting is a tactic, not a strategy. There is no plan here, just an action. A measurable or attainable goal is never made clear.

We need to do better. *desk flip*

Selling the SEO strategy

Whether you’re an agency, consultant, or in-house at a company, getting buy-in for an SEO strategy can be challenging. SEOs tend to rely on the support of several different departments (e.g. developers, copywriters, business managers, etc.), usually with their own predetermined goals. Enter the SEO to add more complexity.

There’s often a top-down marketing strategy already baked before you get to pitch your SEO work, to which you may find opportunity on a battlefield where access is not granted. It’s reckless to assume you can go into any established company and lob a strategy onto their laps, expecting them to follow it with disregard to their existing plans, politics, and red tape. Candidly, this may be the quickest way to get fired and show you’re not aligned with the existing business goals.

Instead, you need to find your areas of opportunity that work with the company’s business goals, not against them. Effective marketers don’t try to be a square peg in a round hole. Get to know the players, the existing playbooks, the silos, and the available gaps.

It’s not about being a yes-man; it’s about best playing the hand you’re dealt. You simply can’t successfully sell a strategy until you know where your strategy will fit and support the current business goals.

Before you begin mapping out the strategy

If I’ve done my job, you’re eager to put pen to paper, but you still have digging to do. Get your shovel.

Some people are better suited to design plans in a non-linear fashion. If I’m writing anything, be it an article or a piece of music, I’m bouncing back and forth throughout the piece as inspiration strikes. But for others who are more straight-minded and less frenetic, a reference of considerations and characteristics might be helpful.

Enter the mind map. Simply stated, a mind map is a visual representation of concepts and connections. As defined here, it is a visual thinking tool that helps to structure information, helping you to better analyze, comprehend, synthesize, recall, and generate new ideas.

It’s your sketch pad. Jot down all the ideas, concepts, and relationships you can possibly think of.

(Developed using a trial of https://www.mindmeister.com.)

Think of this document as a living communication between you and your client or boss. It is a document you should refer to often. It keeps all parties on the same page and aligned. I recommend sharing it in a collaborative platform so updates are shared between all viewers without having to constantly send out new copies (nothing sucks the life out of efficiency faster than “versioning” issues).

There’s no shortage of things to consider in your mind map. Here are a few common items from my experience:

  • Timeline details
  • Details about the industry or different channels
  • Other marketing learnings
  • Customer/visitor details
    • Demographics and psychographics
    • Details about the customer journey
  • Competitive details
  • Product demand details
  • Current search visibility

My fellow marketers, this is not an exhaustive list by any means. Gather all the information that is meaningful to you.

Drafting the strategy

At this stage, your initial gathering is complete, so now you’re on to development. Hopefully you’ve had some visibility and buy-in by your clients or boss to date, so it’s crucial to keep that momentum going. Don’t build a strategy in a silo.

Remember, a strategy is a plan. A plan has steps, dependencies, and future considerations throughout. I think it’s very important for your team and the client to “see” the strategy in a visual format, and not just conceptually. Use a spreadsheet, slides, or Word document — whichever tickles your fancy. At Greenlane, we’ve been using Google Sheets:

For demonstration purposes, flesh yours out as you see fit. Click for larger image.

If you work in an agile framework, the strategy is going to change. Everyone should be able to see revisions to the strategy with an indication of what’s been changed and why. That’s a benefit to documenting every important detail.

Earlier you put together a mind map to put preliminary ideas on the table. You considered things that you’ll now need to thoroughly scrutinize. Here is a list of considerations to hold your SEO strategy against. Make sure your final draft of the SEO strategy can clearly speak to each of these.

And since we’re on a Star Wars kick already, I present my dusty childhood toys (recently found in my mother’s basement).

Consideration 1 – Understand the client

Each business is an entity. Each entity has characteristics. You need to know these characteristics if you’re going to build anything for the company. So, make sure you know the answers to these questions:

  • What’s your company vision? A great vision statement can inspire great things, including an SEO strategy. And why not? If properly developed and executed, the company has already set you up for a better chance of success.
  • What are the company’s core values? Every company can only be so many things to so many people. A well-branded company knows exactly what they are and what they aren’t. Use these core values in your campaign, as they should serve as your campaign perimeter.
  • What is the leadership like? What kind of culture do they cultivate? In smaller companies, the leaders tend to influence the culture. In larger companies, unfortunately, this can get lost. But if you have access to the leadership, spend some time learning about their vision. It should match up to the company’s core values, but sometimes there are more gems locked in their minds.
  • What are the pain points? What things drive the members of this organization to drink? From the customer support to the higher-ups, there are things that knock the company down. How do they get back up? Why are the pains they’re looking to work around? It may not be realistic to interview the whole company, but ideally you can get a representative to answer these.

Let’s pause for a moment.

If you’re at this part of the article, and you’re thinking, “Whoa — why the hell would I do all this to get a few rankings?” then you’re not thinking strategic yet. True, it’s possible these bullets aren’t all relevant to what you’re building, but the bigger your strategy needs to go, the more you need to know your client.

Consideration 2 – Understand the goals

If we’re going to be creating goal-oriented plans, it make sense to start with a smart goal or two. And by smart, I mean SMART. For those who aren’t familiar with SMART goals, it stands for the following:

Specific: This is for the “why” and “how” of your goal. What exactly are you trying to do, and why? If you were a retailer who sells a little of everything, you might have a statement like this:

“At the end of February, we noticed our customers begin researching lawn and patio furniture. Customers are favoring items that look more elegant and can resist weather.”

Measurable: Be very detailed. Are we trying to make money, or are we trying to make five hundred dollars? Are we trying to draw traffic, or are we trying to bring 500 new visits that engage with our website?

A retailer might have a statement like:

“Our goal is to increase organic conversions of the Lawn and Patio section by 15% YOY in Q2 and Q3, with lawn chairs driving 75% of those sales. Target revenue $ 500,000 in Q2, and $ 300,000 in Q3.”

Achievable: Make sure you’re grounding your goal in reality. Sure, you can’t control a massive Google update, but using the history of your sales and competitive data, you can make some inferences. You also need to make sure you have agreed-upon goals. Get buy-in before you set the goal in stone, leveraging the thoughts from the leaders, merchandisers, analysts, and anyone who might be able to provide insight into the likelihood of hitting your goal.

Realistic: (There is some blend between realistic and achievable.) Do you have the appropriate resources in place? Does your client have the flexibility to make the necessary changes within the proposed timeline?

A statement to help framing could be:

“We are going to rely on resources including copywriters, researchers, merchandisers, and developers to make on-page changes within the time frame of this plan. We expect to need 40 hours of time from copywriters, 50 hours from web development.”

Time-bound: We will need deadlines for dependencies. Assign due dates to each step of the plan, and keep the players accountable. Make sure you have an appropriate start-to-finish date.

Consideration 3 – Understand the audience

This is critical. If you don’t know what your searchers are looking for, you’re guessing. That’s a bad idea. Especially today, where we have troves of data.

But it’s important to find the stories in-between the numbers. With that said, your audience can’t be measured solely by the 0s and 1s that comes into analytics platforms. I’ve written about this in The Down Side of Analytics in Marketing.

But I’ve recently heard some chatter voicing the polar opposite. I’ve heard the sentiment to wholly ignore certain data points because they don’t represent the real person. To me, that’s bad advice — directional data is better than the romantic notion of success based on your “gut” feel. Estimated search volume, clicks, and even impressions give credence not only to a keyword, but a bigger theme. This starts to create direction and an understanding of need, which leads to your next few rounds of audience recognition.

Using the available data helps a marketer understand which dollars are more effective than others, and how to identify different audience groups within the buying cycle.

With the demographics and site usage details from GA, different types of users (researchers, comparers, buyers, customers) can be grouped and classified, and the marketing dollars and messaging appropriately tailored.

AdWords and Facebook are further vehicles for reaching the appropriate audiences with more refined messaging. I think it’s important to create personas for your current visitors and the type of visitors you want to attract. It might be valuable to create personas of those you don’t want to attract, to keep in the back of your mind as your content and advertising calendar is being built following the delivery of your overall strategy.

Consideration 4 – Understand the competitive landscape

Without knowing the landscape, you really don’t know what opportunity lies ahead. Understanding your competition’s success allows you to learn from their wins (and mistakes). Reinventing the wheel burns unnecessary minutes.

There are a few competitive tools we tend to gravitate towards in our industry. SEMrush is a fantastic tool allowing anyone to look up a website and get an estimated search visibility and traffic share. Drilling in shows how well pages perform independently. Gleaning through exports can quickly reveal what topics are driving traffic, to which you might replicate or improve your own version.

Backlinks can actually serve as a proxy for interest. In Google’s vision of a democratic web, they considered links to function like votes. Google wants editorial votes to influence their algorithm. So, if we assume all links are potentially editorial, then looking up backlink data can illustrate content that’s truly beloved. Grab your favorite backlink data provider (hey — Moz has one!) and pull a report on a competitor’s domain. Take a look at the linked pages, and with a little filtering, you’ll see top linked pages emerge. Dive into those pages and develop some theories on why they’re popular link targets.

Social media — it’s more than cat memes. Generally, non-marketing folks share content that resonates with them. Buzzsumo offers an easy interface for digging through the depths of social media. Have a general topic you’d like to pursue? Enter it into Buzzsumo and see what you get.

Let the creative juices flow. Look for topics you can improve under your own roof. Even the nichiest of niches can have representation in Buzzsumo.

Maybe this feels a bit too scattershot for you. Buzzsumo also allows you to find and observe influencers. What are they sharing? By clicking the “view links shared” button, you’ll get a display of all the unique pages shared. Sometimes “influencers” share all types of varying content crossing many topics. But sometimes, they’re pretty specfic in the themes they share. Look for the latter in this competitive research stage.

Consideration 5 – Understand the roadblocks

Every company has obstacles. Each one has built its own labyrinth. Don’t try to blanket an existing labyrinth with your ill-prepared strategy; instead, work within the existing inroads.

Reality bites. You could draft up an amazing strategy, bright-eyed and bushy-tailed, to which you’re rebuilding an entire category structure of one of the website’s most lucrative lines… only to find out there’s a ticket queue for the necessary resources that’s more than 6 months long. Despite your brilliant idea, you’re going to look bad when the client calls you out on not understanding their business.

The best way to avoid this is proactively asking the right questions. Ask about resource support. Ask about historic roadblocks. Ask to be introduced to other players who otherwise hide behind an email here and there. Ask about the company’s temperature regarding a bigger SEO strategy vs. short, quick-hit campaigns. Don’t be your own biggest obstacle — I’ve never heard of anyone getting angry about over-communication unless it paralyzes progress.

A few final thoughts (from my experience)

It’s time for my Jerry Springer moment.

Not all strategies have to be big. Sometimes your window is small, and you’re forced to build for a distinct — or tiny — opportunity. Maybe you don’t have time for a proper large-scale strategy at all; a tactic or two might be all you can do to carry in a win. Just make that very clear with your boss or client. Don’t misrepresent what you’re trying to build as an SEO campaign.

I understand that some SEO agencies and departments are not built for the big SEO campaigns. Strategic work takes time, and speeding (or scaling) through the development stage will likely do more harm than good. It’s like cramming for a test — you’re going to miss information that’s necessary for a good grade. It would be my pleasure if this post inspired some change in your departments.

Lastly, it’s important to remember that paralysis by over-thinking is a real issue some struggle with. There’s no pill for it (yet). Predicting perfection is a fool’s errand. Get as close as you can within a reasonable timeframe, and prepare for future iteration. If you’re traveling through your plan and determine a soft spot at any time, simply pivot. It’s many hours of upfront work to get your strategy built, but it’s not too hard to tweak as you go.

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

5 Elements that Build a Roster of Terrific Clients

"It isn't just ability that makes a writer successful — it's also wise positioning." – Sonia Simone

In the podcast episode I recorded recently with Seth Godin, we talked about storytelling — and he made a point I thought was fascinating.

Seth’s version of storytelling isn’t just crafting a plot in the traditional sense — the classic “The queen died, and then the king died of grief.”

He also looks at the implied stories in everything we do. We tell a business story with our tone of voice on a podcast, and the color choices on our website. Our pricing, our response time, our “Contact Me” form … they all come together to tell the story of your business.

Some businesses tell scary or ugly stories. A lot of businesses tell boring ones. Seth got me thinking about the elements that I believe tell a more inviting story for a writing business — the kind of story that attracts more clients and better revenue.

If you’re a professional writer, of course you need to write well. But it isn’t just ability that makes a writer successful — it’s also wise positioning. It’s the implied story that your business tells.

Here are my thoughts on five “story elements” that help writers attract the right clients, at the right pricing, in the right numbers.

Story element #1: your voice

For any business, but particularly for a writer, the voice of your marketing is one of the most important story elements you have.

What does that look like on your site today? Do you sound stiff and formal, or loose and conversational? Like tends to attract like, and the personality you put into your writing voice will tend to attract those qualities in your clients.

Do the choices you’re making invite the kinds of clients you want?

Ask yourself what qualities your writing voice is conveying:

  • Informally relaxed … or train wreck?
  • Reassuringly professional … or uptight?
  • Charmingly approachable … or sloppy?
  • Attentively detail-oriented … or nit-picky?
  • Creatively agile … or distracted?

These are always subjective. What might seem annoyingly uptight and controlling for me might feel appealingly detail-oriented to you.

Because you’re a pro, you have more control over your writing voice than regular people do. Use that skill to convey the kinds of qualities you want to see more of in your clients.

Story element #2: your site

Good copywriting clients today don’t just want wordsmiths — they also want content strategists. (Whether or not that’s the phrase they would use.) They want writers who understand how the web works today.

It’s hard to come across as informed and web-savvy when your site design looks 10 years out of date.

You don’t have to chase every design trend, but you do need your site to look current, uncluttered, and fresh.

As someone who would rather work with words than web design, my tool of choice for web design is a good-looking premium WordPress theme. And I’d make the same choice even if our company didn’t offer dozens of great ones.

They’re reliable, they’re easy to work with (particularly if you go with a solution like StudioPress Sites), and they offer a lot of professional design value for a modest investment.

Story element #3: your pricing

Price is one of the most powerful nonverbal elements of any business story.

  • American Express tells a different story from Visa
  • Châteauneuf-du-Pape tells a different story from Two-Buck Chuck
  • Mercedes tells a different story from Kia

Now, Visa, Two-Buck Chuck, and Kia are all things that a lot of consumers choose and even like.

But trust me, you do not want to be the Two-Buck Chuck of copywriting.

When you sell services, you sell your time. Hours of your life — the one thing you can never get any more of. Selling those hours at a discount just doesn’t make sense.

Of course, if you’re just starting out, you shouldn’t expect to command the same rates as an experienced writer. That’s why your first priority is to work very hard to get very, very good, so you spend as little time in “Two-Buck Chuck” territory as possible.

Crummy clients want cheap writers to produce generic CRaP that, truthfully, no one particularly wants to read anyway.

Great clients want professional writers to produce wonderful words that delight and serve their customers.

Two very different stories. The second one is much more fun.

Story element #4: your specialization

This is where a lot of smart writers start when they’re thinking about their positioning — and it’s a great story element.

None of us is good at everything. What are you great at? What could you become great at?

When I was a freelancer, I specialized in email newsletters, autoresponders, and other content that nurtured relationships with prospects.

I’m really good at that kind of writing. I have a lot of experience with it, which allows me to work efficiently. I enjoy doing it. And clients wanted it. It was easy for clients to understand that I’d probably do a better job with relationship-building content than an unknown writer on Upwork would.

I found the intersection between what I liked to do, what clients wanted, and what I could produce efficiently and well.

Lots of wise freelancers focus on robust topical ecosystems, like healthcare or law or technology. They stay up to speed, so they can write with authority on those topics. And they command fees that are significantly higher than a “jack of all trades” writer can.

Story element #5: your professionalism

This one is really old school … and really important.

When clients leave a query on your “Contact Us” form … do you get back to them? How long does it take you? Do you have a solid process to handle those inquiries?

Are you hitting your deadlines? Every time? Putting in as much thought and care for a client’s 50th piece with you as you did when you started working together?

Anyone who works with a lot of freelancers will tell you: Reliability is an issue. When clients find a writer who does what she says she’s going to do, every time, it makes a major impact.

Respond to client inquiries quickly. (This alone will make a significant difference in your revenue over a year.) Follow up. Manage your deadlines.

No bandwidth for new clients right now? Set up a quick waiting list on your site. Add a simple autoresponder to let them know you’ll connect as soon as you have the time to give them your full professional attention.

When you want to attract and retain wonderful clients, you need to take care of them like the treasures they are. It will get noticed.

Your writing can be seen as a commodity or as a valued service. The cool thing is — because you’re a professional wordsmith and you’re smart about marketing — you get to choose.

Are you a writer who wants to become a Certified Content Marketer?

Our Certified Content Marketer training is a powerful tool to position your writing business for greater success. Add your email address to our waiting list below to be the first to hear about when we reopen the program to new students.

Find out when our Certified Content Marketer training program reopens:

The post 5 Elements that Build a Roster of Terrific Clients appeared first on Copyblogger.


Copyblogger

Posted in IM NewsComments Off

Google shortcuts use personalization and rich content to build next-gen local discovery tool

Machine learning-driven results entirely bypass the traditional search box.

The post Google shortcuts use personalization and rich content to build next-gen local discovery tool appeared first on Search Engine Land.



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

Advert