Skip to content
Menu
DocuSignIntegrationby LC Bridge
Browse docs and guides
Documentation

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.

  1. 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
  2. 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
  3. 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.

What’s included

Every sub-account with the integration gets:

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

  1. The DocuSign Integration is installed and DocuSign is connected in the sub-account. Getting started covers this.
  2. Contracts are matched to contacts. The workflows act on the contact, so a contract still sitting in Unmatched is skipped.
  3. Contacts have an assigned user. Every internal alert goes to that person.
  4. The sub-account has a verified sending domain, so emails come from the business rather than a shared address.
  5. 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.

TriggerFires whenUsed in
Agreement SentA contract is first sent, whether from GoHighLevel or straight from DocuSignWorkflow 2
Envelope ViewedA signer opens the contractWorkflow 3
Envelope StalledA contract moves into one of the four stall typesWorkflow 4
Envelope DeclinedA signer declinesWorkflow 5
Envelope CompletedEvery signer has signedWorkflow 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

ActionWhat it does
Send Agreement from TemplateSends a contract from a DocuSign template to the workflow’s contact. Used in workflow 1.
Send ReminderSends 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 DocumentFiles the signed PDF on the contact record. Optional, in workflow 6.
Get Envelope StatusLooks up where a contract stands and changes nothing. None of the six workflows need it.

Stall types

Stall typeFlaggedValue to branch on
Sent, not opened24 hours after sendingsent_unopened
Viewed, not signed48 hours after it was openedviewed_unsigned
Expiring soon7 days before it expiresexpiring_soon
DeclinedThe moment a signer declinesdeclined

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

  1. Send Agreement from Template. Pick the template. Leave Subject empty to use the template’s own subject line.
  2. 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

  1. Find Contact on {{envelope_sent.contactId}}. If it’s empty, end.
  2. Wait 5 minutes, so DocuSign’s own email arrives first.
  3. 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

  1. Find Contact on {{envelope_viewed.contactId}}.
  2. If/Else: {{envelope_viewed.contactId}} is not empty. If it is empty, end.
  3. Send Internal Notification (email) to the assigned user, with DS internal · Opened, call now.
  4. Wait 30 minutes.
  5. 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

  1. Find Contact on {{envelope_stalled.contactId}}. If it’s empty, end.
  2. If/Else on {{envelope_stalled.stallBucket}}, with four branches:
    • sent_unopened: Send Email with DS · Can’t find it, wait 2 days, then Send SMS.
    • viewed_unsigned: Send Email with DS · Anything holding up, wait 2 days, then Send SMS.
    • expiring_soon: Send Email with DS · 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.
  3. Wait 3 days.
  4. Send Reminder. Leave Channel and the skip window empty; the default skips anyone reminded in the last day.
  5. Wait 2 days.
  6. 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

  1. Find Contact on {{envelope_declined.contactId}}. If it’s empty, skip to step 3.
  2. Remove from Workflow: workflows 2, 3 and 4.
  3. Send Internal Notification (email) to the assigned user, with DS internal · Declined. It includes the reason the signer typed, if they gave one.
  4. Send Internal Notification (SMS) to the assigned user.
  5. Wait 10 minutes, so the rep can call first.
  6. 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

  1. Find Contact on {{envelope_completed.contactId}}. If it’s empty, skip to step 5.
  2. Remove from Workflow: workflows 2, 3 and 4. This is the step that makes the whole set safe to leave running.
  3. Fetch Signed Document (optional), with Store to set to contact, if you want the PDF filed on the contact record.
  4. 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.
  5. Send Internal Notification (email) to the assigned user, with DS internal · Completed.
  6. 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}}.

FieldWhat it holdsWhere
emailSubjectThe contract’s name, as it appears in DocuSignEvery trigger
documentLinkThe signed PDFEnvelope Completed only
blockerRecipient.nameThe person the contract is waiting onEmpty on Envelope Completed; use {{contact.name}} there
stallReasonWhy it stalled, in wordsEnvelope Stalled
stallDaysDays stalled, as a bare numberEnvelope Stalled
nudgeCountReminders that reached the signerEnvelope Stalled
turnaroundDaysDays from sent to signedEnvelope Completed
blockerRecipient.declinedReasonWhat 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

  1. Workflows 4 and 6, together. Switch on 4 without 6 and people keep getting chased after they’ve signed.
  2. Workflow 2, whenever you like. It’s safe on its own.
  3. Workflows 3 and 5, once the team is ready to act on the alerts they send.
  4. 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:

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

Troubleshooting

SymptomWhat’s happening & how to fix it
A field shows as {{…}} in a sent emailThe 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 chasedWorkflow 6 is off, or its Remove from Workflow step doesn’t list workflows 2, 3 and 4.
A workflow never startsThe contract isn’t matched to a contact. Match it from Unmatched.
Nobody gets the alertsThe contact has no assigned user.
A text didn’t sendThe contact hasn’t agreed to texts, or the sub-account’s SMS number isn’t set up.
Send Agreement from Template failsThe 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.

Keep going

Analytics preferences

Optional analytics require your consent before any analytics requests are sent. Hosted forms have their own provider controls.