Blog MX for Magento 2

View Demo

Blog MX runs your blog inside Magento, with Page Builder posts, comments, and SEO checks in the admin you already use. Every post, category, author, and tag can differ per store view.

  • Score every post for SEO before publishing
  • Move an existing blog over for free
  • Format the content with Page Builder
  • Organize posts with categories and tags
  • Moderate comments without leaving Magento
  • Add related products to any post
Need real-life examples?
Check out our blog: it has run on Blog MX since 2022, with over 100 posts.
Free migration from other extensions
Our team moves your posts, categories, and authors across from WordPress or another blog extension, at no charge.
Marketplace Approved
Hyvä
Magento Cloud
Tailwind JIT
WCAG
Mage-OS
Compatible with:
Community:
2.3.* - 2.4.9
Enterprise:
2.3.* - 2.4.9
Problem

Content brings people to your store before they are ready to buy. Magento has no blog of its own, so most merchants end up running one on a separate platform, with a second admin panel, a second theme to maintain, and product links that go stale.

Solution

Blog MX puts the blog inside Magento. Posts, categories, authors, and comments live in the admin you already use, on the theme you already run.

Why choose the Blog MX module for Magento 2

A blog on your own domain earns traffic that keeps paying after the ad budget stops. The reason to run it inside Magento rather than next to it comes down to three things.

Search engines find your posts without extra work

New articles are added to the Magento XML sitemap automatically, so Google learns about a post that nothing links to yet.

Each post, category, author, and tag page gets a canonical URL, its own robots directive, and hreflang alternates when you run several languages. Structured data is emitted as BlogPosting or NewsArticle, with the properties and description source you choose.

Articles send readers into your catalog

Because the blog shares a database with the store, a post can pull in live products: hand-picked, or filled automatically from a catalog category so the block keeps itself current as the category changes.

Posts can also surface on product pages, category pages, and even the 404 page, which turns a dead end into a reading list.

Publishing stays a Magento job

One admin, one theme, one set of user permissions. Writers work with Page Builder, the same editor they use for CMS pages, and the blog inherits your storefront design instead of imitating it.

The frontend is built from widgets and is tested against Luma and Hyvä, with WCAG 2.2 AA accessibility checked as part of that work.

Speed up your blogging process

Blog post edited in Magento Page Builder

Page Builder support

Write posts in Magento Page Builder: rows, columns, lists, images, and video, with no separate editor to learn.

Our quick start guide walks through the first post, from creating an author to putting the blog on your storefront menu.

Post preview opening in a new tab

Publish polished content

Preview shows the article exactly as readers will see it, on the storefront theme, before anything goes live.

It catches what a draft view cannot: layout that breaks at the wrong width, an image that sits in the wrong place, a headline that wraps badly.

Store view selector on the post edit form

A different blog for every store view

Most extensions treat multi-store as translation. Blog MX treats it as separate content. Switch a post to a store view and almost every field gains a "use default" toggle you can clear:

  • Posts: title, excerpt, body, featured image and its alt text, URL key, meta title, description and keywords, author, publish and last-modified dates, status, and whether the post is pinned.
  • Categories: name, content, status, sort order, URL key, and meta tags.
  • Authors: name, job title, photo, short and full bio, URL key, and meta tags.
  • Tags: name and URL key.
  • Layouts: each store view can use its own page layout or inherit the shared one.

So a German store view can run a different article, under a different URL, by a different author, on a different layout, while the rest of your stores keep the original. Admin and storefront text ship in 16 languages.

Simple cross-sell and up-sell

Related products block inside a blog post

Drop the Related Products widget into a post and choose where the products come from: a manual list you arrange by drag and drop, or a catalog category that fills the block for you and follows that category's own anchor and sorting settings.

If you run Automatic Related Products, its selection rules become a third option. Sort order, direction, and the product list itself can differ per store view.

Publish date and time field on a post

Plan your publishing

Set a future date and time and the post appears on its own, which is what makes an editorial calendar or a news section practical to keep.

