Combine multiple templates into a single envelope when your workflow requires signers to complete several documents at once. This approach is useful for onboarding packs, contract bundles, and multi-stage compliance flows.
This guide builds on Send an envelope using a template. Complete that guide first if you have not already.
Ensure you gather the following for each template you want to include:
template_fingerprint— the unique identifier for the templateparty_id— the identifier for each signing position within the templatefield_id— the identifier for any merge fields you want to prefill (optional)
Retrieve these values by calling the Get template endpoint.
The request structure is almost identical to the single-template flow. The difference is how you assign signers to templates.
With a single template, each signer maps to one party_id. With multiple templates, each signer may need to sign fields across several templates. Replace the single party_id with a party_documents array that maps the signer to their specific position in each template.
Send a POST request to the envelopes endpoint:
POST https://api.signable.co.uk/v1/envelopesFor each signer, include a party_documents array containing:
| Field | Description |
|---|---|
party_id | The signing position identifier from a specific template |
document_template_fingerprint | The template that contains this signing position |
A signer can appear in one template, multiple templates, or all templates depending on your workflow.
List each template in the envelope_documents array. Optionally prefill merge fields by including a document_merge_fields array with the field_id and field_value for each field.
The following request creates an envelope with two templates and two signers:
{
"envelope_title": "Melbourne Road 23/06/25",
"envelope_parties": [
{
"party_name": "Alex Mitchell",
"party_email": "alex@example.co.uk",
"party_role": "signer",
"party_documents": [
{
"party_id": 20748256,
"document_template_fingerprint": "28f9add86f25028df2eee9adee866aba"
},
{
"party_id": 20748265,
"document_template_fingerprint": "88d2c9e8dc4a69ce1cd97ac1684f3e45"
}
]
},
{
"party_name": "Jordan Smith",
"party_email": "jordan@example.co.uk",
"party_role": "signer",
"party_documents": [
{
"party_id": 20748255,
"document_template_fingerprint": "28f9add86f25028df2eee9adee866aba"
}
]
}
],
"envelope_documents": [
{
"document_title": "TC 2025 v2",
"document_template_fingerprint": "28f9add86f25028df2eee9adee866aba",
"document_merge_fields": [
{
"field_id": "454958773",
"field_value": "Note that breakables are not included in rent cost"
}
]
},
{
"document_title": "TC 2025 v3",
"document_template_fingerprint": "88d2c9e8dc4a69ce1cd97ac1684f3e45"
}
]
}This request assigns signers to templates as follows:
Alex Mitchell signs both templates:
- Signing position
20748256in the first template (28f9...) - Signing position
20748265in the second template (88d2...)
Jordan Smith signs one template:
- Signing position
20748255in the first template (28f9...)
The first template includes a prefilled merge field. When Alex and Jordan open the document, the field with ID 454958773 contains the text "Note that breakables are not included in rent cost."
A successful request returns an envelope fingerprint in the response. Signable sends each signer an email with their signing link. Signers see all documents assigned to them within a single signing session.
To track envelope progress programmatically, subscribe to webhooks for status updates.
- Send an envelope using a template — Covers the single-template workflow that this guide builds on
- Webhooks — Configure notifications to track when signers complete documents