🧩 Overview
When you deploy meta titles and descriptions through OTTO (found in the left sidebar under OTTO SEO, then SEO Automation), they are written directly into your site's HTML. However, if your site uses a server-side rendering (SSR) framework or a head-management library such as Unhead.js, Nuxt, Next.js, or Vue Meta, those libraries often re-render or overwrite the <head> section after OTTO's changes are applied. The result is that your meta tags appear correct inside Search Atlas but never show up in Google SERPs or browser tabs.
⚠️ Symptoms
- Meta titles and descriptions are marked as deployed in OTTO but do not appear in live Google search results.
- The browser tab still displays the old title or a generic site name.
- Inspecting the page source (Ctrl + U) shows the correct meta tags, but the rendered DOM (F12 → Elements) shows different or missing values.
- The issue affects multiple pages simultaneously after a framework upgrade or plugin update.
- Re-deploying through OTTO does not resolve the problem.
🔍 Why This Happens
SSR libraries manage the <head> element as part of their own rendering lifecycle. When your page loads, the library rebuilds the head section using its own configuration, which overwrites anything injected externally — including OTTO's meta tags. Common conflict sources include:
- Unhead.js — used by Nuxt 3 and other Vue-based frameworks to manage reactive head data.
- Nuxt useSeoMeta / useHead composables — define meta tags at the component level and take priority at runtime.
- Next.js component or Metadata API — controls head output during server and client rendering passes.
- Vue Meta — an older Vue plugin that merges and overrides head tags reactively.
- React Helmet / React Helmet Async — manages document head in React SPAs and SSR apps.
In every case, the root cause is the same: the SSR library has its own meta tag definition that loads after — or instead of — OTTO's injected values, causing the OTTO values to be discarded.
✅ How to Resolve the Conflict
Choose the approach that matches how your site is built. If you are not sure which library your site uses, ask your developer to check the project's package.json file.
- Remove or clear the conflicting meta definition inside the SSR library. Find every place in your codebase where the page's title or description is set — for example, inside
useHead(),useSeoMeta(),<Head>components, ormetaInfoobjects — and delete or blank out those values. This allows OTTO's deployed values to persist without being overwritten. - Pass OTTO's values into the SSR library instead of bypassing it. If removing the definitions is not practical, retrieve the meta values from your CMS or a data layer populated by OTTO and feed them into your SSR library's head configuration. This keeps the library in control of rendering while using OTTO's content as the source of truth.
- Disable or exclude OTTO injection for pages managed by the SSR library. Inside Search Atlas, navigate to OTTO SEO in the left sidebar, open All Sites (SEO Automation), then open the relevant OTTO project. Locate the pages where the conflict occurs and pause or skip meta tag deployment for those URLs. Manage their meta tags entirely through the SSR library using OTTO's recommended values as a reference.
- Check plugin execution order if using a CMS plugin (e.g., WordPress with a Nuxt front end). Ensure the OTTO integration script or plugin loads after the SSR framework has finished its initial head render, or use a server-side hook to inject OTTO's values before the framework's first render pass. Your developer can verify this in the framework's lifecycle documentation.
🔎 How to Confirm the Fix Worked
- Open the affected page in your browser and press F12 to open Developer Tools.
- Go to the Elements tab and expand the
<head>section. - Confirm that the
<title>tag and the<meta name="description">tag show the values you set in OTTO. - Use Google Search Console → URL Inspection to fetch a live version of the page and verify that Google reads the correct meta tags.
- Allow 24–72 hours for the updated meta tags to appear in Google SERPs after confirmation.
🛡️ How to Prevent This in Future
- Before deploying meta tags through OTTO on an SSR site, audit your codebase for any existing head-management library and document which pages it controls.
- Establish a single source of truth for meta tags — either OTTO or the SSR library — and ensure your team does not mix both approaches on the same pages.
- After any framework upgrade (e.g., moving from Nuxt 2 to Nuxt 3), re-test OTTO meta tag deployment on a staging environment before pushing to production, as upgrades often change how head libraries behave.
- Use the Content → On-Page Audit tool (left sidebar → Content → On-Page Audit) to regularly scan live pages and verify that deployed meta tags are present in the rendered output.
💬 Need More Help?
If you need further assistance, open the chat widget in the bottom-right corner of the platform and type human teammate to be connected with a member of our team.