Deleted posts go to a Trash bin rather than disappearing. Restore one and it comes back with its original URL and related-post links intact; anything older than your retention period, 30 days by default, is cleared by cron.

Move your existing blog over

Switching platforms usually stalls on the archive, so we do that part for you: our team migrates posts, categories, authors, and images from WordPress or another Magento blog extension, free of charge.

The same applies if you are still on the old free Mirasvit blog module. Ask support before you install and we will plan the upgrade.

Make your blog on Magento visually unique and easy to navigate

Nested blog categories in the storefront navigation

Easier navigation with a multi-level structure

Nest categories as deep as the subject needs, and let the category widget show either the whole tree or just the branch the reader is currently in.

Search suggestions appearing under the blog search bar

Instant blog search

The search box works both ways: suggestions appear as the reader types, and a full results page is there for longer queries.

Native Magento search does not look inside blog posts at all. With Search Ultimate installed, your articles also show up in the main store search and its autocomplete, alongside products.

Dragging a widget in the blog layout editor

Configure the blog layout with drag and drop

Build each page type in the Layout Editor: choose a one or two column layout, then drag blocks into the main column and the sidebar. Saving clears the relevant cache, so the storefront updates immediately.

Deeper design changes still belong in your theme templates, and the code ships unencrypted so your developer can make them.

Prebuilt widgets for quick blog layout design

Widget type dropdown in the Magento admin

The whole frontend is made of widgets, and there are 12 types to work with: posts, post view, post comments, related products, category list, tag cloud, search box, author, newsletter, RSS, CMS block, and post list.

The Posts widget alone ships 8 templates, from a single hero article to card grids and sidebar sliders.

List of available Blog MX widgets

Blog in Magento 2 with custom widgets and templates

Widgets go on any page of the store, not only blog pages, and they read the context of the page they sit on: put a post list on a category page and it shows posts for that category.

Need something the templates do not cover? Point a widget at a custom template in your theme.

Promote blog posts on the pages of your store

Recent posts block on a 404 page

Recent or related articles can sit on product pages, category pages, or the 404 page, where a list of posts is more useful than a dead end.

Related posts are ordered by relevance: articles sharing the most tags come first, then ones in the same category.

Establish trust with readers through author pages

Author page with photo, bio, and article list

Give each writer a page with a photo, a bio, and links to their profiles, then let readers browse everything that author has written.

Named authors with visible credentials read as more trustworthy, to people and to the systems that assess content quality. Posts also carry an author meta tag and per-store author overrides, so a translated article can credit the person who actually wrote that version.

Let your readers promote your blog articles

Social sharing buttons under a blog post

Sharing runs on AddToAny: paste your button code into the settings and pick whichever networks your readers actually use. Because the set is yours, you are not stuck with someone else's list of icons.

Let readers leave comments in blog to boost engagement

Comments are included, and they run on your own site rather than through a third party.

Guests can post, optionally with a required email address, or you can limit commenting to signed-in customers. Turn automatic approval off and everything waits in a moderation queue in the admin, where you approve, reject, or reply. Admins are notified about pending comments, participants get an email when someone answers them, and readers can vote a comment helpful or unhelpful. Facebook comments remain available if you prefer them.

Small things that keep people reading

Posts show an estimated reading time and a progress bar as the reader scrolls, and a table of contents widget builds itself from the headings you choose.

You can also publish a post by direct link only, protected with a password, which is handy for an embargoed announcement or a page meant for one client.

Get into Google's top with embedded SEO features

Check content quality across the whole blog

Content quality score panel on a post

Every post gets a content score, and the Content Checker screen lists all of them in one grid so you can see which articles need work instead of opening them one by one.

It also flags posts containing links that lead nowhere and images that fail to load, which is the kind of rot that accumulates quietly in an older archive.

You decide what the score means: switch individual checks on or off and set how much each one counts. Scores are stored per store view, calculated in the background so saving a post is never slow, and available over the REST API. Access is controlled by its own permission.

Simple interface for meta tags

Meta title and meta description fields on a post

Meta title, description, and keywords sit right below the content, and each can be overridden per store view.

