This guide will define what elements a CMS must include from an SEO point of view and will include the following:

Meta Data

This section covers elements within the <head></head> section of the HTML code.

Page Titles

Field NameDescription
page-titlePage title tags are an important ranking factor. A page’s title tag must directly correspond to that page’s content, and should incorporate keywords.

Page titles must be unique for each page.

Character limit: approx. 55 characters or 512 pixels.

The CMS should feature a field to add custom page titles

Category Rule{Category} [insert keyword here] | Kwasi Studios
Sub-Category Rule{Sub-Category} – {Parent Category} | Kwasi Studios
Product Rule {Product Name} | Kwasi Studios
Source Code<title>{page-title}</title>

^ Back to Top

Meta Descriptions

Field NameDescription
meta-descThese are important, as search engine results often display an excerpt from your meta description. The description they provide for a page can influence its click-through rate.

They must be unique for each page.

Character limit: 156 characters.

The CMS should feature a field to add custom meta descriptions

Source Code<meta name=”description” content=”{meta-desc}”/>

^ Back to Top

Canonical Tag & Pagination

Field NameDescription
canonical-linkThe canonical tag is designed explicitly for the purposes of identifying and dealing with duplicate URLs. As duplicate content does occur, there should be a canonical URL field in the CMS.

The canonical URLs will be important on the pages that use filters. The URLs that contain the filtered parameters will need to have a canonical URL set that points to the main category page for that filter.

E.g. in the case of these 2 URLs:

We only want Google to index: as the original page.

An example of the canonical tag to be used on the duplicate page is shown below:

<link rel=”canonical””/>

The CMS should feature a field to edit the canonical tag.

Rule for pagination issueIn some cases, there are a series of pages that have the same meta data & headers. Search engines look at these pages as duplicates & may not index them correctly.

We need to implement pagination rules to ensure that the correct page is indexed and that links to the subsequent pages are followed.

E.g. in the case of these 4 hypothetical URLs:

We only want Google to index: as the original news page and employ pagination rules on the subsequent pages.

e.g. The code shown below needs not be added to each corresponding page to handle pagination issues:

Main Blog Page and Pagenumber=1 example:

<link rel=”canonical” href=””/>

<link rel=”next” href=”>

Page 2 example:

<link rel=”canonical” href=”>

<link rel=”prev” href=””/>

<link rel=”next” href=”>

<meta name=”robots” content=”NOINDEX”/>

^ Back to Top

On Page

This section covers elements within the <body></body> section of the HTML code.

Heading Tags

Field NameDescription
headingThe unique headline of the page. The H1 must be as close as possible to the opening <body> tag. This can be achieved by absolute positioning of the heading element.

There should be only one H1 per page. Do not use the H1 tag for any other purpose (e.g. logos)

Source Code<h1>{heading}</h1>

^ Back to Top


Field NameDescription
img-filenameTotal URL length must not exceed 100 characters.

Same restrictions apply as in the URLs section.

Use absolute path which includes the domain.

img-altDescribe the image using keywords.

The length of the ALT text should not exceed 100 characters

Image SizeKeep the image size below 100kb whenever possible.
Source Code<img src=”{img-filename}” alt=”{img-alt}”/>

^ Back to Top

Additional Requirements


The robots.txt file will help block search engine bots from crawling certain pages of the website that shouldn’t be indexed by search engines.

The robots.txt file should be uploaded to the root folder and accessible through a browser via the URL

Field NameDescription
User-agent:Specifies the crawler/search engine bot that you want to block access for. Using a ‘*’ denotes all robots.
Disallow:Specifies which directory or sub-directory needs to be blocked from robots
Code:User-agent: [crawler name]
Disallow: [directory path]
Example: User-agent: *
Disallow: /[sub-folder]

^ Back to Top

XML Sitemap

The sitemap lets us specify which pages should be crawled by search engines.

The XML sitemap should be uploaded to the root folder and accessible through a browser via the URL

As an alternative, a dynamic sitemap should be implemented that is automatically populated with the URLs of new pages that are added to the website.

Field NameDescription
<urlset>Encapsulates the file and references the current protocol standard.
<url>Parent tag for each URL entry. The remaining tags below are children of this tag.
<loc>URL of the page. This URL must begin with the protocol (such as http) and end with a trailing slash, if your web server requires it. This value must be less than 2,048 characters.
<lastmod>The date of last modification of the file. This date should be in W3C Datetime format. This format allows you to omit the time portion, if desired, and use YYYY-MM-DD.
<changefreq>How frequently the page is likely to change.
Example<urlset xmlns=” xmlns:xsi=”” xsi:schemaLocation=””>


^ Back to Top


Field NameDescription
Non-WWW to WWW RedirectsWe need to ensure that only one version of the website is available for search engines to crawl and index. For this it is important that all non-www URLs are redirected to their WWW counterpart.
301 RedirectsRedirect old content using 301 redirects. Ensure that 301 and 302 HTTP server code looping is avoided. For detailed migration plan please refer to the migration spreadsheet to be supplied at later stages of the project.

^ Back to Top