Disclosure: How to Use rel="sponsored"

Disclosure: How to Use rel=”sponsored” — Publisher Guide

rel=”sponsored” tells search engines and readers when a link is a paid placement. This operational playbook shows publishers selling guest posts exactly when to use rel=”sponsored”, how to implement it (code + WordPress steps), disclosure templates, and audit workflows so you stay compliant and protect SEO value.

Why rel=”sponsored” matters for publishers selling guest posts

When you sell guest posts or accept paid links, marking those links correctly matters for three reasons: regulatory transparency, editorial trust with readers, and alignment with search engine guidance. Using rel=”sponsored” reduces publisher risk by signaling paid relationships, while a visible disclosure explains the commercial nature of the content to humans.

  • Paid links and risk: Search engines and regulators treat undisclosed paid links differently; marking them reduces policy risk and potential penalties.
  • Reader trust: Visible disclosure preserves audience trust and reduces complaints or advertiser disputes.
  • Operational clarity: A repeatable rel attribute + disclosure workflow makes audits and reporting straightforward.

Quick stat block:

  • According to a 2024 industry report, publishers that standardized link treatment cut advertiser disputes by ~30% (industry report).
  • As of 2026-06, Google Search Central documents link attributes that specifically include rel=”sponsored” for paid links; follow that guidance for best practice.

For pricing and how link value affects offers, see Price Guest Posts by DR & Traffic.

rel=”sponsored” vs rel=”nofollow” vs rel=”ugc” — clear comparison

Attribute Primary use When to choose Notes
rel=”sponsored” Marks paid links / advertising attribution Use for paid guest posts, paid placements, and explicit sponsorship links Signals “commercial relationship” to search engines; recommended by Google Search Central for paid links
rel=”nofollow” General link hint to disavow endorsement Use for untrusted/outbound links, press releases, or when you don’t vouch for content Historically used to avoid passing PageRank; still valid for many use cases
rel=”ugc” Marks user-generated content links Use for comments, forum posts, and reader-submitted links Short for “user generated content”; clarifies authorship context to search engines

Google Search Central’s guidance encourages using rel values to communicate the nature of links — use Google Search Central for the official primer (external resource).

Key trade-offs:

  • SEO vs transparency: rel=”sponsored” is the most transparent for paid links but may reduce perceived link equity flow compared with an untagged link.
  • Multiple rel values: You can combine values, e.g., rel=”sponsored nofollow” or rel=”ugc nofollow”, and Google will read the combination; use combinations when a link is both paid and user-generated or otherwise untrusted.
  • Affiliate links: These are typically marked with rel=”nofollow” or rel=”sponsored” depending on your preference and whether the link is paid commission; be explicit in your affiliate policy.

Legal and disclosure requirements (FTC + best practices for the USA)

Marking links with rel=”sponsored” does not replace on-page, visible disclosure required by the FTC. The U.S. Federal Trade Commission expects conspicuous disclosure of material connections between endorsers and advertisers. Use both: a rel attribute for machine-readable signaling and a visible disclosure for human readers.

Numbered checklist of required disclosure elements (practical):

  1. Clear statement of paid relationship (e.g., “This post contains sponsored content” or “Paid partnership with [Advertiser]”).
  2. Placement above-the-fold or near the top of the article where a reader sees it without scrolling (headline or first paragraph preferred).
  3. Plain-language wording — avoid euphemisms like “partnered” without context.
  4. Disclosure for every channel included in the package (post, social, email); if you bundle, replicate the message in each deliverable.
  5. Retention of disclosure proof — keep screenshots and timestamps for advertiser reporting and compliance audits.
  6. Editorial independence statement when applicable (e.g., “Advertiser provided payment but not editorial control” if true).
  7. Record of consent from the author/guest contributor acknowledging disclosure placement and link treatment.

For guidance on specifics, refer to the FTC Endorsement Guidelines: FTC Endorsement Guidelines.

Checklist notes:

  • Use visible disclosures even if the rel attribute is applied — search engines and human readers serve different roles.
  • Keep a dated internal policy as a record (site-wide policy / editorial guidelines) and apply consistently.

Legal caveat: This guide is informational and not legal advice. For legal questions, consult counsel.

When to use rel=”sponsored” — decision flow and real-world scenarios

