Skip to main content

Terms of service page exists

ab-002184 · pre-launch.legal.terms-of-service
Severity: highactive

Why it matters

Without a terms-of-service page, you have no written agreement limiting liability, defining acceptable use, or establishing governing law — disputes default to whatever jurisdiction the plaintiff chooses. Payment processors including Stripe require terms for high-risk categories, and app stores reject submissions that lack them. User-generated content sites face DMCA exposure without a takedown clause, and subscription products cannot enforce refund policies that users never agreed to.

Severity rationale

High because it creates direct legal and financial exposure on any site with accounts, payments, or user content.

Remediation

Create a route at app/terms/page.tsx covering acceptable use, service guarantees, payment and refund terms, account termination, limitation of liability, and governing law. Link it from the footer and add a consent checkbox at signup (By signing up you agree to our Terms). Start from a template service like Termly or Docracy, then have counsel review if you accept payments, handle PII, or host user content.

// components/footer.tsx
<Link href="/terms">Terms of Service</Link>

Detection

  • ID: pre-launch.legal.terms-of-service

  • Severity: high

  • What to look for: Count all terms-related pages and links. Enumerate whether a terms of service page exists and is linked from the footer or signup flow. Search for a route or page that serves terms of service. Look for files matching patterns like terms.tsx, terms/page.tsx, tos.tsx, terms-of-service.tsx, legal/terms.tsx. Check footer navigation components for links to terms pages.

  • Pass criteria: A terms of service page exists at a reachable route (e.g., /terms, /terms-of-service, /tos, /legal/terms). At least 1 terms of service page must exist and be linked from the site footer.

  • Fail criteria: No terms of service page found anywhere in the project routes.

  • Skip (N/A) when: Skip for static informational sites or internal tools with no user accounts, transactions, or user-generated content. Signal: no auth dependencies, no payment dependencies, no user input beyond contact forms.

  • Cross-reference: For privacy policy, see privacy-policy.

  • Detail on fail: "No terms of service page found — strongly recommended for any SaaS, marketplace, or application where users create accounts or conduct transactions"

  • Remediation: Terms of service define the rules of engagement between you and your users. They protect you legally and set user expectations:

    // components/footer.tsx — terms link
    <Link href="/terms">Terms of Service</Link>
    // Ensure app/terms/page.tsx exists
    
    1. Create a page at /terms or /terms-of-service.
    2. Core sections to include: acceptable use, what the service does and doesn't guarantee, payment and refund terms (if applicable), account termination conditions, limitation of liability, and governing law.
    3. For SaaS products, also include subscription terms, data handling commitments, and API usage terms if you have an API.
    4. Link the terms in your footer, at account signup (with a "By signing up you agree to our Terms" pattern), and in any checkout flow.
    5. Use a template service (Termly, Docracy, etc.) as a starting point, but have a lawyer review if your exposure is significant.

Taxons

History