Skip to content

Send Pipeline

Yohan Marshall edited this page Aug 29, 2026 · 2 revisions

Send Pipeline

How a document becomes a sealed PDF. This page is the shape of the flow; for exact request and response behavior see /docs and /openapi.json, and for why each piece works the way it does see the design specs in docs/superpowers/specs.

1. Something arrives

A send carries exactly one document, in one of three forms:

  • PDF, used as it is.
  • Word (.docx), converted to PDF on the server before anything else touches it.
  • Markdown, rendered to a clean PDF by us. The markdown source is kept alongside the PDF, so the sender can get back what they actually wrote.

Everything past this point works only with PDF bytes, which is why conversion happens first. The web send page also accepts plain text and .md files by opening them in a write view, so a person can edit before sending.

2. Fields get attached

Fields are the boxes a signer fills. They can come from four places, and they all end up as the same thing: a typed box, bound to a signer role, positioned as a percentage of the page.

  • Tags in the document text, like {{sig}}, which we then white out so the tag itself never shows in the signed copy.
  • Placed by hand in the send editor, by picking a type and clicking the page.
  • Imported from a fillable PDF's existing form fields.
  • Suggested by AI for PDFs, which proposes fields the sender can accept or ignore.

The sender can also draw corrections that get burned into the PDF at send time.

3. The send is authorized

Sending is never anonymous, but it does not require an account. Who the caller is decides whether the document goes out immediately or waits:

  • No credentials: we email the sender a one-time code, and the document waits until they confirm.
  • A logged-in person sending as themselves: goes directly, unless they have asked us to confirm their own sends.
  • An API key: a standing authorization, so it sends immediately.
  • An OAuth agent: held for the account owner's emailed approval by default, because an agent acting on someone's behalf should not be the last word.

4. A human finishes

Signers get an email link and sign at /s/:token with no account, in order by default or all at once if the sender asked for that. An agent party can attest instead, which attaches a cryptographic receipt rather than a signature.

When the last party is done we seal the PDF and write the audit trail. Webhooks fire if any were registered.

5. It gets cleaned up

Documents do not live forever. Free ones are shredded on a short clock, Pro keeps them for a year, and a sender can purge one immediately. See Home for the packaging details. There is no restore.