Docs SEO NEO Version 1.x Why SEO NEO

Why SEO NEO

The case for SEO NEO over MarkupSEO and Seo Maestro: a modern, actively-maintained SEO module built on native ProcessWire fields.

The problem with the existing options

ProcessWire has two well-known SEO modules: MarkupSEO and Seo Maestro. Both work, and both have served sites well for years. But both have the same underlying problem: they haven't kept pace with how Google handles canonical URLs, paginated pages, and URL segments.

  • MarkupSEO has a known bug where the canonical URL drops URL segments — so /news/2024/my-article/ collapses to /news/. Paginated pages have a similar issue.
  • Seo Maestro has the same canonical bug, and its hreflang output doesn't preserve segments or pagination either.
  • Both modules are unmaintained or very slowly maintained. Open issues sit for months.

SEO NEO started because of those canonical bugs. The name is a reference to that origin: it's an SEO module that fixes what the existing ones get wrong.

What SEO NEO does differently

The short list of things that make SEO NEO worth switching to:

  • Correct canonicals for URL segments and pagination. /news/2024/my-article/ stays /news/2024/my-article/. /news/page2/ stays /news/page2/. Configurable include/strip policy per site.
  • Correct hreflang. Segment strings and page numbers are preserved and translated per language. A final hreflang="x-default" line is included pointing at the default-language URL.
  • Native PW fields, not custom storage. Every SEO value is a real ProcessWire field with full multi-language, selector, and import/export support. No custom database schema, no Fieldtype complexity.
  • Smart-map fallback chain. Dotted paths into nested fields (banner.image, matrix.first.body), ancestor walk with *fieldname, and pipe-separated fallbacks in template defaults.
  • OG image dimensions + secure_url + media type. Facebook silently rejects images on first share when width/height are missing. SEO NEO includes them.
  • Full JSON-LD @graph output. Organization, WebSite, WebPage, Article, Person, and BreadcrumbList — wired by canonical @id URIs so the graph is linked, not four separate blobs. (Beta.)
  • Granular Google directives. max-snippet, max-image-preview, max-video-preview, unavailable_after, and AI opt-out (noai, noimageai) — all in a single <meta name="robots"> tag.
  • Actively maintained. New releases track ProcessWire's own release cadence.

Feature comparison

Feature MarkupSEO Seo Maestro SEO NEO
Meta title, description, canonical
Canonical preserves URL segments ✗ (bug) ✗ (bug)
Canonical preserves pagination Partial ✗ (bug)
hreflang preserves segments + pagination
Open Graph (title, description, image, type)
OG image width, height, secure_url, type
OG image ancestor fallback Partial
Twitter / X cards
Robots (noindex / nofollow per page)
Auto-noindex unpublished / hidden pages Partial
Granular Google directives (max-snippet etc.)
AI / LLM opt-out directives
Smart-map fallbacks with ancestor walk
Per-template SEO defaults with placeholders Partial
JSON-LD @graph (Organization, WebPage, etc.) Partial ✓ (Beta)
ProCache compatibility Partial Partial
Native PW language-aware fields
Template API — full render n/a $page->seo->render() $page->seoneo->render()
Fallback-chain visualiser in editor PRO

What SEO NEO intentionally does not do

SEO NEO is a focused module, not a Swiss Army knife. These features are deliberately out of scope (at the moment) — each is served by an alternative module:

  • Sitemap.xml — use MarkupSitemap by Mike Rockett. It's hreflang-aware and integrates cleanly with SEO NEO's per-page noindex setting.
  • 301/302 redirects — use Jumplinks2 or ProcessRedirects.
  • robots.txt editing — use MarkupRobotsTxt or a simple site/templates/robots.php override.
  • Google Analytics / GTM injection — use MarkupGoogleTagManager or SimpleAnalytics. Analytics is its own discipline.
  • Yoast-style content analysis (keyword density, readability scores) — deliberately absent. My thinking is that readability tools in a CMS admin rarely match how real editors work. Good content is a craft decision, not a green-light score.

See also

Last updated