Jerilo

Staging or preview canonical on production

If the live site sets its canonical to staging, a Webflow.io preview, a tunnel host, or any other non-production URL, Google may treat that preview as the main version. Your real domain then looks like a duplicate.

What it means

rel=canonical is a hint. When production points at a weak or noindexed host, rankings and indexing often move away from the live domain. Common after CMS clones, "publish staging first" workflows, hard-coded base URLs in templates, or leftover preview domains after a migration. Google's guide on specifying a canonical URL is the reference; if GSC disagrees with your tag, check canonicalization troubleshooting.

How to confirm

  • View source on the homepage and key templates. Find <link rel="canonical" href="...">.
  • In GSC URL Inspection, compare "User-declared canonical" with "Google-selected canonical."
  • Search site:yourdomain.com and see if preview hosts show up as the indexed URL.
curl -s https://example.com/ | grep -i 'rel="canonical"'

How to fix

  • Make production templates self-canonical to the public HTTPS URL (right host, HTTPS, no preview subdomain).
  • Fix the CMS site URL / primary domain so generated tags stop inventing staging hosts.
  • Put noindex on real staging and preview hosts so they cannot win as the preferred URL.
  • After you fix canonicals, request indexing on the important production URLs.

How it comes back

Wrong env config in production, theme options synced from staging, reverse proxies rewriting Host badly, marketing tools injecting preview domains. Check the canonical host on every launch, not just the first go-live.

We built Jerilo to catch breaks like this early.