Robots directives are set per entity, so you can noindex a thin tag page while leaving posts indexable, and the blog keeps its own default separate from the site-wide Magento setting.

Automatic SEO-friendly URLs

Readable URL key generated from a post title

Google recommends keeping URLs readable, and Blog MX builds one from the post title automatically.

Set a base URL and a suffix to shape the whole blog's URL structure, and external links in post content can be given rel="nofollow" in bulk.

Blog entries listed in the Magento XML sitemap

Automatically updated sitemap to inform Google about your new blog posts

A new post has no inbound links yet, so Google may take weeks to notice it. Blog MX adds posts and categories to the Magento XML sitemap as they are published.

If you want sitemap rules across the whole store rather than the blog alone, that is what Advanced SEO Suite is for.

Rich results for your articles

Posts are marked up as BlogPosting or NewsArticle, with author, publish date, and last-modified date, so Google can render your article the way it renders news.

You choose which optional properties to include and whether the description comes from the excerpt or the meta description. Dates carry proper timezone data.

Score a post before it goes live

SEO score report for a single post

Run the check from the post edit page and you get a report on the things that are easy to forget: whether your keyword appears in the meta tags, whether those tags are the right length, whether the article has images.

Each finding comes with a recommendation, so the fix does not require guessing.

Write with AI, if that is how you work

Blog MX works with our AI Assistant extension: it can draft titles, generate post content and images, and run automation rules over posts and categories, including per store view. AI Assistant is a separate product, not part of this module.

See Blog MX running on the demo store, front and back
No hidden fees
Lifetime access to source code
Access to free support and updates for 1 year
Updates and support prolongation - $132

Pay today $219 for the first year.

Then $132 for updates and support services per year.

Cancel anytime.

30 days money back guarantee
See it in action!
Pick a quick tutorial to learn about various aspects of this extension
Customer Reviews 20
Earn points for your review about this extension modules. $1 = 10 points
Write Your Own Review

check-circle You submitted your review for moderation.

BBMC Verified Buyer
From Carol Stream, United States
Using the module for over 2 years
A Magento blog that actually feels integrated with the store
What I like most about the Mirasvit Blog is that it is not just a separate publishing system bolted onto Magento. It integrates directly with products, Magento content, and other Mirasvit extensions.

Associating articles with relevant products or other content is quick, scheduling is straightforward, and there are plenty of layout and customization options without making everyday publishing complicated. Creating, scheduling, and deploying new content is easy enough that the extension does not become a burden to maintain.

Hyva compatibility is another major advantage for us. Mirasvit has been superb about supporting Hyva across its extensions without requiring additional purchases or custom modules.
Also installed:
Help Desk MX,  Knowledge Base,  Full Page Cache Warmer,  Advanced Product Feeds,  Follow Up Email,  Reward Points,  Promo Banners and 27 more
Łukasz Verified Buyer
From Gdańsk, Poland
Using the module for over 1 year
Good blog for magento.
Very much configuration options, nice view o hyva theme, good price for value.
Also installed:
Advanced SEO Suite,  Improved Sorting,  Mass Product Actions,  Order Management,  Admin Bookmarks,  Product Labels,  GDPR and 16 more
Bruno Verified Buyer
From Feira, Portugal
Using the module for over 1 year
Awesome module
Probably the best module for a blog. Plays very well in Hyva stores. The version 2.x is extremely good.
Also installed:
Knowledge Base,  GDPR,  Facebook Pixel & Conversion API,  Advanced Reports
TooManyBugs Verified Buyer
From Denmark
Using the module for 7 months
Too many bugs
In general, the blog extention has too many bugs for being a great extention. Like the review from "bl0gr" i experience the exact same thing - obvious bugs occuring, making me think i'm the only one using the extention. Upside is the same, support is good at fixing them, this is also good, but for a paid extention i'm expecting more quality. The task in creating and testing for mirasvit, is just too timeconsuming.
Also installed:
Layered Navigation,  Shipping Table Rates,  Google Tag Manager,  Elastic Search Ultimate,  Product Labels,  RMA,  Product Attachments and 12 more
bl0gr Verified Buyer
From Halstenbek, Germany
Using the module for over 1 month
Too many bugs
I know this review will never see the light of day. But since you just asked me to write a review...
Since I bought this module I stumbled onto way too many way too obvious bugs I had to report and/or fix myself.
Those bugs are so obvious that I came to think I might be the only one actually using/implementing it.
Upside: your support has taken care of most of my reports to this date.
But for a paid module the overall quality is not satisfactory.
Also installed:
Layered Navigation,  Elastic Search Ultimate,  Affiliate,  Follow Up Email,  Product Kits ,  Product Attachments
Manual & Support
Need more help?

