Product support

Visit this product's website for support.


Renatio SEO Manager Plugin

Demo URL: https://october-demo.renatio.com/backend/backend/auth/signin

Login: seomanager

Password: seomanager

Plugin adds SEO functionality to October CMS. It supports CMS Pages, RainLab.Pages, RainLab.Blog, October CMS Tailor out of the box. With one line of code can be attached to any October CMS model. One robust solution for all your SEO needs.


  • Support for CMS Pages, RainLab.Pages, RainLab.Blog
  • Import default values from CMS Pages, RainLab.Pages, RainLab.Blog
  • Open Graph support
  • Robots meta configuration
  • Canonical URLs
  • 301 Redirects
  • Easy edit robots.txt and .htaccess in CMS Settings
  • Easy integration with other plugins
  • Fully compatible with RainLab.Translate for multi-lingual support
  • Fully support for October CMS Tailor

Why is this a paid plugin?

Something that is free has little or no perceived value. Users do not commit to free products and only use them until something else looks nice and is free comes along. When I invest my time in the development of a new plugin I commit to supporting and maintaining it. I ask my customers to do the same. I do not make money from this plugin by advertisements, upgrades or additional services like hosting or setup.

Did you know that 30% of your purchase or donation goes to help fund the October Project?

My plugins take many hours to develop (40-120+) and even more hours to document and maintain. My paid plugins have to pay for both this time, and the time I am spending on free plugins and less successful paid plugins. This means that it will take even a successful plugin years to become profitable. Please consider buying an extended license if you want me to continue to maintain these plugins for the very small fee I ask in return or hire me for adding functionality that you feel is missing but valuable.

Like this plugin?

If you like this plugin, give this plugin a Like or Make donation with PayPal.

My other plugins

Please check my other plugins.


Please use GitHub Issues Page to report any issues with plugin.

Reviews should not be used for getting support, if you need support please use the Plugin support link.

Icon made by Darius Dan from www.flaticon.com.


After installation all CMS pages, Static pages, Posts, Categories will now display additional tabs with SEO and Open Graph fields.

To display meta information on frontend page you must only place single SEO component in theme layout head section.

<!DOCTYPE html>
        {% component 'seoTags' %}

October CMS Tailor

Plugin adds two mixins with Meta and Open Graph fields to Tailor. You just need to add them to your blueprint Entry in fields section like so:

    type: mixin
    source: Renatio\SeoManager\MetaFields

    type: mixin
    source: Renatio\SeoManager\OgFields

After that remember to save and migrate blueprint or run php artisan october:migrate command.


Plugin ships with a settings page. Go to Settings and you will see a menu item SEO configuration listed under SEO bookmark.

Settings allow you to specify SEO Title prefix/suffix.

You can write common meta tags used in all pages e.g.

<meta name="author" content="Renatio">
<meta name="viewport" content="width=device-width, initial-scale=1">

You can enable/disable Open Graph tags output, specify Open Graph site name and Facebook Application ID.

You can edit robots.txt file and .htaccess file.

Editing .htaccess file may break your site if not set up properly, so proceed with caution. This can be restricted by setting user permission.

SEO fields

Available SEO fields:

SEO Title

Defines the title of a document. Title tags are often used on search engine results pages (SERPs) to display preview snippets for a given page, and are important both for SEO and social sharing. Read more.

SEO Description

Meta descriptions are HTML attributes that provide concise explanations of the contents of web pages. Meta descriptions are commonly used on search engine result pages (SERPs) to display preview snippets for a given page. Read more.

Meta Keywords

A series of keywords you deem relevant to the page in question.

Meta Robots

The robots meta tag is not the same as the file called robots.txt. You should use these two together. Both are used by the search engines like Yahoo and Google. Read more.

Canonical URL

Canonicalization for SEOs refers to normalizing (redirecting to a single dominant version) multiple URLs. Read more.

301 Redirect

Redirection is the process of forwarding one URL to a different URL. There are three main kinds of redirects: 301, 302, and meta refresh. Read more.

