Browse docs and guides
Set up the contract workflows
Six workflows come with the DocuSign Integration, saved as drafts. This guide covers what starts each one, the steps inside, and the order to switch them on. For the plain-English tour of what they do, see the six workflows.
Last updated: September 15, 2026
The short version
Three things, in this order.
-
Admin · once
Check who the emails come from
On each Send Email step, the From name should be the assigned user and Reply-To their email, so replies reach a person.
about 5 minutes -
Admin · once
Test with a real contract
Send one to yourself and take it through opened, stalled and signed. The email preview can’t fill in contract fields.
about 15 minutes -
Admin · once
Switch on 2, 4 and 6
Workflow 4 follows up on quiet contracts and 6 stops it when they sign. Always switch those two on together.
three clicks
LCBridge is an independent third-party integration. DocuSign and LeadConnector are trademarks of their respective owners; LCBridge is not affiliated with or endorsed by them.
On this page
What’s included
Every sub-account with the integration gets:
- Six workflows in Automation › Workflows, all saved as drafts. Nothing sends until you publish one.
- Thirteen email templates in Marketing › Emails › Templates, each named with a
DS ·prefix. Eight go to customers; five are alerts for the assigned user. - Four text messages already written into the workflow steps: three to customers in workflow 4, and one alert to the assigned user in workflow 5.
Customer emails pull in the sub-account’s logo, business name, address and phone when they send, and the assigned user signs them. None of them mention DocuSign or LC Bridge, so there’s nothing to re-brand for each client.
Before you begin
- The DocuSign Integration is installed and DocuSign is connected in the sub-account. Getting started covers this.
- Contracts are matched to contacts. The workflows act on the contact, so a contract still sitting in Unmatched is skipped.
- Contacts have an assigned user. Every internal alert goes to that person.
- The sub-account has a verified sending domain, so emails come from the business rather than a shared address.
- If you’ll use the texts in workflow 4, the sub-account’s SMS number is registered and those contacts have agreed to receive texts. Every customer text ends with “Reply STOP to opt out”. Keep it.
Triggers
The integration adds five triggers to the GoHighLevel workflow builder. Look for these names when you add a trigger.
| Trigger | Fires when | Used in |
|---|---|---|
| Agreement Sent | A contract is first sent, whether from GoHighLevel or straight from DocuSign | Workflow 2 |
| Envelope Viewed | A signer opens the contract | Workflow 3 |
| Envelope Stalled | A contract moves into one of the four stall types | Workflow 4 |
| Envelope Declined | A signer declines | Workflow 5 |
| Envelope Completed | Every signer has signed | Workflow 6 |
Workflow 1 starts from GoHighLevel’s own Pipeline Stage Changed trigger instead.
Note
Envelope Stalled fires once each time a contract enters a stall type, not on a schedule. A contract that sits in the same stall for a week fires it once. That’s why the follow-ups in workflow 4 are Wait steps inside a single run.
Leave trigger filters empty. A filter that doesn’t match exactly fails silently, so branch inside the workflow instead.
Actions
| Action | What it does |
|---|---|
| Send Agreement from Template | Sends a contract from a DocuSign template to the workflow’s contact. Used in workflow 1. |
| Send Reminder | Sends DocuSign’s own reminder, the one with the signing link. Skips contracts that are already finished or were reminded in the last day. Used in workflow 4. |
| Fetch Signed Document | Files the signed PDF on the contact record. Optional, in workflow 6. |
| Get Envelope Status | Looks up where a contract stands and changes nothing. None of the six workflows need it. |
Stall types
| Stall type | Flagged | Value to branch on |
|---|---|---|
| Sent, not opened | 24 hours after sending | sent_unopened |
| Viewed, not signed | 48 hours after it was opened | viewed_unsigned |
| Expiring soon | 7 days before it expires | expiring_soon |
| Declined | The moment a signer declines | declined |
Tip
Branch on the stall bucket value in the right-hand column. The readable reason (“Viewed but not signed”) is for showing in an email, not for matching.
The six workflows
Numbered in the order a contract lives. Step names match the actions in the GoHighLevel workflow builder, and template names match what’s in Marketing › Emails.
1Send when the deal is ready
Trigger: Pipeline Stage Changed, set to your paperwork stage
- Send Agreement from Template. Pick the template. Leave Subject empty to use the template’s own subject line.
- Send Internal Notification (email) to the assigned user, with
DS internal · Agreement sent.
There’s no customer email in this one on purpose. Sending the contract fires Agreement Sent, which runs workflow 2.
Note
The contract goes to the workflow’s contact. If that contact has no email address, or a required template field is empty, the send stops with an error naming what’s missing.
2Make sure it lands
Trigger: Agreement SentSafe to run alone
- Find Contact on
{{envelope_sent.contactId}}. If it’s empty, end. - Wait 5 minutes, so DocuSign’s own email arrives first.
- Send Email with
DS · On its way. Subject:Your {{envelope_sent.emailSubject}} is on its way
Don’t add an internal alert here. This fires on every send, including the ones a rep just sent by hand.
3Catch them while it’s open
Trigger: Envelope Viewed
- Find Contact on
{{envelope_viewed.contactId}}. - If/Else:
{{envelope_viewed.contactId}}is not empty. If it is empty, end. - Send Internal Notification (email) to the assigned user, with
DS internal · Opened, call now. - Wait 30 minutes.
- Send Email with
DS · Anything to walk through.
If they sign during the wait, workflow 6 removes them before the email goes out.
4Chase what stalled
Trigger: Envelope StalledSwitch on with workflow 6
- Find Contact on
{{envelope_stalled.contactId}}. If it’s empty, end. - If/Else on
{{envelope_stalled.stallBucket}}, with four branches:sent_unopened: Send Email withDS · Can’t find it, wait 2 days, then Send SMS.viewed_unsigned: Send Email withDS · Anything holding up, wait 2 days, then Send SMS.expiring_soon: Send Email withDS · Running out of time, wait 2 days, then Send SMS.declined: end. Workflow 5 handles declines, and without this exit the customer gets two emails about one decline.
- Wait 3 days.
- Send Reminder. Leave Channel and the skip window empty; the default skips anyone reminded in the last day.
- Wait 2 days.
- Send Internal Notification (email) to the assigned user, with
DS internal · Stall escalation. The workflow ends here.
Don’t add a fourth message
Three automated touches, then a person. A fourth message teaches the customer that this sender can be ignored, which is the opposite of what you want on a contract.
5Save the declined deal
Trigger: Envelope Declined
- Find Contact on
{{envelope_declined.contactId}}. If it’s empty, skip to step 3. - Remove from Workflow: workflows 2, 3 and 4.
- Send Internal Notification (email) to the assigned user, with
DS internal · Declined. It includes the reason the signer typed, if they gave one. - Send Internal Notification (SMS) to the assigned user.
- Wait 10 minutes, so the rep can call first.
- Send Email with
DS · Let’s get it right.
Don’t add a step that re-sends the same contract. Nothing has changed yet, and sending an identical copy to someone who just said no rarely ends well.
6Close the loop when signed
Trigger: Envelope CompletedSwitch on with workflow 4
- Find Contact on
{{envelope_completed.contactId}}. If it’s empty, skip to step 5. - Remove from Workflow: workflows 2, 3 and 4. This is the step that makes the whole set safe to leave running.
- Fetch Signed Document (optional), with Store to set to
contact, if you want the PDF filed on the contact record. - Send Email with
DS · Signed, here’s your copy, attaching the file from{{envelope_completed.documentLink}}. The email links to it as well, because attachments over 20 MB are dropped. - Send Internal Notification (email) to the assigned user, with
DS internal · Completed. - Wait 3 days, then Send Email with
DS · Referral ask. Both steps ship switched off, because asking customers for referrals is your client’s call.
Merge fields
The integration’s fields use the trigger as a prefix, then the field name exactly as written, capitals included: {{envelope_completed.emailSubject}}. GoHighLevel’s own fields keep their usual format, like {{contact.first_name}}.
| Field | What it holds | Where |
|---|---|---|
emailSubject | The contract’s name, as it appears in DocuSign | Every trigger |
documentLink | The signed PDF | Envelope Completed only |
blockerRecipient.name | The person the contract is waiting on | Empty on Envelope Completed; use {{contact.name}} there |
stallReason | Why it stalled, in words | Envelope Stalled |
stallDays | Days stalled, as a bare number | Envelope Stalled |
nudgeCount | Reminders that reached the signer | Envelope Stalled |
turnaroundDays | Days from sent to signed | Envelope Completed |
blockerRecipient.declinedReason | What the signer typed when declining. Can be empty. | Envelope Declined, internal alerts only |
Tip
Before editing any template, insert one field from the builder’s merge-field picker and check the prefix matches. If it doesn’t, it’s a find-and-replace on the prefix, and nothing else changes.
Note
Numbers go in labelled rows, not sentences. GoHighLevel can’t pluralise, so “it’s been {{stallDays}} days” sends as “it’s been 1 days”. “Days stalled: 1” reads fine at any value.
Dates arrive in US Central time, like June 18, 2026 4:00 AM CDT, whatever the sub-account’s time zone, and GoHighLevel can’t convert them. That’s why no customer email names a date.
Don’t use opportunityValue or sender. They’re always 0 and empty.
Switch-on order
- Workflows 4 and 6, together. Switch on 4 without 6 and people keep getting chased after they’ve signed.
- Workflow 2, whenever you like. It’s safe on its own.
- Workflows 3 and 5, once the team is ready to act on the alerts they send.
- Workflow 1 last, after you’ve confirmed the pipeline stage and the template it sends.
Test before you switch on
The email preview can’t fill in contract fields, so it will look blank. Test with a real contract sent to yourself, and check that:
- every merge field shows a value, never a raw
{{…}} - the logo appears, and falls back to the business name when the sub-account has none
- buttons go somewhere, and a reply lands in the rep’s inbox
- the business address is in the footer
Three cases worth trying on purpose: a contract that isn’t matched to any contact, a decline with no reason typed, and a contract signed the same day it was sent.
You’re done when a test contract has walked through sent, opened and signed, each email and alert arrived, and the follow-ups stopped at the signature.
Known limitations
- Follow-ups stop per contact, not per contract. If a contact has two contracts out and signs one, the follow-up on the other stops too. It picks up again if that contract moves into a different stall type.
- An event can occasionally arrive twice, which can mean a duplicate email. Send Reminder guards against this. Fetch Signed Document doesn’t, and can file a second copy of the PDF.
- Workflow 2 can miss a contract if the first update we receive for it is already past “sent”. Workflow 4 still catches it if it stalls.
- No calendar dates in customer emails, for the reason in Merge fields.
Troubleshooting
| Symptom | What’s happening & how to fix it |
|---|---|
A field shows as {{…}} in a sent email | The prefix or field name doesn’t match. Check the prefix with the builder’s picker and copy the field name exactly, capitals included. If it still shows, email support@lcbridge.app. |
| A signed contract is still being chased | Workflow 6 is off, or its Remove from Workflow step doesn’t list workflows 2, 3 and 4. |
| A workflow never starts | The contract isn’t matched to a contact. Match it from Unmatched. |
| Nobody gets the alerts | The contact has no assigned user. |
| A text didn’t send | The contact hasn’t agreed to texts, or the sub-account’s SMS number isn’t set up. |
| Send Agreement from Template fails | The contact has no email address, or a required template field is empty. The error names which. |
Get help
If something isn’t behaving the way this guide describes, get in touch and we’ll help.
- Email support: support@lcbridge.app
- Getting started: connect DocuSign and send your first contract
- What each workflow does: the six workflows, with example emails