Save time by starting your support request online and we'll connect you to an expert.

Frequently asked questions
chevron-down chevron-right

Do blog posts get added to the XML sitemap?

Yes, and it is built in. Turn on Sitemap in the Blog MX configuration and your posts and categories are added to the Magento XML sitemap automatically, so search engines can find new articles without waiting for another page to link to them.

You only need Advanced SEO Suite if you want more than that from your sitemaps across the whole store: change frequency and priority rules, image and hreflang entries, and splitting large sitemaps. For the blog alone, Blog MX is enough.

chevron-down chevron-right

Can I change the blog layout from the Magento admin?

Yes. The Layout Editor under Content > Blog MX lets you build each blog page type separately: pick a one or two column layout, then drag widgets into the main area and the sidebar. Saving a layout clears the relevant full page cache, so the change is live right away.

Each store view can have its own layout, or inherit the default one. Where the editor stops is theme-level design: fonts, colours, and spacing come from your storefront theme, and deeper changes are made in template files. The code ships unencrypted, so your developer can edit those templates freely.

chevron-down chevron-right

Is there still a free version of Blog MX?

No. Blog MX started as a free extension, but that package was retired: its last release was in 2020, it is marked as abandoned on Packagist, and it does not support current Magento versions or receive security fixes. We do not recommend installing it.

If you are still running the old free module, you can move to Blog MX and keep your posts, categories, and authors. Ask our support team and we will handle the upgrade for you.

chevron-down chevron-right

Is Blog MX a PWA-ready extension?

No. Blog MX renders through Magento templates and is fully responsive, including on Hyvä, so it works well on phones and tablets. You can see it on the demo store.

What it does not do is run as a headless or PWA storefront: there is a REST API for blog entities, but no GraphQL layer, so the blog cannot be published as a standalone app on the App Store or Google Play. If your storefront is headless, this is the limitation to weigh.

chevron-down chevron-right

Can readers comment, and how do I keep spam out?

Comments are included, with no third-party service required. Guests can comment or you can restrict commenting to logged-in customers, and you can require an email address from guests. Readers can vote comments helpful or unhelpful.

For moderation, turn off automatic approval and every comment waits in a queue in the admin, where you can approve, reject, or reply to it. Admins get notified about pending comments, and thread participants get an email when someone replies. If you would rather use Facebook comments instead, that remains an option in the settings.