Use this decision flow to determine when rel=”sponsored” is appropriate. Read each scenario and follow the step to the decision point.

  1. Is there a material connection (payment, free product, referral fee) between the site and the link target?
    • If yes → proceed to step 2. If no → do not use rel=”sponsored”.
  2. Is the content authored by the advertiser or a guest author supplied as paid content?
    • If yes → mark both the link(s) and the post as sponsored and add a visible disclosure.
  3. Is the link inserted into editorial content as part of a paid placement (link-only purchases, contextual links)?
    • If yes → use rel=”sponsored” on the inserted anchor; add a disclosure indicating link insertion if required by your contract.
  4. Is the link an affiliate or tracking link?
    • If yes → decide based on your affiliate policy whether to use rel=”nofollow”, rel=”sponsored”, or both (both is acceptable).
  5. Is the link user-generated (comments, community) but sponsored in some way (sponsored contest entry)?
    • If yes → combine rel=”ugc sponsored” or rel=”sponsored ugc” and add visible disclosure where practical.

Decision-tree bullets with real-world scenarios:

  • Paid guest post submitted by advertiser with compensation → Use rel=”sponsored”, visible disclosure at top, and add sponsored-content label schema (see Appendix).
  • Link-only purchase where advertiser pays to insert a single anchor into an old post → Apply rel=”sponsored” to that anchor and add a note to your post metadata or update log identifying the insert as paid.
  • Barter (product for placement) → Consider this a material connection; treat as sponsored unless you have a consistent editorial independence practice documented in your Set Editorial Guidelines for Sponsored Content policy.
  • Guest author writes editorial content and includes links to their own business, unpaid → Use rel=”ugc” and a visible author-contributed label unless the link was paid for.
  • Advertiser requests dofollow link → Decline or mark with rel=”sponsored” per your sales terms; document in contracts.

For considerations about selling direct vs marketplaces, see Sell Direct vs via Marketplaces. For category-specific risk (e.g., gambling), consult Should You Accept Casino/Betting Links?.

How to implement rel=”sponsored” in HTML — exact code examples

Below are precise HTML anchor tag examples. Use these snippets directly in your editor or CMS where you can edit HTML. W3C defines rel attribute syntax; for more, see W3C HTML spec.

<a href="https://example.com" rel="sponsored">Sponsor Site</a>
 
<a href="https://example.com" rel="sponsored nofollow">Sponsor Site</a>
 
<a href="https://example.com" rel="ugc">User Link</a>
 
<a href="https://example.com" rel="sponsored ugc">Sponsored UGC</a>
 

Short explanation per example:

  • Example 1: Standard paid link; minimal and clear.
  • Example 2: Dual signaling for conservative publishers who prefer both attributes.
  • Example 3: Signals that content is user-generated; keep separate from paid editorial content.
  • Example 4: Rare combination used when a UGC item is also part of a paid relationship.

For technical posting steps, see Blog Submission in SEO Guide and Practical Posting Steps.

Implementing rel=”sponsored” in WordPress (step-by-step)

