GoHighLevel Duplicate Opportunities: Settings, Causes and Fixes

GoHighLevel Duplicate Opportunities: Settings, Causes and Fixes

GoHighLevel duplicate opportunities usually come from three places. The global Allow Multiple Opportunities per Contact setting may be enabled, a workflow may be allowed to re-enter, or several automations may create an opportunity for the same event.

Okay, so what is actually happening in the account? Sales reps see several cards for the same person and no longer know which one to update. When we audit this, we trace the contact history back to every Create Opportunity action before changing pipeline settings.

Why duplicate opportunities appear
CONTACT Existing customer returnsA new enquiry reaches the same contact record.
PATH A Update the current opportunityUse this when the same sales conversation is continuing.
PATH B Create a new opportunityUse this only when it represents a genuinely new deal.
1

Define when a new opportunity is valid

2

Trace every create action

3

Add a find-or-update guard

Official sources: HighLevel Create Opportunity action

Related GHLFocus guides: Workflow troubleshooting · Workflow audit service

Do not turn off every duplicate option immediately. A returning customer may need a new opportunity. The goal is to block accidental duplicates while keeping legitimate repeat deals.

If duplicates appear during automation, start with the workflow diagnostic checklist. If they began after a data move, review the guides for importing contacts without duplicates and transferring a sub-account between agencies. Then test the post-booking workflow that creates or updates the opportunity.

First, decide what should count as a new opportunity

Write one rule for the pipeline. For example:

  • One opportunity per contact for a one-time onboarding pipeline.
  • One opportunity per project for a service business.
  • One opportunity per property for a real estate or roofing company.
  • One opportunity per sales cycle after the previous deal closes.

This decision determines whether multiple opportunities are a problem or a required feature.

GoHighLevel workflow builder with a Create or Update Opportunity step
HighLevel workflow builder with a Create or Update Opportunity step.

1. Check the global multiple-opportunity setting

Go to Settings > Objects > Opportunities and review Allow Multiple Opportunities per Contact. HighLevel’s multiple-opportunities guide explains that this global setting controls whether one contact can have more than one opportunity.

Turning it off does not automatically remove existing duplicates. It changes how future opportunity creation is handled.

2. Check the workflow’s opportunity settings

Open the workflow that creates or updates pipeline records. Review its settings and actions. HighLevel notes that newer workflows may allow multiple opportunities by default, while older workflows may use different defaults.

GoHighLevel workflow settings showing the multiple-opportunities control
HighLevel workflow settings: the multiple-opportunities control.

Use a deliberate setting rather than relying on whatever the workflow inherited when it was created.

3. Review every Create Opportunity action

Search the account for workflows that contain Create Opportunity. You may find one on the form workflow, another on the appointment workflow and a third in a snapshot.

GoHighLevel workflow action menu showing opportunity actions
HighLevel workflow action menu: opportunity actions.

HighLevel’s Create Opportunity documentation says duplicate checking is associated with the contact ID, not the opportunity name. Renaming the card does not create a reliable duplicate rule.

4. Check whether the trigger fires more than once

Common examples include:

GoHighLevel workflow trigger menu showing the Pipeline Stage Changed trigger
HighLevel workflow trigger menu: the Pipeline Stage Changed trigger.
  • A form and a Facebook Lead Ad both enter the same contact.
  • An appointment is rescheduled and triggers another creation step.
  • A tag is removed and added again.
  • A webhook retries after a slow response.
  • The contact re-enters the workflow.

Open execution history and compare the creation time of the duplicate cards with the contact’s workflow events.

5. Use Find Opportunity before updating

If your process should update an existing deal, find the relevant opportunity first and then update it. Do not use Create Opportunity as a substitute for finding the current record.

HighLevel’s Update Opportunity guide is important here: an update action changes an existing opportunity, but it does not create a new one simply because a duplicate option is enabled.

6. Handle closed opportunities intentionally

A contact with a won or lost opportunity may return later. Decide whether the workflow should reopen or update the old card, or create a new opportunity for the new sales cycle.

For repeat businesses, the cleanest rule is often:

  1. Search for an open opportunity in the target pipeline.
  2. If one exists, update it.
  3. If no open opportunity exists, create a new one.
  4. Store a source or project identifier for reporting.

7. Add an idempotency guard for external integrations

Zapier, Make and custom API integrations can retry. Store the external lead, order or appointment ID in a custom field and check it before creating another opportunity.

This is safer than relying only on email or phone matching when the same contact can submit more than once.

How to clean existing duplicates

  1. Export or record the affected opportunity IDs.
  2. Keep the card with the correct owner, stage, value and activity.
  3. Move useful notes or fields before removing an unwanted duplicate.
  4. Fix the workflow or integration that created the duplicates.
  5. Run one controlled test with a new contact.

Before you remove any opportunity cards, trace what created them and agree which record your team will keep. Preserve the useful notes and fields first, then review the specific duplicates you intend to remove.

Quick diagnosis

  • Duplicate at the same second: Two workflows or a retried integration may be creating it.
  • Duplicate after reschedule or reply: Re-entry or an event trigger may be creating it.
  • No new card for a returning customer: Multiple opportunities may be disabled or the workflow is updating the closed card.
  • Several opportunities are legitimate: Add a project, location or sales-cycle identifier so the team can tell them apart.

If you cannot see which automation owns the record, our GoHighLevel Workflow Audit and Repair service maps the opportunity triggers and creation actions before any changes are made.

For wider pipeline and automation cleanup, review our GoHighLevel services.

Frequently asked questions

Can one GoHighLevel contact have multiple opportunities?

Yes, when the global setting and workflow configuration allow it. This is useful for repeat purchases, projects or sales cycles.

Why did a closed opportunity stop a new one from being created?

The account may be set to keep one opportunity per contact, or the workflow may be finding and updating the previous card instead of creating a new sales cycle.

Does changing the opportunity name prevent duplicates?

No. HighLevel’s duplicate handling is tied to the contact and configuration, not only the visible opportunity name.

Will disabling multiple opportunities delete duplicates?

No. Existing cards remain. Fix the creation logic and review old records separately.

Should I merge duplicate contacts or opportunities?

They are different problems. Confirm whether you have one contact with several cards or several contact records before choosing a cleanup method.

Stop the pipeline from creating noise

We can identify which workflow or integration creates each opportunity and set a clear rule for new and repeat deals.

Book a Free Consultation

Or view our GoHighLevel Workflow Audit and Repair service.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *