Guide · Multi-Signer Workflows

Multi-signer e-signatures

Real-world contracts often need more than one signature. GetSigned supports sequential routing, parallel signing, and mixed workflows — all controlled by a single routing_order field per signer.

Three routing modes

Sequential routing

Signers receive the document one at a time in a defined order. Signer 2 only gets their link after Signer 1 completes. Common for contracts requiring hierarchical approval.

Example: Employee → Manager → Legal → HR
routing_order: 1, 2, 3…

Parallel signing

All signers receive their links simultaneously and can sign in any order. The envelope completes when the last signer finishes. Fastest time-to-completion.

Example: Co-founders signing simultaneously
routing_order: 1, 1, 1…

Mixed routing

Groups share a routing_order value (sign in parallel within the group) and groups are ordered sequentially. Enables approval workflows with parallel approvers at each stage.

Example: Both legal reviewers (parallel) → then CEO
routing_order: 1, 1, 2…

Creating a multi-signer envelope

Pass a routing_order integer per signer. Signers sharing the same value sign in parallel. Lower values sign first.

POST /v1/envelopes — mixed routing example
{
  "signers": [
    {
      "id": "signer_1",
      "name": "Alice (Legal)",
      "email": "alice@legal.co",
      "routing_order": 1   // parallel with Bob
    },
    {
      "id": "signer_2",
      "name": "Bob (Legal)",
      "email": "bob@legal.co",
      "routing_order": 1   // parallel with Alice — both get links immediately
    },
    {
      "id": "signer_3",
      "name": "CEO",
      "email": "ceo@company.com",
      "routing_order": 2   // receives link only after Alice AND Bob have signed
    }
  ],
  "fields": [
    { "signer_id": "signer_1", "type": "signature", "page": 3, "x": 120, "y": 680 },
    { "signer_id": "signer_2", "type": "signature", "page": 3, "x": 320, "y": 680 },
    { "signer_id": "signer_3", "type": "signature", "page": 4, "x": 220, "y": 720 }
  ]
}

Tracking signing progress

Webhook events

Subscribe to signer.signed for per-signer completion events. Subscribe to envelope.completed to know when the document is sealed and ready. Both carry signer_id and timestamps.

Status polling

GET /v1/envelopes/{id} returns per-signer status (pending, viewed, signed, declined) at any time. Useful for building a real-time signing status dashboard.

Reminder scheduling

Fire reminder emails to incomplete signers after a configurable delay. Use the signer.signed webhook to cancel scheduled reminders for signers who have already completed.

Decline handling

envelope.declined fires if any signer declines. The sender is notified; the envelope moves to a terminal declined state. Create a new envelope to restart the flow.

Frequently asked questions

How do multi-signer e-signatures work?

A multi-signer e-signature envelope assigns routing_order values to each signer. Signers with the same routing_order receive their signing links simultaneously (parallel). The next routing_order group is notified only after all signers in the previous group complete. The envelope reaches "completed" status and is sealed once every signer across all groups has signed.

What is the difference between sequential and parallel signing?

In sequential signing, each signer must complete before the next receives their link — routing_order values are unique (1, 2, 3…). In parallel signing, all signers receive links at the same time — routing_order values are all the same (e.g., all set to 1). Mixed routing combines both: groups share a routing_order value and are parallelized within, but groups themselves are ordered sequentially.

How do I assign fields to specific signers in a multi-signer envelope?

Each field object in the fields array includes a signer_id that references a specific signer. When that signer opens the signing page, only their assigned fields are presented. Fields for other signers appear as read-only placeholders. You set this when creating the envelope via the API.

How do I track which signers have completed in a multi-signer flow?

Subscribe to the signer.signed webhook event — it fires each time an individual signer completes, carrying the signer's ID and timestamp. The envelope.completed event fires once the last signer across all routing groups is done and the document is sealed. GET /v1/envelopes/{id} also returns per-signer status at any time.

What happens if one signer declines in a multi-signer envelope?

If any signer fires the envelope.declined event, the envelope moves to a declined terminal state. No further signing links are dispatched. The sender receives an envelope.declined webhook and can choose to void the envelope or create a new one. Signers who already signed are notified of the cancellation.

Is there a limit on the number of signers per envelope?

GetSigned supports up to 50 signers per envelope across all plans. Most legal and business workflows involve 2–5 signers. If you have a higher-volume use case, contact us to discuss enterprise limits.

Related: Webhook guide · Integration guide · Audit trail guide

Add multi-signer workflows to your app

Get free API keys →