More fields can be added on request.

Open Graph fields

Available Open Graph fields:

OG Title

The title of your object as it should appear within the graph, e.g., "The Rock".

OG Description

A one to two sentence description of your object.

OG Type

The type of your object, e.g., "article".

Og Image

An image URL which should represent your object within the graph.

Read more about Open Graph Protocol.

More fields can be added on request.

Integration with models

SEO fields can be attached to any October CMS model with single line of code. You just need to implement SEO Behavior in your model class like so:

public $implement = ['@Renatio.SeoManager.Behaviors.SeoModel'];

After implementing this behavior to your model class, SEO Manager will extend it with SEO fields.

The next step is to add SEO columns to models table. This can be done by running following command. This command will scan all models that are implementing SeoModel behavior and add SEO columns to the database tables.

php artisan seo:migrate-tables

To allow SEO Manager Plugin to recognize page with specific model attached you must pass it to the page view. This is most often done in component onRun() method like so:

$this->page['album'] = Album::find($id); // pass album record to page view

Extending SEO fields

Plugin will fire seo.extendSeoFields event to allow for extensibility. This can be used to modify or add more SEO fields. You can listen for this event like so:

Event::listen('seo.extendSeoFields', function ($fields) {

    // modify or add more fields

    return $fields; // remember to return modified fields array

Similar approach can be used to extend Open Graph fields with seo.extendOgFields event.

Model fields are saved to database, so you must add columns to renatio_seomanager_seo_tags table before you can use them.

Access SEO Tag before rendered on page

Plugin will fire seo.beforeComponentRender event to allow for extensibility. This can be used to access page with associated SEO Tag. The assigned model should implement SeoModel behavior.

 * Assign new seoTag for product page
Event::listen('seo.beforeComponentRender', function ($component, $page) {
    if ($page->url == '/products/:slug') {
        $component->seoTag = $page->controller->vars['product'];

Console commands

Plugin will create three new artisan commands for working with console.

php artisan seo:migrate-tables command will migrate tables for all models implementing SEO behavior to add SEO columns. There is additional option --table= that can be used to specify the database table where you want to add SEO columns.

php artisan seo:patch 3.0 command will migrate data from renatio_seomanager_seo_tags to models that implement SeoModel behavior.

php artisan seo:import-cms command will import SEO from CMS pages.

php artisan seo:import-static command will import SEO from RainLab Static pages.

php artisan seo:import-blog command will import SEO from RainLab Blog posts and categories.

  • Found the plugin useful on 10 Feb, 2020

    Great plugin. But what's going on with the plugin when adding blogs? It is duplicated and takes up the whole page, making it super difficult to scroll and write blogs. Please fix! ?

  • author

    Replied on 10 Feb, 2020

    Thank you for the review. Please update to version 1.3.3.

  • Found the plugin useful on 5 Feb, 2020

    Would recommend keeping it in your standard developer toolbelt for OctoberCMS sites.

  • Found the plugin useful on 25 Jan, 2020

    Hi, is there a solution to have translation?

    Currently commented:


    • Currently RainLab.Translate Plugin does not support relation fields, waiting for fix. */ //$this->model->translatable = array_merge($this->model->translatable, (new SeoTag)->translatable);

  • Found the plugin useful on 9 May, 2019

    Awesome plugin! However, when I collapse the component to reveal the html markup, the plugin no longer works i.e. the component variables don't pull through any SEO data.

    Any ideas on how to fix this?

    I am running SEO Manager version 1.2.2 and October build 454.


  • Found the plugin useful on 11 Apr, 2019

    I love this plugin. But somehow in my front page, the seo title get a plus seo title, which comes from blog categories... How can i fix this?

  • author

    Replied on 7 Feb, 2020

    If you still have this problem, than please create an issue on GitHub.


  • Found the plugin useful on 23 Dec, 2018

    Great plugin, easy and intuitive to set up, congratulations !

    However i wonder if this is an issue : why the fields which are translatable into StaticPages context are not translatable into blog post context ? Possible fix please ? :)

    Best regards and happy Xmas

  • Found the plugin useful on 29 Oct, 2018

    This plugin is essential for most of my projects, however I do have my own SEO fields in most of cases in my plugin's models. Using Event::listen beforeComponentRender and injecting my own data to the component. Since almost all my projects are multilingual this is very useful and I'm in full control of my language fields. I also have to rewrite the components default.htm since og:image in a default version can only be taken from Media finder. By adding few IF ELSEs I can use images from any place now.

  • Found the plugin useful on 5 Oct, 2018

    Amazing plugin. Works out of the box and this is how SEO should be in OcotberCMS! Just one tiny problem...

    Meta Robots Index and Meta Robots Follow don't do anything when I change the values to no index and no follow on a static page.

    <meta name="robots" content="{{ seoTag.robots }}">


    <meta name="robots" content="index, follow">

    and I want it to say when I set no index and no follow on the SEO tab of a page:

    <meta name="robots" content="noindex, nofollow">

    Thank you in advance!

  • author

    Replied on 17 Nov, 2018

    This should be fixed in v1.2.2.

  • Found the plugin useful on 10 Aug, 2018


  • Found the plugin useful on 25 Jul, 2018

    It's like magic! But.. can you make the "SEO Title" and "Og Title" just copy/use the same as the "Post title"? The same for the description! It's kinda annoying to write the same thing 3 times.

    Everything else is just wonderful!


  • author

    Replied on 25 Jul, 2018

    Thanks for the review!

    It is not documented, but just leave SEO Title and Description empty. They will default to your post Title and Excerpt/Description. As for OG Title and Description, they will default to SEO Title and Description if left empty.


  • Found the plugin useful on 30 Apr, 2018

    I experienced a crash at installation because my meta_description from my blog was too long.

    According to the version.yaml. This is what happens: In 1.0.1: Set meta_description to length of 160 In 1.0.2: Call the import default command which checks that the field does not go over 255 In 1.1.5: Increase the field length to 255

    In my case, I had to remove the line with import_default_values.php, reinstall the plugin and then run manually the import command.

    The call to import_default_values.php should be moved after 1.1.5 in version.yaml.

  • author

    Replied on 12 Jul, 2018

    Thanks for support!

    This should be fixed from version 1.1.10.

  • Found the plugin useful on 25 Aug, 2017

    Absolutely brilliant. Very quick to install and I love the way it works with models.

  • Found the plugin useful on 11 Apr, 2017

    Best SEO plugin. Would be even better if you extended it to JKShop

  • author

    Replied on 12 Jul, 2018

    Thanks for support!

    Please contact JKShop and ask them to add support for my SEO plugin.

    They will only need to add this line of code to models where SEO fields should be available:

    public $implement = ['@Renatio.SeoManager.Behaviors.SeoModel'];

  • Found the plugin useful on 9 Apr, 2017

    Thank you for this nice plugin. You don't need much time to set it up. Everything is self-explanatory.

    It would be nice if the meta title and the description are translatable. Can you add this feature please?

  • Found the plugin useful on 13 Sep, 2016

    Great plugin! Helps a lot!!!


Update SEO chars limit to latest recommendations.

Nov 24, 2023


Fix extending SEO Tag.

Jan 15, 2023


Add demo URL.

Nov 12, 2022


Fix Tailor SEO blueprints.

Nov 08, 2022


Improve default value for import CMS pages.

Nov 08, 2022


Require October CMS 3.1. Add support for Multisite.

Oct 15, 2022


Fix twitter media link.

Jul 11, 2022


Composer config.

Jun 17, 2022


Require October CMS 3.0. Add October CMS Tailor support.

Jun 13, 2022


Fix error on migration Translate plugin.

Feb 23, 2022


Add check for Translate plugin.

Feb 23, 2022


Require October CMS 2.1.

Jan 04, 2022


Fix issue with migration tables console command.

Sep 21, 2021


Add support for translatable SEO fields for models.

Sep 20, 2021


Update documentation.

Sep 17, 2021


Add support for October v2.0. Drop support for October v1.0.

Sep 17, 2021


Fix config for media path issues.

Aug 05, 2021


Fix adding SEO fields twice error.

Feb 10, 2020


Fix repeater field error on Static Pages.

Feb 10, 2020


Fix link policy ignored in currentUrl. Thanks @petehalverson.

Feb 07, 2020


Fix CMS pages translation.

Feb 07, 2020


Fix issue with robots and 301 redirect properties.

Nov 17, 2018


Fix issue with extending form fields for models.

Nov 17, 2018


!!! Change event parameters for plugin extension. See upgrade guide.

Nov 17, 2018


Add default value for meta robots tag.

Jul 13, 2018


Fix installation and import issues.

Jul 10, 2018


Fix adding SEO fields to pivot models (edge case).

Feb 25, 2018


Ensure OG image dimensions are set.

Feb 02, 2018


Fix adding SEO fields inside repeater fields.

Feb 02, 2018


Make polymorphic fields nullable.

Feb 02, 2018


Increase meta title and description fields length.

Feb 02, 2018


Fix adding SEO fields for model with pivot

Dec 02, 2017


Fix attaching morphOne relation to model.

Nov 24, 2017


Fix attaching SEO fields to model with empty tab fields.

Nov 24, 2017


Fix RainLab.Blog installation issue.

Nov 24, 2017


!!! Update only for Laravel 5.5 LTS

Aug 14, 2017


Fix showing Seo fields in repeater

Apr 22, 2017


Fix repeater field error in RainLab.Pages plugin

Mar 12, 2017


Fix spaces on prefix/suffix title

Sep 01, 2016


Fix bug for PHP version < 5.6

Aug 31, 2016


Import SeoExtension Settings

Aug 05, 2016


Import data

Jul 30, 2016


First version of Seo Manager

Jul 26, 2016

Upgrading To 1.1.0

Plugin requires October CMS build 420+ with Laravel 5.5 and PHP >=7.0.

Upgrading To 1.2.0

Parameters for seo.beforeComponentRender event were changed. Now the first parameter is $component itself. You can access it seoTag property as in example in README. The second parameter is the $page variable.

Upgrading To 2.0.1

Plugin requires October CMS version 2.x with Laravel 6 and PHP >=7.2.9.

Drop support for October CMS version 1.x.

Upgrading To 3.0.0

Remove seo_tag relation for models implementing SEO model behavior

October CMS and RainLab.Translate does not fully support polymorphic relation for models.

To solve this problem and make integration with other models available you must add columns to model database table. There is new console command that will scan for all models that implement SeoModel behavior and migrate database tables to add required columns.

php artisan seo:migrate-tables

There is also new command that will migrate old data from renatio_seomanager_seo_tags to models that implement SeoModel behavior.

php artisan seo:patch 3.0

Access SEO Tag before rendered on page

Access SEO Tag before rendered on page changed. Now you just need to return the model, that will have SEO fields. The seo_tag relation on model is no longer supported. Read more in documentation.

 * Before
Event::listen('seo.beforeComponentRender', function ($component, $page) {
    if ($page->url == '/products/:slug') {
        $component->seoTag = $page->controller->vars['product']->seo_tag;
 * Now
Event::listen('seo.beforeComponentRender', function ($component, $page) {
    if ($page->url == '/products/:slug') {
        $component->seoTag = $page->controller->vars['product'];

Upgrading To 4.0.0

Plugin requires October CMS version 3.0 or higher, Laravel 9.0 or higher and PHP >=8.0.

Add October CMS Tailor support.

Drop support for October CMS version 2.x.

Upgrading To 5.0.0

Plugin requires October CMS version 3.1 or higher.

Add October CMS Multisite support for RainLab.Translate plugin v2.0