Changelog
Version 3.7.1Sep 22, 2026
The extension now passes Magento Marketplace's code-quality check, so it can be submitted and published there. Nothing about how the blog behaves changes.
Fixed the <!--more--> excerpt marker being ignored unless the post came in through a WordPress import. The marker is how you say where a post's teaser ends, but it only counted when typed exactly — and the admin editor and Page Builder both save it in an escaped form, so a marker you placed by hand did nothing and the listing fell back to the excerpt size or the Short content field instead. Spacing (<!-- more -->), WordPress's custom-text form (<!--more Read on-->) and the escaped form the editors store are all recognised now. A marker at the very start of a post gives an empty excerpt, as documented — the marker takes priority over a Short content excerpt.
Fixed the <!--more--> marker showing up as visible text in the middle of a post. Because the editors store it escaped, the browser printed it as ordinary words rather than hiding it as an HTML comment, so visitors read <!--more--> mid-paragraph. It is now removed from the post body wherever the body is rendered, including the article text the blog publishes in its structured data for search engines.
Fixed a blog author page opened with an id no author answers to returning a server error page instead of the store's "page not found" page. Post, category and tag pages already behaved this way; author pages now match.
Version 3.7.0Sep 17, 2026
Hyvä support now ships inside this extension — everything that used to require the separate mirasvit/module-blog-mx-hyva package is part of Blog MX itself. There is one package to install, one version to keep track of, and one release per change instead of two.
Generate Hyvä Styles, on posts, categories and authors — the per-entity Tailwind editor that used to come with the companion package is now part of Blog MX. It appears on the post, category and author forms only on a store that has Hyvä's Hyva_CmsTailwindJit installed, and is invisible everywhere else.
⚠️ Database schema change — three new tables (mst_blog_post_tailwindcss, mst_blog_category_tailwindcss, mst_blog_author_tailwindcss) hold the compiled Hyvä styles for a post, category or author, one row per theme, and each of mst_blog_post, mst_blog_category and mst_blog_author gains an is_tailwindcss_jit_enabled flag. These come across from the retired companion package; they are applied automatically on upgrade and cost nothing on a store that does not use Hyvä.
One template per storefront surface — the blog's 33 storefront templates existed twice, once per theme, and drifted apart. They are now a single file each, rendered by both. Everything below is a difference that had crept in and is now gone.
Every social icon shows on the author card under Hyvä — the Hyvä version drew four networks and left the other six blank.
The Related Products widget's own title is used under Hyvä — it previously ignored the widget's Title and Title Level settings and always printed "Related Products".
The post's share buttons appear under Hyvä — the block was missing from the Hyvä template, so turning the setting on did nothing there.
The blog's category tree and the post page no longer need Alpine.js — both are plain HTML and a few lines of script, on both themes. The tree is a native <details> element, so it also works with the keyboard and without JavaScript.
The post list toolbar says "Posts" under Hyvä, not "Items".
Five new phrases are translated in all 16 shipped languages.
Ready for PHP 8.5 — the WordPress import no longer calls a function PHP 8.5 deprecates while checking an uploaded file's type, so stores on the newest PHP no longer see deprecation notices from the blog.
Fixed the password prompt on a password-protected post sending an empty form key. Neither theme rendered a usable one — the Hyvä copy printed an empty field, the Luma copy no field at all. The prompt itself still accepted a correct password, so nothing looked wrong; the protection Magento's form key is there to give simply was not in place. Both themes now submit the real key.
Fixed a post-list widget showing fewer posts than it was configured for, or disappearing outright, when Prevent duplicate posts in widgets is switched on. The list of already-shown posts is kept per page, so on a blog with fewer posts than the page has slots, whichever widget the theme draws last found its candidates claimed — and because Hyvä lays a page out in a different order than Luma, the same widget row could show five posts on one theme and one (or nothing) on the other. A short widget is now topped back up to its configured count from the remaining posts, giving up duplicate suppression only by as much as it must; and the One detailed post with small posts layout renders the single post it was handed instead of vanishing with no block, no title and no error.
Version 3.6.16Sep 14, 2026
Fixed posts failing to save from anywhere except the post edit form. The Short content toggle lives only on the admin form — it is not a field of the post — so any other way of saving a post (the REST API, the WordPress import, a mass action, a custom script) sent a payload without it, and the save ended in an error before anything was written. The post looked untouched because it was: nothing had been saved. Those saves now go through, and a save that says nothing about the toggle leaves the post's excerpt exactly as it was. Saving from the admin form is unchanged — switching the toggle off still clears the excerpt, switching it on still stores what you wrote.
Fixed blog pages taking seconds longer to load than they should. Every post page and every post-list widget fires a small background request to count views, and those requests were opening the visitor's session while the page that spawned them still held it. On stores that keep sessions in Redis (the common setup for anything with traffic), each counter request sat waiting for the page to finish and the page waited on it in turn — 0.4 to 1.3 seconds added per request, and a listing page carrying several post widgets multiplied that, with page-finish times as long as a minute and a half reported. The view counters neither read nor write the session, so they no longer open one; view counts are recorded and displayed exactly as before.
Version 3.6.15Sep 11, 2026
⚠️ A save that says nothing about inheritance no longer creates store overrides — when a post is saved for one store view by something other than the admin form (the REST API, the WordPress import, a mass action, a custom script), the fields it happens to send are no longer silently turned into store-specific values. This mattered most for the publish date: it is a required field, so every such save carried one, and that store view's copy of the post could end up pinned to the date of the edit rather than the date you gave it. Nothing looked wrong in the admin, since the post's real date was untouched; it showed up only on the storefront, where that store view started ordering its posts by when they were last edited. A post now keeps the inheritance it already had, and an override is something the caller asks for explicitly by sending the use_default field, which is part of the public post API. Saving from the admin form is unchanged, and a date you deliberately set for one store view is still saved as before.
Fixed the Pin Post at the top toggle having no effect on the order posts are listed in. Switching it on saved the setting and changed nothing a visitor could see: the blog listing and the post widgets both ordered posts purely by the sort you configured, so a pinned post sat wherever its date or title put it. Pinned posts now lead every listing, and within the pinned and unpinned groups your configured sort still applies. This was corrected in 3.6.9 and is recorded here because that release did not mention it.
Version 3.6.14Sep 9, 2026
A post's tags are now shown on the post page — below the post body, every tag the post is assigned to appears as a clickable #tag chip under a Tagged: label, leading to that tag's page. They keep the order you arranged them in on the post edit page, and a tag that is not published on the store view being browsed is left out. Turn the whole row on or off in Stores → Configuration → Blog MX → Display settings → Show post tags — on by default, and settable per website and per store view. The label is translated in all 16 shipped languages.
A post's tag list is fetched once per page — the tags are now looked up a single time and reused by everything that needs them (the tag row itself and the page's cache tags) instead of once per request for each, and a post with no tags no longer runs a query at all. The lookup is also kept separately per store view, so a page that renders content for more than one store can no longer show one store's tags on another store's page.
Fixed blog pages that should be "page not found" returning something else. A tag or author page whose tag/author is not published on the store view being browsed used to resolve to a blog route anyway, and the blog then forwarded the request to a route that does not exist inside the blog — so instead of your storefront's standard 404 page, the visitor got an error or an empty page, and search engines were told the URL was fine. Those URLs now return a proper 404, as do a deleted post's URL, a missing category, and the category RSS feed when the feed is switched off.
Fixed a renamed tag keeping its old name on already-cached pages. Post pages showing the post's tags, and any page carrying a Tag Cloud widget, are now refreshed as soon as the tag is renamed; previously the stale name stayed visible until the full page cache was flushed by hand.
Reasons to choose Mirasvit
Client focusing and satisfaction

These are our primary. A major portion of our new clients come from referrals from our existing clients. Our professional team of developers, marketers and support staff have invested the best knowledge and experience in the field into our work, so you know you can come back to us again and again.

Remarkable support

One year free and high quality support. We go to great lengths to provide maximum satisfaction with every module you have purchased in our store. By helping you with installation, configuration, answering your every question, we do all our best to eliminate any possible problems.

Risk-free Investment

30-days money back guarantee. If you are not satisfied with our Magento 2 blog extension performance for any reason, we provide a full refund.

Constant improvements and upgrades

We constantly add new features to all our modules, and are always interested in hearing your opinion and implementing your suggested features in our future developments.

Comprehensive Documentation

We provide an expanded user guide for every aspect of our Magento 2 blog extension, so you can find answers for all your burning questions.

Unencrypted source code of our products

You can customize Magento 2 blog extension according to your needs and requirements.

Usability and Performance

The Module is easy to install and upgrade, just follow our step-by-step user guide. Additionally, the extension is ready to use with the Hyvä theme.

Ready for Magento Cloud

No core modifications. The Magento 2 blog extension has been tested in a Magento Cloud environment and is fully compatible with it.

Loading...