Open most GoHighLevel accounts and you will find a pipeline that looks busy and tells you nothing. Forty opportunities in “New”, a stage called “Follow-up 3”, and a Won column that was last updated in March. The GoHighLevel pipeline was set up as a to-do list, not as a picture of how the business sells — and so nobody looks at it.
A pipeline that works has one property: every stage answers the question “what happens next, and who does it?”. This article is about designing stages that way, understanding what an opportunity actually is, and connecting the pipeline to the workflows that move cards without anyone dragging them. It builds on the CRM setup guide, where the pipeline is step three of eight.
Contacts, opportunities and why the distinction matters
A contact is a person: name, phone, email, tags, custom fields, conversation history. An opportunity is a potential deal with that person: it lives in exactly one stage of exactly one pipeline, has a monetary value, a status (open, won, lost, abandoned) and an owner. The same contact can have several opportunities over the years — the first job, a repeat job, an upsell — and the history of each stays intact.
The practical consequence: forms and integrations must create an opportunity, not just a contact. A contact with no opportunity is invisible to the pipeline, and therefore to the follow-up that reads the pipeline. This is the single most common reason leads “disappear” in accounts I audit.
Designing stages that mean something
Write down what actually happens between a new enquiry and money in the bank. Then turn each real hand-off into a stage. Two tests for every stage:
- Is it a state, or an action? “Call booked” is a state. “Send follow-up email” is an action — it belongs in a workflow, not a stage.
- Does something different happen when a card enters it? If two stages trigger the same behaviour, merge them.
For most service businesses that gives five or six stages:
| Stage | Enters when… | What happens next | Who |
|---|---|---|---|
| New lead | Form, call, chat or ad creates the opportunity | Instant reply; human contact within the hour | Automation → owner |
| Contacted | First outreach sent | Wait for reply; nudge at day 2 and 5 | Automation |
| Call booked | Appointment confirmed | Reminders; prep notes | Automation → salesperson |
| Proposal sent | Quote or plan delivered | Follow-up at day 2, 7; task at day 14 | Automation → salesperson |
| Won | Payment or signed agreement | Onboarding; tag customer; stop sales messages | Automation → delivery team |
| Lost | Declined, no response after sequence, not a fit | Record reason; reactivation in 90 days | Salesperson → automation |
Notice that “Follow-up 1/2/3” does not appear. Follow-ups are messages sent while a card sits in “Contacted” or “Proposal sent”; the workflows article shows exactly how those sequences are built and, critically, how they stop when the card moves.
Setting it up in GoHighLevel
- Opportunities → Pipelines → Create. Name it after the process (“Sales”), not the team. Add the stages in order. Keep names short; they show on mobile cards.
- Turn on stage visibility in the funnel/pie charts for the stages you want in reporting (usually all except Lost).
- Set a default owner rule. Under Settings → Team, decide whether new opportunities are round-robined or assigned to one person. Unowned cards are ignored cards.
- Create the custom field “Lost reason” (dropdown: price, timing, went elsewhere, not a fit, no response). You will thank yourself in six months.
- Build the entry workflows. Every form, calendar and integration gets a workflow that creates the opportunity in “New lead” with a source tag. Details in the setup guide.
- Build the stage-change workflows. Appointment booked → “Call booked”. Invoice paid → “Won”. Tag “not-a-fit” → “Lost”. Each fires from the event, not from a human remembering.
Automations that move cards
The pipeline is only trustworthy if the obvious moves happen automatically. These are the triggers I wire on every account:
- Appointment status = confirmed → move to Call booked. Cancelled → back to Contacted with a task.
- Appointment status = no-show → stay in Call booked, start the recovery sequence, task after 3 days.
- Payment received / invoice paid → Won, tag
customer, remove from all sales workflows. - Opportunity stale for 14 days in Contacted with no reply → Lost with reason “no response”, then the 90-day reactivation.
- Reply received while in Lost → reopen in Contacted and notify the owner. People come back.
What stays manual: moving to “Proposal sent” (a human decides the quote is ready) and marking Lost with a reason other than “no response”. Those are judgement calls, and the pipeline should record them as such.
Values, and why you should fill them in
Every opportunity has a monetary value. Estimate it at creation — the average job value is fine — and correct it at proposal stage. Two reasons: the pipeline header then shows real money at each stage, which makes the whole team look at it; and the reporting on which sources produce high-value deals becomes possible. Leave values blank and the pipeline is a list of names.
Multiple pipelines: when, and when not
Create a second pipeline when the process is genuinely different: a different set of stages, a different team, a different kind of outcome. Sales and recruitment. New customers and warranty claims. A clinic’s consultations and its membership renewals.
Do not create a pipeline per salesperson, per location with an identical process, or per lead source. Use the owner field, a location custom field and the source tag respectively, and filter the one pipeline. Ten pipelines with the same stages is the most common mess I clean up, and merging them later is painful because history has to be moved.
The two reports that tell you where deals die
- Stage conversion. Of 100 opportunities that entered New lead this quarter, how many reached Contacted, Call booked, Proposal sent, Won? The biggest drop between two stages is your problem to fix. Usually it is New → Contacted (speed) or Proposal → Won (follow-up).
- Won by source. Which tags produced the deals that closed? This is the report that decides your ad budget, and it only exists if the entry workflows tag sources consistently — see the conversion tracking guide for the website side of the same question.
Both are available in the built-in reporting once values, sources and stage moves are recorded properly. Neither is useful if cards are dragged inconsistently, which is the argument for automating the moves.
A weekly habit that keeps the pipeline honest Ten minutes every Monday: filter to opportunities untouched for seven days, and either move them, message them or mark them Lost. A pipeline with stale cards teaches the team to ignore it.
Common pipeline mistakes
- Stages named after actions (“Send quote”) instead of states (“Proposal sent”).
- Forms that create contacts but not opportunities.
- No exit from sales workflows when a card reaches Won — customers keep getting “just checking in”.
- Deleting Lost opportunities, which erases the reactivation list and the lost-reason data.
- One pipeline per person. Filter instead.
- No values, so the pipeline shows counts instead of money and nobody cares.
Further reading: GoHighLevel Help Center.
FAQ
What is the difference between a contact and an opportunity in GoHighLevel?
A contact is a person. An opportunity is a potential deal with that person, sitting in one stage of one pipeline with a value and a status. One contact can have several opportunities over time, for example a first job and a repeat job.
How many pipelines should I have?
One per genuinely different sales process. A clinic selling treatments and the same clinic hiring staff need two. Two salespeople selling the same service need one pipeline, not one each.
Can GoHighLevel move opportunities between stages automatically?
Yes. Workflows can create opportunities and change their stage when a form is submitted, an appointment is booked, a tag is added or a payment is received. Manual dragging is for the human judgement steps only.
Should lost opportunities be deleted?
No. Mark them Lost with a reason. Lost opportunities are where your best reactivation campaigns and your most honest pricing insights come from.
If your pipeline has become a list nobody trusts, I can redesign it around your real process and wire the automations in a day — book a call and bring a screenshot of the current one.