Docs

Concepts

Pact lifecycle

How a pact moves from draft to sealed, how signers take turns, what signing links are, and how to follow progress.

A pact is one document sent to specific people for signature. It freezes a copy of the PDF when it is created (its SHA-256 is sent_sha256), lists the recipients in signing order, carries the fields from the document's glyphs, and keeps an audit trail of everything that happens to it. (Other e-signature services call this an envelope; the FAQ says why we don't.)

Statuses

Lifecycle
draft ──send──▶ sent ──last signer signs──▶ sealed
                 │
                 ├──a signer declines──▶ declined
                 ├──you void it────────▶ voided
                 └──deadline passes────▶ lapsed
Status Meaning What you can do
draft Created, not sent. Costs nothing yet. Send or delete it.
sent Out for signature; current_signer is whose turn it is. Resend the link or void it.
sealed Everyone signed; the fields are stamped and the sigil is built. Download the signed PDF and its sigil.
declined A signer declined; their reason is on the recipient. Nothing more. Create a new pact if needed.
voided You withdrew it. Nothing more.
lapsed Not sealed by date_lapses. Nothing more. Create a new one from the same template.

sealed, declined, voided and lapsed are final.

Signing in order

Signers sign one at a time, in the order you listed them. Sending invites signer 1 by email. When they finish, signer 2 is invited, and so on. While a pact is sent, current_signer holds the order of the person whose turn it is.

CC recipients are never asked to sign. They receive the finished copy when the pact is sealed.

What a signer sees

Each signer gets an email with a private link. On the signing page they:

  1. agree to do business electronically (the consent text is versioned, and the version they saw is recorded);
  2. fill in their text fields and tick their checkboxes;
  3. draw their signature, and their initials if the document has initials fields;
  4. type their full name, which also fills their printed-name fields.

Or they decline, with a reason, which ends the pact as declined.

A signing link belongs to one signer for one turn. It is private: anyone who has it can sign as that person.

  • Sigil emails it. To deliver it yourself as well, for example by text message, ask for it with include_links=1 on Get a pact; it appears as signing_url on the signer whose turn it is.
  • Resending issues a fresh link and the old one stops working.
  • Links stop working when the pact is voided or lapses.

Lapsing

A pact lapses if it is not sealed by date_lapses, 30 days after sending unless you set lapse_days (1 to 365) when creating or sending it. Lapsing is applied whenever pacts are read, so a past-due pact shows as lapsed from then on.

Sealing

When the last signer signs, Sigil stamps every signature, initial, name, date, text value and tick onto the document, and seals the pact with its sigil, the certificate of completion: each signer with their email address, when they viewed and signed (UTC), their IP address, the consent version they agreed to, the hashes of the document as sent and as signed, and the full event log. Both are emailed to every recipient and to you, and both can be downloaded.

The event log

Every pact keeps an audit trail in events, oldest first:

Event When
created The draft was created (note: where from, and how many signers).
fields Its fields were placed or changed by hand in the website's field editor (note: how many).
sent It was sent (note: signers, and the date it lapses).
emailed / email_failed A signer's invitation was sent, or could not be delivered.
viewed A signer opened their link.
consented A signer agreed to sign electronically (note: the consent version).
signed A signer signed (note: who, and the name they typed).
declined A signer declined (note: their reason).
reissued You resent the link; the old one stopped working.
sealed The last signer signed, and the signed PDF and its sigil were made.
copy_emailed / copy_email_failed The finished copy was emailed to a recipient or to you.
voided You voided it (note: your reason).

Following progress

There are no webhooks yet. Poll Get a pact, or list with status=sent, every few minutes, and stop when a pact's status is no longer sent. Signing usually takes hours or days, so there is no need to poll quickly.

Custom domains

With a verified custom domain, pass domain_host when creating a pact. Its signing page and emails then carry your domain, name and logo instead of Sigil's. List domains shows which you can use.