GoHighLevel SMS Paused? What the New 12-Hour Pause Rules Mean
HighLevel now pauses bulk SMS for 12 hours instead of 24 to 48 for a selected group of sub-accounts, using a rolling 7 day window. Thresholds and fixes.
Learn moreSame contact, five cards in the pipeline? Here is why GoHighLevel creates duplicate opportunities, how to stop it, and how to clean up without losing real deals.
Short answer: GoHighLevel duplicate opportunities appear when a workflow, form, calendar or integration creates a new opportunity every time it fires instead of checking for one that already exists. The fix is to turn off duplicates in the Create or Update Opportunity action, put a tag check in front of it so repeat triggers update the existing card, and then delete the extras. Do the cleanup last, or the pile grows back.
A pipeline full of the same name five times is one of the most common messes we see when we open an account. It makes your pipeline value meaningless, it hides which lead is actually hot, and it makes follow-up tasks fire on cards nobody is watching. A thread on r/gohighlevel today, about pipelines full of duplicate opportunities, shows other people are fighting it right now. Below is how we find the cause and fix it.
It is almost never a bug in GoHighLevel. It is a workflow doing exactly what it was told, once per trigger, with nothing telling it that the contact already has a card. These are the causes we check, in the order we see them.
Most accounts we audit have more than one of these at once. Fixing only the first leaves the others quietly producing cards.
Before you change anything, find the source. Open one contact with duplicates and look at the timestamps on each opportunity. Cards created within seconds of each other point to two workflows reacting to the same trigger. Cards created days apart point to re-entry or a repeat form submission.
Then open the workflows that contain a create opportunity step and check the execution logs for that contact. You will see which workflow ran the step and when. If you cannot tell, put the workflow name in the opportunity source or name field of each create step for a week. The next duplicate will tell you who made it.
This is our version of a guard, built from tags and the action setting. It works on any workflow that creates opportunities, and you can add it in under an hour per workflow.
The tag gate catches the case where two workflows race each other. The action setting is the backstop when the tag was never added, for example on contacts that existed before you built the guard. Use both, because each covers the other's blind spot.
If you have several pipelines, use one tag per pipeline, such as opp-open-sales and opp-open-service. A single shared tag will block a legitimate second opportunity in a different pipeline. For a deeper pattern on stages that move themselves, see our guide to GoHighLevel pipeline automation.
Deleting first and fixing later is how people end up deleting the same cards twice. Put the guard in, wait a day or two to confirm no new duplicates arrive, and then clean up.
Be careful with opportunities that look like duplicates but are not. A customer with a roof repair and a gutter job has two real opportunities. If your business sells repeat or multi-part work, your guard should allow a second opportunity once the first is won or lost, which is why the tag removal step matters.
These three problems get lumped together and they have different fixes. Use this table to tell them apart before you start changing settings.
| Symptom | Likely cause | Where to fix it |
|---|---|---|
| One contact, several cards in the same pipeline | Create step runs on every trigger, duplicates allowed | The workflow's opportunity action and a tag gate |
| Same person appears as two contacts | Integration creates a new contact, or duplicate contacts are allowed | Contact duplicate settings and the integration's lookup step |
| Customer gets the same text twice | Two workflows or a re-entry loop | See why GoHighLevel sends duplicate text messages |
| Workflow says it ran fine but the message or card is wrong | Wrong branch, merge field or trigger filter | See why a workflow can say it worked and still send the wrong message |
Often the three travel together. A messy integration creates two contacts, each contact gets an opportunity, and each opportunity triggers a reminder. Fix the contact layer first if you see that pattern, because every layer above it multiplies the mess.
HighLevel adds workflow options regularly, and the duplicate handling on opportunity actions may change. When it does, keep the tag gate for any workflow that touches more than one pipeline, since it is also a readable signal for your team. Retire any custom lookup steps in outside tools only after you have tested the native behavior on a throwaway contact.
We would open the account and list every workflow that has a create opportunity step, because in most inherited accounts the duplicates come from two or three of them, not from all of them. Then we add the guard to those, watch for a few days, and clean up the pipeline in one pass with an export as the safety net. If the account also has dozens of workflows nobody can explain, that is a bigger job, and our GoHighLevel account audit (starting at $497) maps every workflow, tag and pipeline before anything is changed.
Because the workflow behind the form runs a create opportunity step on every submission, and duplicates are allowed unless you turn that off. A returning contact is treated as a new event. Add a check for an existing opportunity or tag before the step, or switch to the update behavior.
Not as a single click merge that we would rely on. The practical method is to keep the opportunity with the most history, copy any value or notes you need from the others, then delete the extras. Export the pipeline to CSV before deleting so nothing is lost.
No. Duplicate contacts are two records for one person, usually caused by different emails or phone formats from an integration. Duplicate opportunities are several cards on one contact. You can have either one without the other, and each has its own fix.
It should not, but test with a throwaway contact first. With duplicates off, a repeat trigger updates the existing opportunity instead of creating a new one, so check that your stage and value settings still do what you expect on an update.
HighLevel now pauses bulk SMS for 12 hours instead of 24 to 48 for a selected group of sub-accounts, using a rolling 7 day window. Thresholds and fixes.
Learn moreContacts getting the same text twice, texts from two different numbers, or a whole list blasted at once. The four causes and the fix for each.
Learn morePatients or customers getting reminders for the old appointment, the wrong day, or after they cancelled. What causes it and how to build reminders that cancel themselves.
Learn moreBook a 30-minute call. We look at the account live and tell you what is broken, what we would fix first and what it would cost.
No pitch deck. We look at your current setup and tell you what we would do and what it would cost.Need more than GoHighLevel? Yotomations, our parent company, also builds AI agents, custom software and websites.