> ## Documentation Index
> Fetch the complete documentation index at: https://cntillion.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Signatures, texts and waiting in workflows

> Send a DocuSign envelope from a workflow, text or email the signing link, wait for the signature on the call, and take an SSN by keypad without anyone hearing it.

A workflow can send a document for signature, deliver the signing link by text
or email, and wait on the call until the document is signed. It can also take a
value such as a Social Security number from the caller's keypad, so neither the
transcript nor the voice model ever holds it. Everything here is configuration
in your workspace: your DocuSign account, your message templates and your
workflow.

## What you need

* A DocuSign account. Developer (demo) accounts work for testing.
* For texts, an SMS number on your workspace, and for emails, an email channel.
  Centillion assigns SMS numbers; see [SMS](https://cntillion.com/docs/channels/sms.md).
* Owners and Members change these settings; see
  [workspace roles](https://cntillion.com/docs/workspaces/members.md).

## Connect DocuSign

Open **Integrations** and find **Signing and messages**. Choose
**Connect DocuSign**, pick the environment, then connect one of two ways:

* **Sign in with DocuSign** connects your account through Centillion's
  DocuSign app.
* **Your own integration key** uses DocuSign's JWT grant: enter the integration
  key, the user the workflow acts as, and the RSA private key, which is stored
  encrypted and never shown again. In DocuSign, grant that key consent for the
  user first.

![The Connect DocuSign dialog with the environment, a Sign in with DocuSign button, and the integration key, user ID, account ID and RSA private key fields.](https://mintcdn.com/centillion/43zHljt7GAJ5ZG9j/images/agents/signatures-and-texts-02-connect-docusign.webp?fit=max\&auto=format\&n=43zHljt7GAJ5ZG9j\&q=85\&s=2acc580ca97c68803b252786cf8b1f7b)

Connect DocuSign: sign in, or enter your own integration key.

Then add the **Connect HMAC key** from your DocuSign account's Connect settings,
with the Connect URL shown under the connection. DocuSign tells Centillion when
an envelope is viewed, signed or declined, and Centillion reads the envelope
back from your account before a workflow moves on.

## Write your message templates

Under **Signing and messages → Message templates**, choose **New template**.
Each template has a name, a language, the SMS text, and the email subject and
text. Every word is yours. Placeholders fill in at send time:

* `{link}`: the signing link, or any link the step passes.
* `{first_name}` or any workflow variable by its name. Sensitive variables never
  fill a message.
* `{opt_out}`: your opt-out line, set under **Opt-out lines** for SMS and email.
  Email adds an unsubscribe link after it.

An SMS template with no opt-out wording shows a warning. Carriers review how
your texts let people opt out, so add `{opt_out}` or your own words. A reply of
STOP always stops your texts, whatever the template says.

![The Signing and messages section with the e-signature connection, two message templates that use \{link} and \{opt\_out}, and the SMS and email opt-out lines.](https://mintcdn.com/centillion/43zHljt7GAJ5ZG9j/images/agents/signatures-and-texts-01-templates.webp?fit=max\&auto=format\&n=43zHljt7GAJ5ZG9j\&q=85\&s=e34e525f2097647ab3463535ebe4139d)

Signing and messages on the Integrations page: DocuSign, your templates and your opt-out lines.

## How a signing step usually runs

Most businesses already create their envelopes in their own system. The
workflow asks that system for the envelope, then takes it over:

1. A **Tool** step runs a webhook tool that calls your endpoint. Your endpoint
   creates the envelope in your DocuSign account, or finds the one it already
   sent, and answers with its envelope id. A response mapping stores it in a
   workflow variable, such as `envelope_id`.
2. A **Tool** step runs **E-signature · Prepare for signature** in adopt mode,
   with `envelope_id` mapped from that variable. It fills the fields from your
   workflow's variables and returns the signing link. Each field is
   **Required** unless you clear the box: a required field with no value stops
   the step and nothing is sent, while an optional one, such as an address's
   second line, is left blank.
3. A **Tool** step texts the link with **Messages · Send**, or signs on the
   customer's behalf with **E-signature · Sign on behalf**.
4. A **Wait for event** step waits for **Signed**.

If you keep a DocuSign template instead, **Prepare for signature** can create
the envelope from it.

## Add connector actions

Open **Tools**, choose **Add tool**, then **Connector action**. Pick the action,
then fill in what it needs:

| Action | What it does |
| - | - |
| Messages · Send | Sends a template by SMS or email, with an optional fallback channel. |
| E-signature · Prepare for signature | Takes the envelope an earlier step created, or creates one from a DocuSign template, and fills its fields from workflow variables. With our signing link it returns the link; with DocuSign's email, DocuSign invites the signer. |
| E-signature · Sign on behalf | Records the customer's consent on the envelope and sends the signing session to the person on your team who signs for them. |
| E-signature · Signing link | Returns a fresh signing link. |
| E-signature · Status | Reads the envelope's status from DocuSign. |
| E-signature · Void | Voids the envelope. |

![A connector action panel set to Messages · Send, with the SMS channel, the signing\_link template, and Sent to a customer.](https://mintcdn.com/centillion/EmDa1uUO99uZoezP/images/agents/signatures-and-texts-03-message-action.webp?fit=max\&auto=format\&n=EmDa1uUO99uZoezP\&q=85\&s=39a150f718350c37ac22feef371d6244)

A Messages · Send action: the channel, the template and who it goes to.

A workflow's **Tool** step runs the action. Under **Inputs**, give each input a
workflow variable or a value, or leave it to the model to fill from the
conversation. Two exceptions: the envelope a step adopts comes from a workflow
variable or a fixed value, never from the conversation, and an agent cannot
adopt an envelope on its own. When one Tool step runs two actions that take an
input of the same name, such as `to`, put them in separate Tool steps so each
gets its own value. A step that is retried sends nothing twice. A conversation that
comes back to the step later, through a loop in the workflow, sends again.

Before every text to a customer, Centillion checks that the number has not
opted out, is not on your do-not-call list, and, when the action asks for it,
has a consent on record. When a text may go out, such as quiet hours where the
customer lives, is yours to decide in the workflow. Before every email, it
checks that the address has not unsubscribed. A refused or undelivered text
tries the fallback channel. Messages to **your staff** go only to the number or
address set on the action, and skip the consent check, never an opt-out. The first text
a number sends to each customer carries the SMS notice your number was
registered with.

### The signing link

Messages carry Centillion's own short link, never DocuSign's. It opens a page
with an **Open the document** button; the click asks DocuSign for a fresh
signing session. So the link works for as long as you set, and a link preview
or a mail scanner neither uses it up nor counts as an open.

Each Prepare action chooses how the signer opens the documents:

* **Our signing link**: the action returns the link, and the signer opens the
  documents from it. DocuSign sends that signer no reminders and no expiration
  notices, so the workflow sends the link, and any reminder, itself.
* **DocuSign's email**: DocuSign invites the signer, with its own reminders and
  expiration notices, and the action returns no link. Signing on behalf needs
  our signing link, so it cannot use this choice.

### Signing on behalf

DocuSign does not let software sign a document. **Sign on behalf** records the
customer's verbal consent on the envelope (the time, your consent script's
version, and the conversation, step and try it was given in, as Centillion
recorded them), then texts or emails the customer's signing session to the
person you name, who signs for them. The link
never goes to the caller in this mode.

## Wait for an event

Add a **Wait for event** step after the step that sends the document or the
link. Connect one transition per event it waits for, such as **Signed** or
**Declined**, and one **Timeout** transition. While it waits, the conversation
goes on: the agent follows the step's **While waiting** text and answers
questions. On a call it says the **Check-in line** at the interval you set. In a
chat or a text conversation, an event that arrives after the customer has gone
quiet moves the conversation the next time they write. A call that ends while
it waits is over: the next call is a new conversation, which starts from the
beginning of the workflow.

Use the expand button in **While waiting** to edit the instructions in a larger
editor. Changes stay in the workflow draft until you save.

![The workflow builder with a Wait for event step selected after a consent step, its Signed and Timed out transitions, and the inspector showing the while waiting text, a 15 minute timeout, the check-in line and a 60 second check-in.](https://mintcdn.com/centillion/wROkqZPzQEdzO1F8/images/agents/signatures-and-texts-05-wait-for-event.webp?fit=max\&auto=format\&n=wROkqZPzQEdzO1F8\&q=85\&s=b26358e80fb7beab3a2084a84e405ecd)

A Wait for event step: what the agent does while it waits, the timeout and the check-in line.

The step counts events from the last **Tool** step action that starts
something to wait for (Messages · Send, Prepare for signature or Sign on
behalf), or from when the step began if none ran. Status, Signing link and
Void do not move that point. So news that arrives while the agent is still
talking is not missed, and each event moves the conversation once. Run the action a wait depends on from a
Tool step: an action the agent calls on its own during a conversation step is
not one a later wait counts from.

## Sensitive values and keypad entry

In the workflow's **Global settings**, list the **Sensitive variables**, such
as `ssn` or `date_of_birth`. They are the workflow's own variables, the ones an
**Update state** step, a tool's response or keypad entry writes; call and
contact details such as `contact.phone` cannot be listed. Their values are
stored encrypted and shown as `•••-••-1234` in transcripts, conversations, the
workflow's judge and the dashboard, and a message never carries them. Only an
action that needs the value, such as a concealed DocuSign field, reads it.

On a subagent step, turn on **Collect by keypad** to take a variable from the
caller's keypad: the fewest and most digits, the key that ends the entry, and
how long to wait after the last key. Ask for it in the step's goal ("type your
Social Security number, then press pound"). The digits go straight to the
workflow and never reach speech-to-text or the voice model. Keypad entry is for
calls; in chat, give the step another way on, such as an LLM condition.

![The workflow builder with an SSN by keypad step selected and Collect by keypad turned on: variable ssn, 9 to 9 digits, ending with pound, a 15 second pause.](https://mintcdn.com/centillion/wROkqZPzQEdzO1F8/images/agents/signatures-and-texts-04-keypad.webp?fit=max\&auto=format\&n=wROkqZPzQEdzO1F8\&q=85\&s=5de331e25e58f1640f992dc2cb2bbcf6)

A subagent step that collects the SSN by keypad.

## Healthcare and regulated data

DocuSign is your own vendor under your agreement with DocuSign. Texts go
through Centillion's Twilio account, so templates must carry no health
information: say that documents are ready and include the link. A value marked
sensitive is masked in any message before it is sent.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.