[{"data":1,"prerenderedAt":75},["ShallowReactive",2],{"help-article-seo-troubleshooting":3},{"data":4},{"title":5,"excerpt":6,"content":7,"help_category":8,"seo":11},"SEO Troubleshooting","Wrong meta tags on Google? Walk the three systems your SEO data passes through — m18t, your CMS, and your front-end — to isolate the break and re-push fixes.","\u003Cp>\u003Cstrong>What you&#39;ll learn\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>The three systems your SEO data passes through, and how to tell which one is broken.\u003C\u002Fli>\n\u003Cli>How to isolate a problem to m18t, your CMS, or your front-end.\u003C\u002Fli>\n\u003Cli>How to re-push corrected metadata.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Chr>\n\u003Ch2>The concept: SEO data crosses three systems\u003C\u002Fh2>\n\u003Cp>When a meta title is wrong on Google, the break could be in any of three places, and fixing the wrong one wastes time. SEO data travels:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>m18t (the origin).\u003C\u002Fstrong> Did m18t compute and store the correct metadata?\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Your CMS (e.g. Strapi).\u003C\u002Fstrong> Did the push land, and did the CMS save it?\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Your front-end (Nuxt, Next.js, Astro, etc.).\u003C\u002Fstrong> Does the public page read those fields and render them into the \u003Ccode>&lt;head&gt;\u003C\u002Fcode>?\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>m18t owns step 1 and the \u003Cem>push\u003C\u002Fem> into step 2. It does not own how your CMS is modeled or how your front-end renders pages. So the first move is always to isolate where the data stops being correct.\u003C\u002Fp>\n\u003Ch2>How to isolate the break\u003C\u002Fh2>\n\u003Ch3>Step 1 — Check m18t\u003C\u002Fh3>\n\u003Cp>Open the piece in the content editor and look at the \u003Cstrong>SEO\u003C\u002Fstrong> tab.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>If the data is wrong here:\u003C\u002Fstrong> you found it. Fix the field (or regenerate with \u003Ca href=\"\u002Fhelp\u002Fthe-seo-ai-prompt\">the SEO AI prompt\u003C\u002Fa>), save, and re-push. Done.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>If the data is correct here:\u003C\u002Fstrong> move to step 2.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Step 2 — Check your CMS\u003C\u002Fh3>\n\u003Cp>Open your CMS admin and find the same piece. Look at its SEO fields.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>If the data is missing or wrong here:\u003C\u002Fstrong> the push didn&#39;t apply. Check m18t&#39;s \u003Ca href=\"\u002Fhelp\u002Fpushing-to-your-cms\">sync log\u003C\u002Fa> for the piece — a failed push usually surfaces as a \u003Ccode>400\u003C\u002Fcode>\u002F\u003Ccode>4xx\u003C\u002Fcode> error, which most often means the CMS doesn&#39;t have the SEO fields (or component) m18t is trying to write. Make sure your CMS collection actually has the SEO shape m18t expects, then re-push.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>If the data is correct here:\u003C\u002Fstrong> the push worked. Move to step 3.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Step 3 — Check your front-end\u003C\u002Fh3>\n\u003Cp>If the data is right in your CMS but wrong on the live page, the gap is rendering. Open the live page, view source, and look for \u003Ccode>&lt;title&gt;\u003C\u002Fcode>, \u003Ccode>&lt;meta name=&quot;description&quot;&gt;\u003C\u002Fcode>, the \u003Ccode>&lt;link rel=&quot;canonical&quot;&gt;\u003C\u002Fcode>, and the JSON-LD \u003Ccode>&lt;script&gt;\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>The fix is in your code:\u003C\u002Fstrong> your front-end has to read the SEO fields from the CMS response and emit them — e.g. via \u003Ccode>useSeoMeta()\u003C\u002Fcode> in Nuxt or \u003Ccode>generateMetadata()\u003C\u002Fcode> in Next.js. This is outside m18t. If the field is present in the CMS API response but absent in the HTML, your rendering code isn&#39;t wiring it through.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>Re-pushing corrected metadata\u003C\u002Fh2>\n\u003Cp>After you fix metadata in m18t on an already-\u003Ca href=\"\u002Fhelp\u002Fscheduling-vs-publishing\">published\u003C\u002Fa> piece, re-sync it to your CMS so the change propagates — see \u003Ca href=\"\u002Fhelp\u002Fpushing-to-your-cms\">Pushing to your CMS\u003C\u002Fa> for the push\u002Fupdate flow. Editing in m18t alone does not change what&#39;s already sitting in your CMS or on your site.\u003C\u002Fp>\n\u003Ch2>Common variations\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>Generated JSON-LD has no URL.\u003C\u002Fstrong> That&#39;s intentional when no \u003Ca href=\"\u002Fhelp\u002Fcanonical-urls\">canonical\u003C\u002Fa> was available — the prompt omits the URL rather than inventing one. Configure the content type&#39;s \u003Ca href=\"\u002Fhelp\u002Fconfiguring-seo-defaults\">SEO defaults\u003C\u002Fa> so a canonical resolves, then regenerate.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>The AI generate button is greyed out.\u003C\u002Fstrong> No AI key. SEO generation is \u003Ca href=\"\u002Fhelp\u002Fbyok-why-we-do-this\">BYOK\u003C\u002Fa>; add a key in the \u003Ca href=\"\u002Fhelp\u002Fthe-secret-vault\">vault\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Custom JSON-LD broke the page.\u003C\u002Fstrong> m18t doesn&#39;t validate custom JSON-LD. Run it through the \u003Ca href=\"https:\u002F\u002Fsearch.google.com\u002Ftest\u002Frich-results\">Google Rich Results Test\u003C\u002Fa> — a syntax error there explains a page that won&#39;t parse. See \u003Ca href=\"\u002Fhelp\u002Fstructured-data-json-ld\">Structured Data &amp; JSON-LD\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch2>What&#39;s next\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Ca href=\"\u002Fhelp\u002Fpushing-to-your-cms\">Pushing to your CMS\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fhelp\u002Fcanonical-urls\">Canonical URLs\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fhelp\u002Fthe-seo-philosophy\">The SEO Philosophy\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>FAQ\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>My meta tags are right in m18t but wrong on Google. Where do I start?\u003C\u002Fstrong>\nWalk the three systems in order: m18t → CMS → front-end. Find where the data stops being correct before changing anything. Most &quot;wrong on Google&quot; cases are a front-end rendering gap, not an m18t bug.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>My CMS push failed with a 400. Why?\u003C\u002Fstrong>\nUsually the CMS collection is missing the SEO fields or component m18t writes to. Check the \u003Ca href=\"\u002Fhelp\u002Fpushing-to-your-cms\">sync log\u003C\u002Fa> for the exact error, align the CMS schema, then re-push.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>I fixed the title in m18t but the site still shows the old one. What now?\u003C\u002Fstrong>\nRe-push the piece to your CMS, then confirm your front-end re-fetched it. Editing in m18t alone doesn&#39;t update an already-published external record.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Why is the canonical\u002FJSON-LD empty?\u003C\u002Fstrong>\nIf no SEO defaults exist for the (brand × type), the canonical can be empty and the JSON-LD omits the URL by design. Configure \u003Ca href=\"\u002Fhelp\u002Fconfiguring-seo-defaults\">SEO defaults\u003C\u002Fa> and regenerate.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Does m18t render my public pages?\u003C\u002Fstrong>\nNo. m18t computes and pushes metadata; your front-end renders it into the page \u003Ccode>&lt;head&gt;\u003C\u002Fcode>. Rendering bugs are fixed in your front-end code.\u003C\u002Fp>\n",{"slug":9,"title":10},"seo","SEO",{"meta_title":12,"meta_description":6,"keywords":13,"canonical_url":14,"og_title":5,"og_description":15,"og_image":16,"robots":17,"json_ld":18},"SEO Troubleshooting | m18t Help","SEO troubleshooting, meta tags not showing, CMS push 400, front-end rendering, canonical empty, re-push metadata, debugging SEO","https:\u002F\u002Fm18t.com\u002Fhelp\u002Fseo-troubleshooting","SEO data crosses three systems — m18t, your CMS, your front-end. Isolate where it stops being correct before fixing anything.","https:\u002F\u002Fm18t.com\u002Fog-default.png","index, follow",{"@context":19,"@graph":20},"https:\u002F\u002Fschema.org",[21,34,59],{"@type":22,"headline":5,"description":6,"articleSection":10,"inLanguage":23,"datePublished":24,"dateModified":24,"image":16,"author":25,"publisher":29,"mainEntityOfPage":32},"Article","en","2026-06-25",{"@type":26,"name":27,"url":28},"Organization","m18t","https:\u002F\u002Fm18t.com",{"@type":26,"name":27,"url":28,"logo":30},{"@type":31,"url":16},"ImageObject",{"@type":33,"@id":14},"WebPage",{"@type":35,"mainEntity":36},"FAQPage",[37,43,47,51,55],{"@type":38,"name":39,"acceptedAnswer":40},"Question","My meta tags are right in m18t but wrong on Google. Where do I start?",{"@type":41,"text":42},"Answer","Walk the three systems in order: m18t → CMS → front-end. Find where the data stops being correct before changing anything. Most \"wrong on Google\" cases are a front-end rendering gap, not an m18t bug.",{"@type":38,"name":44,"acceptedAnswer":45},"My CMS push failed with a 400. Why?",{"@type":41,"text":46},"Usually the CMS collection is missing the SEO fields or component m18t writes to. Check the sync log for the exact error, align the CMS schema, then re-push.",{"@type":38,"name":48,"acceptedAnswer":49},"I fixed the title in m18t but the site still shows the old one. What now?",{"@type":41,"text":50},"Re-push the piece to your CMS, then confirm your front-end re-fetched it. Editing in m18t alone doesn't update an already-published external record.",{"@type":38,"name":52,"acceptedAnswer":53},"Why is the canonical\u002FJSON-LD empty?",{"@type":41,"text":54},"If no SEO defaults exist for the (brand × type), the canonical can be empty and the JSON-LD omits the URL by design. Configure SEO defaults and regenerate.",{"@type":38,"name":56,"acceptedAnswer":57},"Does m18t render my public pages?",{"@type":41,"text":58},"No. m18t computes and pushes metadata; your front-end renders it into the page head. Rendering bugs are fixed in your front-end code.",{"@type":60,"itemListElement":61},"BreadcrumbList",[62,66,70,73],{"@type":63,"position":64,"name":65,"item":28},"ListItem",1,"Home",{"@type":63,"position":67,"name":68,"item":69},2,"Help","https:\u002F\u002Fm18t.com\u002Fhelp",{"@type":63,"position":71,"name":10,"item":72},3,"https:\u002F\u002Fm18t.com\u002Fhelp\u002Fcategories\u002Fseo",{"@type":63,"position":74,"name":5,"item":14},4,1786312170650]