Ship to Devs
2026-10-30

How to Write a Trust Page (and Add security.txt)

Developers adopt your API. Then someone at their company has to approve it. That person opens your site, looks for a page called "Security" or "Trust," and decides in a few minutes whether you look like a vendor that takes this seriously.

If that page doesn't exist, they email you a questionnaire. If it exists and is vague, they email you a questionnaire and trust you less. If it's clear and specific, many of their questions are already answered.

This guide covers how to write a trust page for a small dev-tool or API company, and how to publish a correct security.txt file alongside it.

What a trust page is for

A trust page has three readers: the security reviewer, who wants specifics; the developer champion, who wants a link to forward internally; and the security researcher, who wants a contact address, fast. Write for all three.

The one rule: only publish what is true today

A trust page is a public statement about your company. Everything on it should be true now, not planned. Put roadmap items in a clearly labeled "What's next" section with honest wording. Don't display a compliance badge or framework name you haven't earned, and don't describe a cloud provider's certifications as if they were yours.

Structure that works

Use this order. Each section is short.

1. Summary (three to five sentences)

Who owns security, what you protect, and how to reach you.

Security at [Product] is owned by our CTO. We store customer API payloads for [N] days in [region], encrypted at rest and in transit. We do not currently hold a SOC 2 report; this page describes the controls we operate today. Questions: [email protected].

2. Infrastructure and hosting

3. Data handling

This is the section reviewers read most carefully.

Topic What to write
What data you collect List categories: account info, API request metadata, payloads (if stored).
Where it lives Region(s), data stores.
Encryption In transit (TLS version policy), at rest (what's encrypted and how keys are managed).
Retention How long each category is kept.
Deletion How a customer requests deletion, and how long it takes.
Subprocessors Link to a list of third parties that touch customer data and why.

Be concrete. "We take data protection seriously" says nothing. "Request payloads are deleted after 30 days; account data is deleted within 30 days of account closure" says something.

4. Access control

5. Application security

6. Availability and incident response

7. Compliance

State exactly where you are. Good examples:

8. Vulnerability disclosure

A short policy: how to report, what's in scope, what researchers should not do, and that good-faith research is welcome. Link to your security.txt.

9. Documents on request and last updated

List what a reviewer can get under NDA (security overview, architecture diagram, incident response plan).

A date at the bottom. Review the page quarterly and change the date only when you actually reviewed it.

Writing the vulnerability disclosure policy

You don't need to invent this. CISA publishes a vulnerability disclosure policy template written for U.S. federal agencies, and its structure adapts well to a small company:

Keep the promises you make. If you say you'll acknowledge reports within three business days, set up the alerting to make that true.

Adding security.txt (RFC 9116)

security.txt is a small plain-text file, defined in RFC 9116, that tells researchers how to reach you. It's a few minutes of work and reviewers notice it.

Where it goes

Serve it at:

https://example.com/.well-known/security.txt

The RFC requires the file to live under the /.well-known/ path and to be served over HTTPS, as text/plain with a UTF-8 charset. A copy at the site root is allowed for legacy compatibility, but the /.well-known/ version takes precedence.

Required fields

Two fields are required:

Everything else is optional.

Useful optional fields

A minimal, correct example

Contact: mailto:[email protected]
Contact: https://example.com/security/report
Expires: 2027-09-30T23:59:59Z
Policy: https://example.com/security/disclosure-policy
Preferred-Languages: en
Canonical: https://example.com/.well-known/security.txt

The RFC also recommends signing the file with an OpenPGP cleartext signature. If you don't have a key-management process yet, ship the unsigned file first and add signing later.

Don't let it go stale

The Expires field exists because outdated contact info sends reports to the wrong place. Put a calendar reminder a month before the expiry date. When you rotate the security inbox, update the file the same day. Check it into your repo so it goes through the same review as everything else.

Verify after deploy (some static build tools skip dot-folders): curl -sI https://example.com/.well-known/security.txt should return 200 and text/plain; charset=utf-8.

Checklist

Do this next

The Security Review Kit includes a fill-in trust page template, a disclosure policy outline and a security.txt starter, written for small dev-tool teams. It's also part of the Developer Launch Kit Complete bundle. Get the Security Review Kit: https://shiptodevs.com/#security-review

Sources

From Ship to Devs

The Security Review Kit: the full method as templates, a worked example and agent skills.

See The Security Review Kit