Lifecycle

Decline, expire, and remind — the full signing-request lifecycle.

A signing request is no longer just “pending → completed.” NoSign tracks a full lifecycle, and every transition emits its own webhook event.

States

StateMeaningTerminal?
pendingCreated, awaiting the first signerno
in_progressAt least one signer has acted, others remainno
completedAll signers signed; the PDF is sealed and the webhook firesyes
declinedA signer declined; an optional decline_reason is capturedyes
expiredThe request was not completed within its windowyes

Decline

A signer can decline instead of signing. The request enters the terminal declined state, an optional decline_reason is recorded in the audit trail, and a signing.declined webhook fires. No further signers are emailed.

Expiry

Unsigned requests expire after a configurable window (default 30 days). A scheduler moves them to the terminal expired state and fires a signing.expired webhook. Expiry is the safety net against requests lingering forever with personal data attached.

Reminders

Before expiry, NoSign sends the current signer reminder emails on a configurable cadence (default 7 / 3 / 1 days before the deadline). Reminders are tracked per request so a signer is never reminded twice for the same checkpoint.

Checking status

Your platform can poll a request and its per-signer status at any time:

GET /v1/signing-requests/{id}
{
"id": "sr_8fk2",
"status": "in_progress",
"expires_at": "2026-07-11T09:00:00Z",
"signers": [
{ "email": "ada@example.com", "status": "signed" },
{ "email": "grace@example.com", "status": "pending" }
]
}

Field names are illustrative. Verify against your NoSign instance’s API.

The webhook remains the primary, push-based notification path — polling is for reconciliation, not the happy path.