How do I remind a signer, or resend a lost link?
A signer says they never got the email, or lost it. You do not create a new signature request and you do not pay for one: resend the same request to that signer. The envelope, its documents, its fields and its signing order stay exactly as they were, and nothing is charged (the signature was billed when you sent the envelope).
Resend to one signer
Take the recipient's id from a GET on the envelope
(recipients[].id) and call:
curl -X POST https://your-host/api/v1/sign/envelopes/ENVELOPE_ID/recipients/RECIPIENT_ID/resend \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Idempotency-Key: resend-ENVELOPE_ID-RECIPIENT_ID-1"
The answer is the envelope, in the usual output.sign shape. The
signer gets the invitation again, in the envelope's language, with a subject that
says it is a resend; the console has the same button on the signer's row.
| What you should know | Detail |
|---|---|
| The link is a new one | The previous link stops working the moment the new one is issued. A signer who opens the old email is told the signing link is not valid; the new email is the one to use, so say so if you tell them by phone. There is never more than one live link per signer. |
| Why not the same email, byte for byte | We keep only a hash of each link, never the link: nobody, including us, can read back a link that was sent. So “send the same message again” is not possible without storing live credentials; a fresh link is what a resend is, and for the signer it reads as the same request. |
| Who can be resent to | Only a signer who can act now: the envelope must be sent or in_progress, and the signer must not have signed, declined or been skipped, and must be in the current group (in a signing order, a later signer has no link yet). Otherwise the call is refused with a stable code (ENVELOPE_NOT_EDITABLE, RECIPIENT_ALREADY_SIGNED, SIGNING_OUT_OF_TURN, RECIPIENT_NOT_REQUIRED). |
| Codes and reminders restart | A signer who was locked out by wrong codes gets a clean count, and the automatic reminder clock starts again. |
| Cost | No credit for the signature. An SMS code the signer asks for afterwards costs what an SMS costs. |
| Retries | Send an Idempotency-Key: the same key returns the first answer and does not mail the signer a second time. |
If the address was wrong, do not resend: replace the signer
(POST .../recipients/RECIPIENT_ID/replace) with the right one, which also revokes
the old link.
Automatic reminders
To nudge without anybody asking, set reminderFrequencyHours in
settings — above zero, whoever must currently sign gets a fresh
link every that many hours, counted from when they were told:
"settings": { "documentId": "...", "subject": "...", "reminderFrequencyHours": 48 }
For one reminder to everybody who still has to sign, right now, use the Remind button on the envelope in the console; it ignores the cadence and reissues each link, as a resend does. Either way the previous link dies when the new one is issued, and none of it is a second charge.
When the link has expired, or was revoked or replaced
The invitation and every reminder say the day, time and time zone the link stops working, in your organisation's locale. A link that stopped working before it was used opens a page that says why — the request expired, was revoked by the sender, or the signer was replaced — in the request's language; nothing can be done from it. When a request expires or is revoked, every signer who had been invited and had not finished also receives a message that says so.
While the request is still open, a resend (above) gives the signer a fresh link. Once it has
expired it cannot be reopened: send a new request. To give a request longer, set
expirationDate when you create it (at most a year), or change your organisation's
default expiry in Settings.