WordPress SEO Checklist

This checklist goes through some of the most important things you can do to set up your website for optimal SEO performance.

Many items on the checklist should be done before you go live. Doing them after the fact will make your life harder. It's important to get it right before the search engines have a go at it and get the wrong impression.

Post going live tasks are about setting up tracking and monitoring so that you can analyse how well it is performing and what needs improving.

Do it now before you lose out.

Installing WordPress

Many hosting companies provide quick ways to install WordPress. Or you can install it yourself .

Both methods at some point should ask you to enter an initial Username and password. For security reasons don't chose admin as the username. I suggest you enter your own name. And please make your passwords hard to guess.

Use Multiple Users

Many people just create the one user account and let all the staff use it. Please don't. Create a user for each person so they can personalise their environment, you can track who does what, and you can easily cut them off if required.

Hide your development website from Search Engines

If you are staging your development on a different domain then you want to avoid it getting indexed by the search engines. You can do this via Settings->Reading->Search Engine Visibility . If you do check this box then make sure you un-check it when you go live.

Use a Mobile Friendly Theme

These days a website would typically have 15% or more of their visitors using mobiles. The figures tend to go up for local businesses where people are on the go when looking for you. That is a big enough number to mean you should make sure your website is usable on mobiles.

As an added incentive, Google downgrades website pages that fail their mobile friendly test. So not being mobile friendly will also reduce the traffic to your website.

The simplest way to go mobile friendly with WordPress is to pick a Responsive Theme. Responsive means the website will adjust itself to the device it is shown on, and they are designed from the ground up to be mobile friendly. The WordPress Theme chooser lets you filter based on Responsive Layouts.

You can use the Google Mobile-Friendly Test Tool to see if a page is up to scratch. Once you have registered your website with Google Search Console (Google Webmaster Tools) you can also view a mobile friendly report. It is well worth checking this as sometimes a pages content will make it unfriendly. e.g. it contains embedded flash or images are placed in a way that breaks the layout on small devices.

Install the Essential Plugins

Check out my list of Essential WordPress Plugins which I recommend you install and configure. This gives you a solid and secure base to work from.

Search Engine Friendly URLs

Search Engine Friendly URLs are designed to look nice for humans as well as perform well with search engines. They include keywords, so search engines and users can tell what a page is about in a glance.

WordPress has some built in options to create Search Engine Friendly URLs. They are available from the Settings->Permalink menu option.

Pick the style that suits you. I would recommend the Post name option which should be the default setting.

Do not change this setting once you have picked your style as it will change all your URLs and the search engines will get confused.

General Setting

You should review and update all the settings in Settings->General. Make sure they don't still have the default values and instead have values relevant to your business.

Disable Comments

Business website don't tend to want people commenting on their pages. Allowing comments also means they need to be moderated and can be a pain if the spammers find you.

So I tend to lock down comments via the Settings->Discussion section. If uncheck the default setting for "Allow people to post comments on new articles" then you won't accidentally enable comment on a post.

You can then enable comments on a per post/page basis. You may want to do this if you create articles that would invite discussion.

Test the 404 Page

If someone is sent to a page that does not exist they should get a missing page message. The search engines should also be sent a 404 code to tell them it does not exist and they should stop sending people there.

WordPress themes generally do this correctly, but it is worth checking. Go to a page on your website and then edit the URL in the address bar so that it is incorrect. Press enter and see what the page looks like. Would it be helpful to people who are lost?

Also run my 404 Checker to see it is sending the right signal to the search engines.

Design the website and add content

Now you have all the basics needed in place you can go ahead and work on the design and content. Refer to my WordPress Post Checklist for advice on how to edit posts and pages.

Going Live

You will want to go live once you have done the above tasks. The following tasks should be done after going live.

If you are migration content from another website then you should also check my WordPress Site Move Checklist for activities you need to do before and after going live.

Make sure you're visible

Make sure Settings->Reading->Search Engine Visibility is un-checked.

Update domain names if required

If you used a staging domain for your development then you will most likely have to update a few locations to the correct domain name. Changing The Site URL should help you do that.

This will not cater for any hard coded links that you may have added while developing. I personally do a search and replace in the database. The Automatic Domain Changer plugin may automate that for you (not tested).

Google Analytics

Now we are live we want to start tracking visitors. Google Analytics is a great way to do that.

Check out how to initially Setup Analytics . If you have installed the Google Analytics by Yoast plugin as recommended in my Essential WordPress Plugins article then it is easy to set up Analytics on the website. I'd recommend you Track outbound click and downloads and set it to enable Universal Analytics.

Google Analytics Goals

Every website has a goal you wish your visitors to achieve. It could be getting a lead or subscription via a form or getting a sale. Google analytics lets you track some of these goals so that you can see what activities are causing the most goals and therefore are most valuable to you.

My instructions in the Essential WordPress Plugins for Contact Form 7 include information on tracking form submissions as goals.

My article on Google Analytics Goals should also help.

Google Analytics Site Search

