Skip to content
Last updated

Send an envelope using multiple templates

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.

Prerequisites

Ensure you gather the following for each template you want to include:

  • template_fingerprint — the unique identifier for the template
  • party_id — the identifier for each signing position within the template
  • field_id — the identifier for any merge fields you want to prefill (optional)

Retrieve these values by calling the Get template endpoint.

How multiple templates differ from a single template

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.

Build the request

Send a POST request to the envelopes endpoint:

POST https://api.signable.co.uk/v1/envelopes

Structure the envelope parties

For each signer, include a party_documents array containing:

FieldDescription
party_idThe signing position identifier from a specific template
document_template_fingerprintThe template that contains this signing position

A signer can appear in one template, multiple templates, or all templates depending on your workflow.

Structure the envelope documents

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.

Example request

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"
    }
  ]
}

Understand the example

This request assigns signers to templates as follows:

Alex Mitchell signs both templates:

  • Signing position 20748256 in the first template (28f9...)
  • Signing position 20748265 in the second template (88d2...)

Jordan Smith signs one template:

  • Signing position 20748255 in 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."

After you send the request

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.