Verify a Canonical Tag Before You Publish: Check-Then-Ship

Verify a canonical tag before you publish: Check-Then-Ship—view source, optional curl, URL Inspection. Not a second canonical explainer.

Verify a Canonical Tag Before You Publish: Check-Then-Ship

Verify a canonical tag before you publish so the first crawl sees the keeper URL—not a staging host, a duplicate plugin tag, or yesterday's http:// leftover.

This page is Check-Then-Ship. It is not Google canonical tag explained (definition). It is not duplicate canonical tags (two emitters). It is not Google-selected canonical (post-publish disagreement)—though Inspection is the last step here.

Publish only after the live URL shows one canonical to the address already in your sitemap and internal links. Then spot-check with URL Inspection.

Official: Inspect a URL · Consolidate duplicate URLs.

Table of contents

  1. Check-Then-Ship
  2. The five-minute pre-publish pass
  3. What to compare against
  4. After the post is live
  5. Bulk audits versus every publish
  6. FAQ
  7. Run the pass on today's draft

Check-Then-Ship

        CHECK-THEN-SHIP
  1. PUBLIC  → open the URL readers will share (not draft preview)
  2. SOURCE  → one rel=canonical; note the absolute href
  3. MATCH   → same URL in sitemap row + internal link template
  4. HEADER  → optional curl -I if your stack uses Link canonicals
  5. SHIP    → deploy, then URL Inspection on the keeper

Verification is boring on purpose. Most canonical bugs are visible in view source within seconds.

The five-minute pre-publish pass

Step 1 — Open the public URL. If the post is still draft, stop. Canonical on a ?preview=true URL is not the test.

Step 2 — View source. Search canonical. You want exactly one intentional rel="canonical" unless your engineering team standardizes header-only (rare on blogs).

Step 3 — Read the href. It should be:

  • https:// on the host you chose in one host URL policy
  • The pretty permalink, not ?p=123
  • Not a staging subdomain
  • Not the homepage unless this URL is the homepage

Step 4 — Cross-check emitters. If you see two tags, go to duplicate canonical tags. If header and HTML differ, go to header vs HTML.

Step 5 — Plugin field sanity. When you intentionally set a custom canonical in WordPress, confirm the plugin field wrote what you typed—view source beats the settings screen.

What to compare against

Your canonical href should match the row you will submit in the XML sitemap and the URL you paste in nav or related-post blocks.

Common pre-ship mismatches:

  • Canonical still names http:// while the site redirects to https://
  • Canonical includes utm_ parameters you meant to consolidate
  • Canonical points at page 1 while the live document is /page/2/ of a sequence—see pagination SEO
  • Canonical on a syndicated copy points at your origin when the partner page should noindex—see cross-domain syndication

Tracking parameters that do not change the article should canonical to the clean URL while staying fetchable—see UTM and parameters.

After the post is live

Run URL Inspection on the keeper URL:

  • User-declared canonical should match view source.
  • Google-selected canonical may differ until recrawl—that is a signal audit, not instant failure.

Request indexing when deploy is live and you want the new title or canonical picked up faster. It is optional if the URL already crawls regularly.

If Google-selected keeps choosing a parameter URL, fix sitemap and inlinks before you publish more siblings on the same topic.

Bulk audits versus every publish

Every publish: view source on the new URL. Thirty seconds.

Monthly: crawl top templates (home, category, one paginated archive) with your SEO tool or Screaming Frog if you run one—optional for small blogs.

After plugin or theme updates: re-spot-check one post and the homepage. Updates re-enable theme canonical snippets more often than people admit.

Do not substitute a Lighthouse score for a literal canonical href check. Performance and canonical alignment are different jobs.

FAQ

How do I verify a canonical tag is correct?

View source on the live URL for one rel=canonical to the keeper. Optional curl -I. URL Inspection after deploy.

Should I check in the editor preview?

No. Use the public production URL.

Is this the same as canonical tags explained?

No. This is the verification habit only.

Do I need a crawler tool?

View source is enough per post. Bulk tools help on audits.

What if the canonical points at staging?

Fix before indexing. Common after migrations.

Should I verify page 2?

Yes if pagination exists. Each page self-canonicals.

When should I request indexing?

After deploy when live source matches the keeper.

Where is Google’s Inspection doc?

URL Inspection help.

Run the pass on today's draft

Before you hit publish on the next post, open the public URL, view source once, and compare the href to the sitemap row you will add. If they match, ship. If not, fix the emitter before the crawl stores the wrong hint. Check-Then-Ship beats writing a fourth canonical explainer nobody asked for.

Keep learning

More guides in the same topic lane.