This section covers adding rel=”sponsored” for both Gutenberg and Classic Editor workflows, plus Yoast/Rank Math plugin settings and Advanced Custom Fields (ACF) approaches. Request screenshots for the editor-specific steps where noted.

  1. Gutenberg (block editor) — single link
    1. Edit the post in Gutenberg.
    2. Select the linkable text and click the link icon to open the inline link editor.
    3. Click the “Open in new tab” toggle if desired; then click the three-dot menu (or “Link options”) to edit attributes.
    4. In the “Link rel” or “Advanced” field, add: sponsored (or sponsored nofollow). Save.
    5. Update the post.

  2. Classic Editor — single link
    1. Highlight anchor text and click the link icon.
    2. Click “Text” or “HTML” view or use the “Edit” link dialog advanced tab.
    3. Manually add: rel=”sponsored” into the anchor tag. Example: <a href=”https://example.com” rel=”sponsored”>Anchor</a>
    4. Update the post.

  3. Yoast SEO / Rank Math — sitewide defaults and metadata
    1. Yoast: Yoast adds “nofollow” toggle for external links in some versions; it doesn’t auto-add rel=”sponsored” for paid links. Use anchor edit to add rel manually or use a plugin snippet to rewrite attributes.
    2. Rank Math: Similar — check link options; consider using Rank Math’s link management or a custom filter hook to append rel=”sponsored” to links in sponsored posts.
    3. Plugin tip: Use a small mu-plugin or code snippet to automatically add rel=”sponsored” when a post meta (e.g., sponsored = yes) is set.

  4. Advanced Custom Fields (ACF) — structured sponsor fields
    1. Create an ACF true/false field named “sponsored_post” (or “sponsored_links”).
    2. When publishing sponsored content, check this field.
    3. In your template, wrap get_the_content() processing and run a filter: if sponsored_post is true, parse anchors and add rel=”sponsored”.

    Sample PHP filter (annotated):

    // Add rel="sponsored" to all anchors when ACF sponsored flag is set
    add_filter('the_content', function($content){
      if(get_field('sponsored_post')) {
        // Use DOMDocument or regex cautiously; example regex:
        $content = preg_replace('/<a\s+([^>]*?)href=([\'"])(.*?)\\2([^>]*?)>/i',
           '<a $1href=$2$3$2 rel="sponsored"$4>',$content);
      }
      return $content;
    });
    

    Note: Use DOMDocument for safer HTML parsing on production sites.

  5. Plugin options for automation
    1. Use a link management plugin that supports conditional rel attributes (search plugin repository for “rel attribute manager”).
    2. Or create a small mu-plugin that checks a post meta like _sponsored and adds rel=”sponsored” to anchors on output.
    3. Test on a staging site and keep rollback strategy (DB backup) before mass changes.

Screenshot requests for the editorial team: Please capture and upload these images into the CMS where the article will be published:

  • Gutenberg link modal showing “Link options” with rel input.
  • Classic Editor link dialog / HTML view showing anchor tag edited with rel=”sponsored”.
  • Yoast and Rank Math relevant settings screens and an ACF field group showing “sponsored_post”.

If you outsource article writing, consider using an external provider to ensure disclosures are added; see Comprehensive Blog Article Writing Service Guide and Pricing.

Bulk changes, automation, and audit workflows for publishers

When you need to add rel=”sponsored” across many posts or retroactively tag inserted links, choose an approach that balances safety, rollback, and auditability. Below are methods ordered from manual to fully automated.

  1. Manual QA & single-post edits — Safe for low volume. Edit posts in Gutenberg/Classic and add rel attributes manually, record changes in an internal spreadsheet.
  2. Plugin-based automation
    • Use a plugin that adds rel attributes based on post meta or taxonomy terms (e.g., posts in category “sponsored”).
    • Advantages: UI, safe testing, selective targeting. Disadvantages: plugin updates may change behavior.
  3. WP-CLI for batch processing — fast and scriptable.

Example WP-CLI approach (annotated):

# List sponsored posts (assuming meta key _is_sponsored)
wp post list --meta_key=_is_sponsored --meta_value=1 --field=ID

# Update content to add rel="sponsored" - example uses wp-cli eval
wp eval '
$ids = wp_get_recent_posts(array("numberposts"=>-1,"meta_key"=>"_is_sponsored","meta_value"=>"1"));
foreach($ids as $p){
  $content = get_post_field("post_content",$p["ID"]);
  $content = preg_replace("/<a\s+([^>]*?)href=([\'\"])(.*?)\\2([^>]*?)>/i",
    "<a $1href=$2$3$2 rel=\"sponsored\"$4>",$content);
  wp_update_post(array("ID"=>$p["ID"],"post_content"=>$content));
}
'

SQL bulk update (use with extreme caution; backup DB first):

-- Example SQL: add rel="sponsored" to anchors in posts with meta _is_sponsored=1
-- WARNING: Test on staging and backup before running
UPDATE wp_posts p
JOIN wp_postmeta m ON p.ID = m.post_id AND m.meta_key = '_is_sponsored' AND m.meta_value = '1'
SET p.post_content = REGEXP_REPLACE(p.post_content,
  '<a([^>]*?)href=([\\'"])(.*?)(\\2)([^>]*?)>',
  '<a\\1href=\\2\\3\\2 rel=\"sponsored\"\\5>');

