vibecheck0.3.0
Search visibilityseoog-url-missinginfo

Missing og:url in Vue

og:url tells social platforms which canonical address a share belongs to, so likes and shares of the same page via different tracking links consolidate onto one URL. Without it, a page shared with ?utm_source=… can be treated as a separate object, splitting its social signals.

Symptoms

  • The same page shared with different query params counts as separate shares
  • Share counts and engagement fragment across tracking URLs
  • Platforms echo the messy tracking URL instead of the clean one

How VibeCheck catches it

In your widget · Problems

infoseoMissing og:url

To your coding agent · MCP

agent › get_detected_issues
{ detector: "seo", issue: "Missing og:url", threshold: "no <meta property="og:url">" }

The same string in your widget and in your agent’s context — no screenshot, no copy-paste.

Root causes

  • og:* tags were partially implemented — image and title landed, url did not
  • No canonical URL strategy exists, so there is no clean URL to point at
  • The <head> is unmanaged, so no og:* tags are emitted
  • The page is reachable at several URLs (params, trailing slash) with none declared canonical

The fix for Vue

Add the og:url entry to useHead, building the absolute URL from the current route.

ts
useHead({ meta: [{ property: 'og:url', content: 'https://acme.com/pricing' }] })

Steps

  1. Determine the clean canonical URL for the page
  2. Emit it as <meta property="og:url">
  3. Keep it in sync with your canonical link

See the general, framework-agnostic fix →

FAQ

Should og:url match my canonical link?
Yes. Keep og:url identical to <link rel="canonical"> so social and search agree on the one true URL for the page.
Should og:url include tracking parameters?
No. Strip utm_* and other params so shares consolidate onto the clean URL.
What happens if og:url points at the wrong page?
Platforms credit the share — and its engagement — to whatever og:url says, and echo that URL in the card. A stale or wrong value sends clicks to the wrong page, so build it from the current route, not a hardcoded string.
Do I need og:url if I already set a canonical link?
They serve different consumers: <link rel="canonical"> is for search engines, og:url is for social platforms. Set both, and keep them identical.