This is an easy one to setup and it lets you see what people searched for via the websites search feature.

  1. In Admin find the View Settings
  2. Switch on Site search Tracking
  3. Enter s as the Query parameter
  4. Save

Then you can view them in Reporting->Behaviour->Site Search.

Google Analytics - Demographics Tracking

Demographics are things like the age, gender and interests of the people who visit your website.

Demographics Tracking requires your website to gather information on your visitors. Because of this, before you can see Demographics data you need to make sure your Privacy Policy conforms to Google's Remarketing Privacy Policy Requirements .

Once that's in place you can enable Demographics and Interest Reports via Admin->Property Settings. You may also want to enable Advertiser Features while you are there.

Finally you need to enable it on the website. Google Analytics by Yoast has an option to do that.

Google Analytics - Custom Events and Pageviews

Analytics lets you add custom events and pageviews. This is how Google Analytics by Yoast tracks external links and downloads for you. Note that if you use the plugin and want to implement your own code then you need to change the ga() calls to __gaTracker() calls.

Google Search Console

All website owners should verify their website with the Google Search Console (Google Webmaster Tools) . It is an essential tool for an SEO as it tells you insider information on how Google is indexing your website. A few days after verification and you will see data related to crawling, indexing, sitemaps, linking as well as error reports and messages to help you keep your website running well.

The first thing to do is add all your sites to your account. Yep, even if you only have one domain name, you have several sites:

  • domain.com
  • www.domain.com
  • https://domain.com
  • https://www.domain.com

Replace domain.com with your actual domain.

If you have already set up Analytics on the same account you should be able to verify each automatically using the Analytics verification options. Otherwise follow the instructions to use another method.

You can formally link your Google Search Console account to your Analytics account. In Analytics go to Admin->Property Settings and scroll to the end to see the option. This lets you see your Google Search Console data in Analytics->Reporting->Acquisition->Search Engine Optimisation.

Google Search Console - Preferred Domain

As you saw earlier, you actually have 4 sites for your one domain. It is best practice to pick one and stick with it (forever). This removes the chance of technical issues with duplication.

In the Google Search Console you can select your preferred site via the Site Settings which you can find by clicking on the right hand cog button.

Make sure you set your Google Search Console sites to prefer same site as your settings in WordPress->Settings->General.

Pro tip: If you have not made a preference choice yet, look at Google Search Console->Search Traffic->Links to Your Site for each site and pick the one that has the best looking set of links.

Google Search Console - Target Region

Google allocates a region to every site. This is the region your website is officially targeting and therefore it may perform better there.

Go to Google Search Console->Search Traffic->International Targeting->Country to see your options.

If you have a domain that is country specific (like mine) then you have no choices and will automatically be targeting your own country.

Some domains (like .com ones) are country independent. For these you want to make sure you set it to the country you most want to target. There is an unlisted option but I don't know the consequences of using it!

Google Search Console - XML SiteMap

XML Sitemaps are machine readable files that list all the pages on your website. The Google Search Console lets you specify a sitemap for your site in Google Search Console->Crawl->Sitemaps

If you have installed WordPress SEO by Yoast then it will create the XML Sitemap for you. Just enter this when adding your sitemap:


Myth Busting: You don't need to keep re-submitting your sitemap. Google will periodically get the latest one on its own.

Sitemaps do not in themselves help you rank, however they can help Google decide how to crawl the website.

Submitting also means you can see how well the pages in the sitemap have been crawled. After a while most websites should be at a point where most pages are indexed.

Semantic Markup

It is possible to add extra markup to content to explain its meaning better. This is called semantic markup and is commonly implemented using metadata and schema.org . In some cases it can cause enhanced search results for you called rich snippets.

One form of rich snippets is called Breadcrumbs and WordPress SEO by Yoast can help you set them up via their Internal Links section.

Other common types of markup are for local businesses, organisations, products, reviews and recipes. You may find a plugin to do what you need, or you can code it yourself.

Unfortunately the WordPress editor removes any metadata you add to pages or posts. If you do want to add metadata then adding this code to the themes functions.php file will fix that.

// Prevent TinyMCE from stripping out schema.org metadata
function schema_TinyMCE_init($in)
     *   Edit extended_valid_elements as needed. For syntax, see
     *   http://www.tinymce.com/wiki.php/Configuration:valid_elements
     *   NOTE: Adding an element to extended_valid_elements will cause TinyMCE to ignore
     *   default attributes for that element.
     *   Eg. a[title] would remove href unless included in new rule: a[title|href]
        $in['extended_valid_elements'] .= ',';

   $in['extended_valid_elements'] .= '@[id|class|style|title|itemscope|itemtype|itemprop|datetime|rel|rev|charset|href|lang|tabindex|accesskey|type|name|target|onclick|onfocus|onblur],div,dl,ul,dt,dd,li,span,a,h1,time,p';

    return $in;
add_filter('tiny_mce_before_init', 'schema_TinyMCE_init' );

The code is based on this bit of code with the extensions options changed to more fully support schema.org requirements.