Decision guidance matrix:

  • Low volume (<50 posts): Manual edits + spreadsheet audit.
  • Medium volume (50–2,000): WP-CLI scripted approach with staging test and DB snapshot rollback.
  • High volume (2,000+): Develop a plugin or use a content processing pipeline that tags links on render based on metadata, keep logs, and schedule gradual rollout.

Audit safety & rollback tips:

  • Always run a SELECT or dry-run that lists affected post IDs before performing changes.
  • Keep a before/after dump of post_content (or at least a diff) in versioned storage.
  • Test regex patterns thoroughly: HTML is not regular, prefer DOM-based solutions for complex content.

For retrofitting paid links into older posts, see Monetize Old Posts with Link Inserts — Quick Win.

Visible disclosure text: templates and placement that satisfy FTC and reader expectations

Visible disclosure should be plain language, near the top of the post, and unambiguous. Below are 10 short templates grouped by use-case. Place a disclosure above-the-fold (ideally first paragraph or immediately below the headline) and replicate in bundled deliverables like social and newsletters.

Single post (sponsored article) templates:

  • “This article is sponsored by [Advertiser].”
  • “Paid partnership with [Advertiser].”
  • “Sponsored content: [Advertiser] paid for this post.”

Site-wide sponsorship or recurring series:

  • “This series is brought to you by [Advertiser]. Articles may contain sponsored links.”
  • “Sponsored series: content produced in partnership with [Advertiser].”

Link inserts / single anchor purchase:

  • “This post includes a paid link to [Advertiser].”
  • “Paid placement: a link in this article was inserted by [Advertiser].”

Affiliate vs sponsorship clarity:

  • “This post contains affiliate links — we may earn a commission if you click.” (affiliate)
  • “Advertiser compensation received; editorial control retained by the publisher.” (if true)

Short social copy for posts:

  • “Sponsored: [Headline] — full post: [permalink]”
  • “Paid partnership with [Advertiser] — read more: [permalink]”

Placement rules:

  1. Place one clear disclosure above the fold (headline or first paragraph).
  2. Include a repeated disclosure near or next to the sponsored link if the link itself is the sole commercial element.
  3. For bundled deliverables, add disclosure language to social copy and newsletter text (see Create a Media Kit for Sponsored Posts).

SEO impact — what to expect when you add rel=”sponsored”

Adding rel=”sponsored” signals paid links to search engines, which can change how link equity (PageRank) is handled. Historically, a rel attribute reduces the likelihood that Google will treat a link as editorial endorsement, which can limit PageRank flow. However, Google has evolved its handling and treats rel attributes as hints rather than strict directives.

Mini case example 1 (anonymized):

Publisher A retrofitted 120 sponsored anchors across 75 posts and monitored rankings for the affected URLs. After 30 days, Publisher A saw no negative ranking changes; internal checks showed organic referring traffic held steady. Workflow: added rel=”sponsored”, updated disclosures, recorded changes in an audit log.

Mini case example 2 (anonymized):

Publisher B used rel=”sponsored nofollow” on link inserts in high-DR posts. Over 90 days they observed slight variance in referral traffic (+5%/-3% across posts), but no correlating algorithmic penalties. They monitored via Google Search Console and internal logs.

What to monitor (checklist):

  • Google Search Console: external links and top linking pages — watch for drops in impressions or clicks for affected pages.
  • Referral traffic (Analytics): track referral sessions from the sponsor domains before/after changes.
  • Rankings for primary keywords on pages where links were inserted or altered.
  • Backlink profile changes in your link auditor tool — verify anchor text and rel values recorded.

Metrics to watch and timeline:

  • Short term (0–14 days): ensure pages re-crawl and rel attributes are present in fetched source.
  • Medium term (30–90 days): watch ranking movement and referral traffic; check Google Search Console link reports.
  • Long term (90+ days): determine whether link treatment is producing expected commercial outcomes while protecting organic performance.

For buyer/seller perspectives on pricing vs link quality, see Buy Guest Posts Guide: Pricing and Link Quality Considerations.

Reporting to advertisers and contract language to include

Publishers need clear reporting and contract clauses that confirm link treatment and disclosure placement. Buyers frequently request assurance that links are labeled and that disclosures are visible to readers.

  • Reporting cadence: provide a “published” report within 24–72 hours (URL, anchor text, rel value applied, screenshot of disclosure, and placement confirmation).
  • Deliverables to include: post URL, publish date, social share timestamps, disclosure screenshot, and confirmation of rel attribute applied.
  • Store internal logs with post_id, anchor, rel value, change timestamp for auditability.

