The FTC Endorsement Guides require affiliate disclosures to be 'clear and conspicuous' and placed where consumers see them before they click — a footer link to a 'Disclosure Policy' page does not meet this standard. A resource page or blog post with undisclosed affiliate links deceives consumers into thinking the recommendations are independent when they generate commissions. This is a direct Endorsement Guides violation that the FTC has actively enforced against publishers, bloggers, and software companies recommending partner tools.
High because undisclosed affiliate links misrepresent the commercial nature of recommendations at the decision point — the moment the consumer is about to click — making the deception immediate and material.
Add a disclosure banner at the top of every page containing affiliate links, and optionally label individual links inline.
// Page-level disclosure — place at the TOP of affiliate pages
function AffiliateDisclosureBanner() {
return (
<div className="bg-blue-50 border border-blue-200 rounded p-3 mb-6">
<p className="text-sm">
<strong>Disclosure:</strong> Some links on this page are affiliate
links. We may earn a commission if you purchase through them,
at no extra cost to you. This does not influence our recommendations.
</p>
</div>
)
}
// Individual link with inline label
function AffiliateLink({
href, children
}: { href: string; children: React.ReactNode }) {
return (
<a href={href} rel="nofollow sponsored">
{children}
<span className="text-xs text-gray-500 ml-1">(affiliate)</span>
</a>
)
}
Also add rel="nofollow sponsored" to affiliate links for SEO correctness. A link to a disclosure page in the footer is explicitly insufficient under the FTC Endorsement Guides — the disclosure must appear where the consumer will see it before clicking.
ID: ftc-consumer-protection.endorsement-disclosure.affiliate-links-disclosed
Severity: high
What to look for: Count all relevant instances and enumerate each. Search the codebase for affiliate link patterns: URL parameters like ?ref=, ?aff=, ?via=, ?partner=, links that go through redirect domains, or links to third-party products on pages like "Resources," "Stack," "Tools I Use," "Recommended," or in blog posts. For each affiliate or referral link found, check whether a disclosure appears: (1) at the top of the page containing the links, OR (2) immediately adjacent to each individual link. The FTC requires that affiliate disclosures be "clear and conspicuous" and placed where consumers can see them before clicking — not just in a footer link to a "disclosure policy" page. Also check whether the link itself is visually indistinguishable from non-affiliate links (it should ideally be labeled "(affiliate)" or "(ad)" or explained in nearby text).
Pass criteria: All affiliate or referral links are disclosed either at the top of the page they appear on or immediately adjacent to the link. At least 1 implementation must be verified. The disclosure is visible without clicking or scrolling past the link. Links to a general "affiliate disclosure" page in the site footer do not meet this standard on their own.
Fail criteria: Affiliate links exist on resource pages, blog posts, or comparison pages with no disclosure. Disclosure only exists in a footer link ("Affiliate Disclosure") that users are unlikely to notice before clicking. Referral tracking parameters are present on outbound links with no disclosure anywhere on the page.
Skip (N/A) when: The application has no affiliate, referral, or commission-based outbound links.
Detail on fail: Example: "Resources page contains 12 outbound links with '?aff=auditbuffet' parameters. No affiliate disclosure appears anywhere on the page. Footer links to 'Disclosure Policy' page only." or "Blog post reviews and recommends 4 tools, all with referral parameters in the URLs. No disclosure at top of post or adjacent to links." or "Tool comparison page contains affiliate links with no labeling or page-level disclosure."
Remediation: Add page-level disclosure at the top of pages containing affiliate links, and optionally label individual links:
// Page-level affiliate disclosure — place at TOP of page
function AffiliateDisclosureBanner() {
return (
<div className="bg-blue-50 border border-blue-200 rounded p-3 mb-6">
<p className="text-sm">
<strong>Disclosure:</strong> Some links on this page are affiliate
links. If you purchase through these links, we may earn a commission
at no extra cost to you. This does not influence our recommendations.
</p>
</div>
)
}
// Individual link with inline label
function AffiliateLink({
href, children
}: { href: string; children: React.ReactNode }) {
return (
<a href={href} rel="nofollow sponsored">
{children}
<span className="text-xs text-gray-500 ml-1">(affiliate)</span>
</a>
)
}
Also add rel="nofollow sponsored" to affiliate links for SEO correctness. The FTC guidance explicitly states that a link to a disclosure page is not sufficient — the disclosure must be where the consumer will see it before they act on the link.