Agent setup guide
Lost Deal Win-Back
When a GoHighLevel opportunity is lost, drafts a respectful win-back message and, once approved, sends it and starts your nurture.
What it does
When a GoHighLevel opportunity is lost, drafts a respectful win-back message and, once approved, sends it and starts your nurture.
- Starts when an opportunity in the connected GoHighLevel sub-account is marked lost (or abandoned, if you switch the trigger), checked every few minutes.
- Waits 3 business days (adjustable), then reads the contact's record: tags, time zone, Do Not Disturb settings and custom fields.
- AI drafts a short win-back SMS or email matched to the recorded loss reason and your playbook; with no recorded reason it writes a neutral check-in.
- Uses SMS only with the consent you describe, no Do Not Disturb and during 8:00–21:00 local time; otherwise email. Skips do-not-contact, bad-fit and similar contacts.
- Every message waits in Reviews; once approved it's sent from GoHighLevel and the contact is enrolled in your nurture workflow.
What it needs
- A paid plan (agents run live on paid plans).
- An AI provider key (Settings → AI Providers).
- GoHighLevel (the client's sub-account), connected in Settings → Integrations.
- A published GoHighLevel nurture workflow, and loss reasons recorded on lost opportunities (the message is only as specific as that reason).
What it doesn't do
- It never sends without a person approving the message.
- It doesn't re-open the opportunity or change its status, and it can't tell if a deal was re-opened during the wait — the reviewer checks.
- It isn't instant: GoHighLevel is checked every few minutes (the 100 most recent opportunities each time).
- It doesn't invent loss reasons, incentives or prices; it skips opportunities whose contact has no email.
- It shows as “Coming soon” until the GoHighLevel connector is approved.
Availability and plans
Coming soon — waiting for GoHighLevel approval
The agent is built, but GoHighLevel is still waiting for the vendor's approval. It becomes available on its own once that app is live; until then it can't be bought or set up.
Included free on the Enterprise plan; on other paid plans it's a one-time purchase per workspace (the price is on the Agents page). The Agents page in the app always shows its current status.
Before you start
- A paid plan: agents run live, and the Free plan only runs Dry Runs.
- An AI provider key (OpenAI, Anthropic, Google and more) in Settings → AI Providers. AI usage is billed by your provider.
- These apps, connected in Settings → Integrations: GoHighLevel.
- The app it watches, connected in Settings → Integrations (the agent starts from an app event).
- About 15 minutes.
Set it up step by step
Get the agent first (buy it, or it's already yours when your plan includes it), then in Agents → My agents press “Set up this agent”. That creates the agent's workflow in your workspace (it counts towards your plan's workflow limit) and opens the canvas with a setup checklist above it. Each item links to the exact place to go and ticks itself off when it's done.
1. Connect your AI provider
The AI steps run on your own key (OpenAI, Anthropic, Google and more). Add one in Settings → AI Providers.
2. Connect GoHighLevel
Connect the client's GoHighLevel sub-account (Settings → Integrations → GoHighLevel). Agencies connect each sub-account separately.
3. Describe the win-back playbook
Open “Draft the win-back message” and replace the first placeholder with the offer, loss reasons, allowed incentive and sign-off.
| Setting | What to enter | In step |
|---|---|---|
| Offer, loss reasons and incentives | Replace the placeholder with the business name, what it sells, what its loss-reason ids mean, which incentive (if any) you allow in a win-back, who never gets one, and the sign-off. It starts as “[DESCRIBE THE BUSINESS, ITS OFFER, LOSS REASONS, ANY WIN-BACK INCENTIVE YOU ALLOW AND THE SIGN-OFF HERE]” until you replace it. | “Draft the win-back message” |
4. Say how SMS consent is recorded
In the same step, replace the SMS consent placeholder with the tag, custom field or form checkbox that proves consent to texts.
| Setting | What to enter | In step |
|---|---|---|
| How SMS consent is recorded | Replace the placeholder with the tag, custom field or form checkbox that proves a contact agreed to texts. Without it the agent uses email. It starts as “[DESCRIBE HOW THIS SUB-ACCOUNT RECORDS SMS CONSENT HERE (TAG, CUSTOM FIELD OR FORM CHECKBOX)]” until you replace it. | “Draft the win-back message” |
5. Pick the GoHighLevel sub-account and nurture workflow
Pick the same GoHighLevel connection in the trigger and the three GoHighLevel steps, then the nurture workflow in “Enrol in your nurture workflow”.
| Setting | What to enter | In step |
|---|---|---|
| GoHighLevel sub-account (trigger) | The sub-account whose lost opportunities start the agent. Pick your connected GoHighLevel account. | “Opportunity marked lost in GoHighLevel” |
| GoHighLevel sub-account (contact lookup) | The same sub-account, used to read the contact record. Pick your connected GoHighLevel account. | “Look up the contact” |
| GoHighLevel sub-account (sending) | The same sub-account, whose number or email settings send the message. Pick your connected GoHighLevel account. | “Send it from GoHighLevel” |
| GoHighLevel sub-account (nurture) | The same sub-account, used to enrol the contact in your workflow. Pick your connected GoHighLevel account. | “Enrol in your nurture workflow” |
| Nurture workflow | The published GoHighLevel workflow approved contacts are enrolled in (your long-term nurture sequence). | “Enrol in your nurture workflow” |
6. Test it with Dry Run
Press Dry Run: the agent runs on sample data with no messages sent and nothing written to your apps.
7. Switch the trigger on
Open the trigger, check “New status” (Lost) and click “Activate app trigger”. Opportunities lost from then on start the agent.
How it works
The agent is a normal workflow with 13 steps (1 AI step, with a person approving in Reviews). You can open, edit and monitor it like any other workflow.
- Opportunity marked lost in GoHighLevel — Starts on “Opportunity status changed” in GoHighLevel (an app event). Starts a run when an opportunity's status changes to lost (checks the 100 most recent opportunities every few minutes). Switch “New status” to Abandoned or Any status to cover more.
- Lost or abandoned, with an email? — Decision: picks the branch to follow. Only lost or abandoned opportunities continue; ones without a contact email are skipped (consent can't be checked without the contact record).
- Not a lost deal — Kept in the run history. Branch: Not lost. Won or re-opened opportunities are ignored; the run history keeps the event.
- Skipped — no contact email — Kept in the run history. Branch: No email. The opportunity's contact has no email, so the contact record can't be looked up; handle it by hand.
- Wait 3 business days — Waits 3 business days. Branch: Lost. Gives the lost decision a little breathing room before reaching out (change the wait on this step). The run resumes on its own.
- Look up the contact — GoHighLevel: Find a contact. Reads the contact's record from GoHighLevel: name, tags, time zone, Do Not Disturb settings and custom fields.
- Draft the win-back message — AI step (runs on your AI provider key). AI reads why the deal was lost (when it was recorded), picks a respectful angle from your playbook, chooses SMS or email by consent and writes the message — or skips contacts who shouldn't be contacted.
- Reach out or skip? — Decision: picks the branch to follow. Contacts who shouldn't be contacted (or have no allowed channel) are skipped; every other draft waits for approval.
- Skipped — Kept in the run history. Branch: Skip. No message and no nurture enrolment; the run history keeps the reason.
- Approve the win-back message — A person approves or rejects it in Reviews (the run waits). Branch: Reach out. The account owner checks the loss reason, channel and wording in Reviews, edits if needed and approves; rejecting sends nothing and doesn't enrol the contact.
- Send it from GoHighLevel — GoHighLevel: Send an SMS or email. Branch: Approved. Sends the approved SMS or email from the sub-account, so replies land in GoHighLevel Conversations.
- Enrol in your nurture workflow — GoHighLevel: Add a contact to a workflow. Adds the contact to the GoHighLevel workflow you pick (your long-term nurture sequence).
- Win-back sent — Kept in the run history. The run history keeps the message and the enrolment.
Test it with Dry Run
Press Dry Run in the canvas. The agent runs on the sample data stored on its trigger (the “Sample data for Dry Run” box), so you can check every step's output before anything is live. The sample has the same shape as a real event from the app.
Sample data fields
id, name, status, value, pipeline_id, stage_id, contact_id, contact_email, changed_at, opportunity.id, opportunity.name, opportunity.status, opportunity.monetaryValue, opportunity.source, opportunity.lostReasonId, opportunity.contact.
- Nothing is sent or written: app actions, emails and Slack posts are simulated, and AI steps don't call your AI provider.
- Approval steps use the Dry Run decision you pick in the step's settings (approved, rejected or timeout), so you can try each branch.
- Wait steps don't wait: they report how long they would wait and the run goes on.
Go live
- Open the trigger, check “New status” (Lost) and click “Activate app trigger”. Opportunities lost from then on start the agent.
- Activating the app trigger needs the trigger's connected account. The first check only remembers what's already there, so older items don't start runs; the same item never starts two runs.
- The setup checklist adds a “paid plan” item before activation: live runs need a paid plan (the Free plan only runs Dry Runs).
- When every checklist item is done and the trigger is on, the checklist says “Live — this agent is running”. Follow its runs in the workflow's History tab and in Analytics → Agents.
Questions
Abandoned opportunities too?
Open the trigger and set “New status” to Abandoned (or Any status — the agent ignores anything that isn't lost or abandoned). Set up a second copy to cover both separately.
Can I change the waiting time?
Yes, on the “Wait 3 business days” step (up to 30 days). Dry Run doesn't wait.
Where does the loss reason come from?
From what GoHighLevel has on the opportunity and contact (lost reason, custom fields, tags). If nothing is recorded, the agent writes a neutral check-in instead of guessing.
Troubleshooting
- “No AI provider connected” or a rejected key: connect or fix the key in Settings → AI Providers, then press Test there.
- A checklist item stays unticked: the setting is still empty or still contains its placeholder text. Open the step from the checklist and fill it in.
- An app step fails with “Needs reconnect”: the account's access was revoked or expired. Reconnect it in Settings → Integrations.
- No runs start: activate the app trigger with a connected account. Only items created after activation start runs.
- A run shows as paused: it's waiting for someone in Reviews to approve or reject it.
- A run shows “Waiting until …” in History: that's a Wait step; it continues on its own (it can be cancelled through the API).
- A step failed: open the run in History and check that step in the Trace tab for the error and what it received.
Generated from the agent's own workflow, so it always matches what the agent does. Last updated .