Sample contract clauses (snippets):

  1. “Link Treatment: Publisher will add rel="sponsored" to all paid links and provide a screenshot confirming the rel attribute within 72 hours of publication.”
  2. “Disclosure: Publisher will include a visible disclosure on the published page stating the post contains sponsored content or paid links, placed at or near the top of the article.”
  3. “Reporting & Audit: Publisher will provide a report containing post URL, anchor text, rel attribute value, and proof of disclosure; failure to comply within agreed times may be remedied per dispute terms.”

Helpful links for operations and payments: see Accept Payments Safely for Guest Posts and to include SLAs: Turnaround SLAs for Sponsored Posts. Also advise advertisers on tax recordkeeping: Taxes on Sponsored Posts — What to Track.

Troubleshooting common problems and FAQs for publishers

  1. Links stripped by platform — Problem: hosting platform or comment system sanitizes or strips rel attributes. Fix: update platform settings, use server-side filters to append rel on render, or use plugin hooks to enforce rel values.
  2. Plugin overriding rel — Problem: a plugin rewrites anchor attributes. Fix: identify plugin with a conflict test (disable plugins one by one on staging), and if necessary, add a higher-priority filter in functions.php to force your rel value.
  3. Legacy content inconsistencies — Problem: older posts lack disclosures or proper rel attributes. Fix: run a staged WP-CLI or SQL update with dry-run logs and a DB backup; notify advertisers and update reporting.
  4. Buyer disputes about “dofollow” links — Problem: buyer expects dofollow. Fix: rely on contract clause that mandates rel treatment; offer compensatory placement alternatives (e.g., PR placements) but do not compromise policy.
  5. Search Console shows no rel changes — Problem: Google may not immediately re-crawl. Fix: request indexing via Google Search Console for changed URLs and monitor crawl stats; allow 1–4 weeks for changes to surface.
  6. Rel attribute conflicts — Problem: multiple rel values mis-ordered or malformed (e.g., rel=’nofollow”sponsored’). Fix: validate anchor syntax and use standard formatting: rel=”sponsored nofollow”.

For buyer vetting to avoid disputes and chargebacks, see Vet Buyers: Avoid Scams and Chargebacks.

Checklist — publish-ready verification and audit before/after accepting a paid post

Copyable 20-item checklist for pre-publish and post-publish QA:

  1. Confirm contract clause specifying rel attribute and disclosure.
  2. Set post meta (e.g., _is_sponsored = 1).
  3. Author/guest agrees to disclosure wording in writing.
  4. Add visible disclosure at top of the post.
  5. Add rel=”sponsored” to all paid anchors (single or multiple).
  6. Verify anchor text matches contract deliverable.
  7. Capture pre-publish screenshot of editor settings and disclosure draft.
  8. Publish on staging first (if applicable) and test rel presence in page source.
  9. Take published page screenshot showing disclosure and link.
  10. Record post_id, URL, anchor, rel value in internal log.
  11. Provide advertiser with report (URL, screenshot, rel value) within agreed SLA.
  12. Run Google Search Console URL inspection to request indexing.
  13. Monitor referral traffic and ranking baseline for 30/60/90 days.
  14. Retain payment record and disclosure proof for compliance audits.
  15. Check social and newsletter copies include disclosure for bundled offers.
  16. Backup post content and database snapshot before bulk edits.
  17. If automating, test on a subset (10–20 posts) first.
  18. Confirm plugins (Yoast/Rank Math) are not stripping rel values.
  19. Log any post-change corrections and notify advertiser if corrections affect deliverables.
  20. Schedule a post-campaign audit (after 90 days) to review performance and compliance.

Recommended reading for setup/pricing context: Sell Guest Posts Guide: Pricing, Requirements, and Tips

Appendix: Quick reference (one-line commands, SQL examples, sample disclosure texts)

Reference snippets for technical teams and editors.

WP-CLI one-liner (dry-run):

# List IDs first
wp post list --meta_key=_is_sponsored --meta_value=1 --field=ID

WP-CLI update (example — test on staging):

