Duplicate Site / Domain Confusion During AdSense Review (2026)

You have the same content on yourbrand.com and yourbrand.net. AdSense flags duplication or fails to approve. How to resolve.

You bought yourbrand.com and also yourbrand.net “just in case.” Both serve identical content. AdSense submission gets rejected with “we already approved this content on another site” or stays stuck in review. Or you have www and apex both serving content independently, never redirected. AdSense reviewers see two copies of the same site and don’t know which to approve. The solution isn’t to make the duplicates unique — it’s to pick one canonical and 301 everything else to it.

This applies equally to apex/www splits, .com/.net pairs, staging subdomains accidentally indexed, and old domains that never got 301’d after a rename.

Common causes

Ordered by hit rate, highest first.

1. Defensive backup domain serving content

You bought yourbrand.net and .org for protection. Pointed them at the same hosting. Both now resolve and serve identical pages. AdSense sees two-three properties with identical content.

How to spot it:

for d in yourbrand.com yourbrand.net yourbrand.org; do
  echo -n "$d: "
  curl -sI "https://$d" | head -1
done

If all return 200 (instead of 301 to the canonical), you have duplicates.

2. Domain migrated but old domain still serves

You renamed from oldbrand.com to newbrand.com. New site is live. Old DNS still points to hosting; old domain still returns content with the old URLs.

How to spot it: curl -sI https://oldbrand.com. If it returns 200, you didn’t fully migrate. Should be 301 to newbrand.com.

3. www and apex both serving content independently

www.yourdomain.com and yourdomain.com both resolve and serve the page. AdSense indexes both as separate properties.

How to spot it:

curl -sI https://yourdomain.com | head -3
curl -sI https://www.yourdomain.com | head -3

One should be 301 to the other (your choice which is canonical).

4. Staging subdomain is publicly indexed

You have staging.yourdomain.com for QA. It’s behind no auth. Google found it and indexed it. AdSense sees it as a duplicate of production.

How to spot it: site:staging.yourdomain.com on Google. If results appear, the staging is publicly indexed.

5. Preview deployments (Vercel/Netlify) indexed

Vercel yourapp-randomhash.vercel.app previews and Netlify deploy previews can be crawled if not blocked. Each preview is a near-duplicate of production.

How to spot it: site:vercel.app yourbrand and site:netlify.app yourbrand. If indexed previews appear, you need to block them.

6. Multiple AdSense Sites entries for the same property

You added yourdomain.com, www.yourdomain.com, and https://yourdomain.com/ to AdSense → Sites separately. AdSense treats them as separate but identical-content sites.

How to spot it: AdSense → Sites. If your one site appears as multiple entries, you have duplicates.

Shortest path to fix

Step 1: Decide ONE canonical domain

Usually the shortest, most-marketed, or oldest version. Common choices:

  • yourbrand.com (the .com you actually market)
  • www.yourbrand.com if SSL or CDN constraints favor it
  • The apex if your CDN supports ALIAS / ANAME at root

Stick with one. Document the choice in a CANONICAL_DOMAIN.md so future-you doesn’t second-guess.

Step 2: 301 redirect every alternative to canonical

Cloudflare — Page Rules or Rules → Redirects:

URL pattern: https://yourbrand.net/*
Redirect:    https://yourbrand.com/$1
Status:      301 (permanent)

Vercelvercel.json:

{
  "redirects": [
    { "source": "/:path*", "destination": "https://yourbrand.com/:path*", "permanent": true }
  ]
}

Add only to the alternative domain’s project; the canonical project has no redirect.

Netlify_redirects:

https://yourbrand.net/*   https://yourbrand.com/:splat   301!

Step 3: Block staging and preview from being indexed

Staging — basic auth or block with robots.txt:

User-agent: *
Disallow: /

Plus <meta name="robots" content="noindex"> on every page as backup.

Vercel — set VERCEL_ENV check in your app and emit noindex on previews:

<meta name="robots" content="noindex" v-if="process.env.VERCEL_ENV !== 'production'">

Step 4: Remove duplicate AdSense Sites entries

AdSense → Sites. Keep only one entry for your canonical domain. Remove www, https://, and trailing-slash variants.

Step 5: Verify with curl

for d in yourbrand.net yourbrand.org www.yourbrand.com staging.yourbrand.com; do
  echo "=== $d ==="
  curl -sI "https://$d" | head -3
done

Each should return HTTP/2 301 and Location: https://yourbrand.com/....

Step 6: Wait 2-4 weeks for Google to consolidate

Google needs to recrawl all duplicates and follow the 301s. Search Console → URL inspection → request indexing on the canonical to speed it up. AdSense will pick up the consolidation when it next reviews.

Step 7: Resubmit AdSense if needed

Once duplicates are consolidated, in AdSense → Sites, request review on your canonical entry.

When this is not on you

AdSense detection of consolidation can be delayed. Even after correctly setting 301s and reducing AdSense entries to one, the review queue may still take weeks.

Easy to misdiagnose as

People add multiple variants to AdSense Sites to “cover all bases.” This actively hurts — it tells AdSense your one site has 2-3 properties of identical content, triggering duplication flags. Always keep AdSense Sites entries minimal: one per truly-different domain.

Prevention

  • Pick a canonical domain on day one. Document the choice somewhere obvious.
  • Set up www → apex (or vice versa) redirects before publishing the first article.
  • Block staging and Vercel/Netlify previews from indexing with noindex and robots.txt.
  • Add only the canonical to AdSense Sites.
  • Defensive domains (.net, .org, typos) should 301 from day one — never serve content.

FAQ

  • Can I monetize multiple domains? Yes — if they host genuinely unique content. A movie site and a recipe site under the same AdSense account are fine.
  • Will Google deindex the duplicate? With 301s in place, Google consolidates link equity and the canonical absorbs the rankings.

Tags: #AdSense #Monetization #Troubleshooting #Duplicate domain