Skip to main content
Make is a no-code automation platform. A blueprint is a Make scenario exported as JSON: import it (Import blueprint), connect your own accounts, and every module comes back configured. The two blueprints below run every flow of this guide with Yousign: Tomorro → Yousign (Flows 1 and 3) and Yousign → Tomorro (Flows 2 and 4). Use them as a head start: import them if you run Make, read them as a reference implementation if you build on n8n, custom code or another signature tool.

Get the 2 Make blueprints

The 3rd party files: Tomorro → Third-Party (Flows 1 and 3) and Third-Party → Tomorro (Flows 2 and 4).
The two Make blueprints above are a working example, not a ready-made integration. They make choices you may want to change for your own setup:
  • Yousign sandbox: every Yousign call targets api-sandbox.yousign.app. Switch to api.yousign.app for production.
  • Signature level: electronic_signature (simple electronic signature), with signature_authentication_mode: no_otp, so signers get no SMS or email code.
  • Language and time zone: signers, emails and audit trail in English (locale: en), time zone Europe/Paris.
  • Delivery: delivery_mode: email, Yousign sends the invitations and reminders to the signatories.
  • Signature zones: only Tomorro fields of type signature are sent, initials are ignored. A signatory with no zone in Tomorro gets one at the bottom of the last page of the main document.
  • Webhook secrets: the Tomorro and Yousign webhook secrets are read from a Make data store.

Yousign Full Demo

Flow 1 - [Tomorro → Yousign] Signature is requested

1

Step 0 - Triggered by a user on Tomorro

Triggered when a user clicks “Send for signature” on a Tomorro contract set to the “Other signature tool” option (after the approval workflow if there is one).
2

Step 1 - Receive the signature.requested webhook

Make module 1Keep at least data.contractId, it is the key for every following call.
3

Step 1.1 - Verify the Leeway signature

Make modules 2, 3The secret is read from the Make data store, key tomorro_webhook_secret. Inputs: the raw body, the request headers and the secret.
4

Step 1.2 - Route the event

Make module 4Continue only when valid is true and test is not true. Route on eventType: signature.requested → this flow, signature.canceled → Flow 3.
5

Step 2 - Retrieve the files and signature information

Make module 5
6

Step 3 - Retrieve more contract information (optional)

Make module 6
7

Step 4 - Work in Yousign

8

Step 4.1 - Build the Yousign signature request

Make module 7Inputs: contractId, contractName and signatureNote from the webhook, firstSigningParty from step 2. external_id = contractId is the link used by Flows 2, 3 and 4.
9

Step 4.2 - Create the Yousign signature request

Make module 8
10

Step 4.3 - Download each file to sign

Make modules 9, 10Iterate over data.files from step 2, then download each downloadUrl (no auth header, valid 5 minutes).
11

Step 4.4 - Upload each document to Yousign

Make module 11
12

Step 4.5 - Map each Tomorro file to its Yousign document

Make module 12Aggregate one entry per file, joined with ,:
13

Step 4.6 - Build the Yousign signers

Make module 13Inputs: data from step 2 (files, signatories, firstSigningParty) and the mapping from step 4.5. Orders the signers, converts the Tomorro field positions into Yousign coordinates and cleans the names.
14

Step 4.7 - Add each signer to Yousign

Make modules 14, 15, 16Iterate over signers from step 4.6, one call per signer, in order:
15

Step 4.8 - Activate the signature request

Make module 17Yousign sends the invitations to the signatories.

Flow 2 - [Yousign → Tomorro] Signature is completed

1

Step 0 - Receive the Yousign webhook

Make module 1Subscribe this webhook in Yousign to signature_request.done, and to the events of Flow 4.
2

Step 0.1 - Verify the Yousign signature

Make modules 2, 3The secret is read from the Make data store, key yousign_webhook_secret. Inputs: the raw body, the request headers and the secret.
3

Step 0.2 - Route the event

Make module 4Continue only when valid is true. This flow takes event_name = signature_request.done with a data.signature_request.external_id (the Tomorro contractId). The other events go to Flow 4.
4

Step 0.3 - Download each signed document from Yousign

Make modules 5, 6Iterate over data.signature_request.documents, keep nature = signable_document:
5

Step 1 - Get an upload URL, one per PDF

Make module 7
6

Step 2 - Upload the PDF to data.url

Make module 8No auth header, raw bytes of the PDF downloaded in step 0.3.
7

Step 3 - Push the contract to Tomorro

8

Step 3.1 - Collect the uploaded files

Make module 9Aggregate one row per PDF, joined with a new line:
9

Step 3.2 - Build the signed-version body

Make module 10Inputs: the rows from step 3.1, data.signature_request.completed_at and event_time from the Yousign webhook.
10

Step 3.3 - Push the signed version

Make module 11
11

Step 3.4 - Accept 409 ContractAlreadySigned

Make module 12Inputs: status code and body of step 3.3 (the module runs with Evaluate all states as errors off).

Flow 3 - [Tomorro → Yousign] Signature canceled in Tomorro

1

Step 0 - A user cancels the signature on Tomorro

2

Step 1 - Receive the signature.canceled webhook

Make modules 1, 2, 3, 4Same webhook, same verification and same router as Flow 1 step 1. This route takes eventType = signature.canceled.
3

Step 2 - Cancel in Yousign

4

Step 2.1 - Find the Yousign signature request

Make module 18Look it up by external_id = contractId, among the requests still running:
5

Step 2.2 - Build the Yousign cancel body

Make module 19Input: data.cancelReason from the webhook.
6

Step 2.3 - Cancel each matching request

Make modules 20, 21Iterate over data from step 2.1:
Yousign then fires signature_request.canceled, which reaches Flow 4: its cancel-signatures call answers 400, accepted as expected.

Flow 4 - [Yousign → Tomorro] Signature canceled in Yousign

1

Step 0 - Receive the Yousign webhook

Make modules 1, 2, 3, 4Same webhook, same verification and same router as Flow 2 step 0. This route takes event_name in signature_request.declined, .rejected, .expired, .canceled, .deleted, .permanently_deleted, with a data.signature_request.external_id.
2

Step 1 - Cancel the signature in Tomorro

3

Step 1.1 - Build the cancel-signatures body

Make module 13Input: event_name from the Yousign webhook.
4

Step 1.2 - Cancel the signature

Make module 14
5

Step 1.3 - Accept 400

Make module 15Inputs: status code and body of step 1.2. A 400 means the contract is no longer in signing (echo of Flow 3, or already signed).
6

Step 2 - Ignore the echo webhook

Tomorro fires signature.canceled back, which reaches Flow 3. Step 2.1 there only searches the ongoing and approval requests, finds none, and the flow stops.