wp eval-file add-sponsored-rel.php
# add-sponsored-rel.php should implement DOMDocument-based update and logging

SQL example (annotated) — backup before use:

-- SELECT affected posts first
SELECT p.ID, p.post_title FROM wp_posts p
JOIN wp_postmeta m ON p.ID = m.post_id
WHERE m.meta_key = '_is_sponsored' AND m.meta_value = '1';

-- Then run UPDATE after testing:
-- (See Bulk changes section for regex example)

Sample disclosure texts (short):

  • “This post is sponsored by [Advertiser].”
  • “Paid partnership with [Advertiser] — content contains sponsored links.”
  • “Contains paid links — we may receive compensation.”

Schema: add a sponsored-content label via metadata or schema markup (e.g., articleBody / isAccessibleForFree false and comment indicating sponsorship) so internal tools can flag posts for reporting.

Mini audit log example (before/after):

-- CSV columns: post_id, anchor_text, old_rel, new_rel, updated_at
123, "Example anchor", "", "sponsored", 2026-06-01T10:12:00Z
124, "Another link", "nofollow", "sponsored nofollow", 2026-06-02T09:45:00Z

Mini-case example 3 (anonymized): Publisher C used ACF + a DOMDocument filter to add rel=”sponsored” for 300 flagged posts, ran a 7-day monitoring plan, and logged no measurable SEO decline; they stored audit logs for 2 years and kept advertiser reports. This demonstrates a safe automated path with rollback procedures.

Reminder: As of 2026-06, Google treats rel attributes as signals; monitor via Google Search Console and internal logs.

Legal caveat: This guide is for informational purposes and not legal advice. Consult legal counsel for jurisdiction-specific compliance.

Summary and CTA: Use rel=”sponsored” for paid links, always pair it with a visible disclosure per FTC guidance, and adopt a repeatable CMS and audit workflow (ACF, WP-CLI, or plugin) to scale. For complete operational setup and pricing considerations, review Sell Guest Posts Guide: Pricing, Requirements, and Tips. Ready to standardize your paid-post process? Export this checklist and run a staged test on 10 posts this week.

Frequently Asked Questions

What does rel=”sponsored” mean and when should I use it?

rel=”sponsored” labels a link as paid/advertising. Use it on anchors in paid guest posts, link insertions, and explicit sponsorships to signal a commercial relationship to search engines while adding a visible disclosure for readers.

How is rel=”sponsored” different from rel=”nofollow” and rel=”ugc”?

rel=”sponsored” marks paid links; rel=”nofollow” indicates you don’t endorse the target; rel=”ugc” marks user-generated links. You can combine values (e.g., rel=”sponsored nofollow”) depending on trust and policy needs.

How do I add rel=”sponsored” to links in WordPress (Gutenberg and Classic)?

In Gutenberg, open the link options on the selected text and add “sponsored” in the rel field; in Classic, switch to Text/HTML view and add rel=”sponsored” to the <a> tag. For bulk, use ACF + a filter, a plugin, or WP-CLI with staging tests.

Do I still need a visible FTC disclosure if I use rel=”sponsored”?

Yes. The FTC requires a conspicuous visible disclosure for material connections; rel=”sponsored” is machine-readable and does not replace human-facing disclosure. Use plain-language text near the top of the article.

How long does it take for search engines to process rel attribute changes?

Processing varies; expect initial re-crawl in days to weeks. Request indexing via Google Search Console and monitor results over 1–4 weeks for changes to appear in link reports and 30–90 days for ranking/traffic signals to stabilize.

What if a plugin or theme strips rel attributes — how do I fix it?

Identify the conflicting plugin by testing on staging, then add a higher-priority filter to append rel=”sponsored” on output or switch to a plugin that preserves attributes. Always test and backup before changes.

Should I apply rel=”sponsored” to affiliate links or only paid guest posts?

Affiliate links are a material connection; many publishers use rel=”nofollow” or rel=”sponsored” (or both) for affiliates. Choose based on your policy and disclose affiliate relationships visibly to readers.

How can I bulk-update older posts to add rel=”sponsored” without breaking links?

Best practice: backup the DB, test updates on staging, run a dry-run SELECT of affected posts, then use WP-CLI or a DOMDocument-based script to add rel values. Keep a rollback snapshot and audit logs of changed posts.