How to Duplicate a Contact in GoHighLevel

How to duplicate a contact in GoHighLevel when there's no copy button: the duplicate settings that block it, the API method, and a one-click option.

There are good reasons to copy a contact: the same business owner applies for a second business, a household needs two service records, or a rep wants a clean record for a new deal without retyping 30 fields. HighLevel doesn't have a copy button, so this guide shows how to duplicate a contact in GoHighLevel natively, the settings that quietly block it, and a faster option.

First, decide if you need a duplicate

Sometimes a second contact is the wrong tool:

Situation Better option
Same person, second deal A second opportunity on the same contact
Same person, new info Update the existing contact
Second business, same owner A duplicate contact, so each business has its own fields and files
Spouse or partner on the same account A new contact (not a copy), possibly linked by a field

If each record needs its own custom field values (business name, revenue, documents), a duplicate makes sense. If it's just another deal, use opportunities.

Check your duplicate settings

HighLevel blocks duplicates by default in many sub-accounts. As of October 2026, the setting lives here:

  1. In the sub-account, click Settings.
  2. On Business Profile, find the contact deduplication preferences panel.
  3. Allow Duplicate Contact controls whether a new record with a matching email or phone gets created or merged into the existing one.
  4. Find Existing Contacts Based On sets the primary match field (Email by default, or Phone), with an optional second preference.

Changes save automatically. HighLevel's help center notes this setting covers forms, Zapier and Facebook and Instagram Messenger. CSV imports always merge by phone or email, so you can't duplicate a contact by re-importing it.

If you don't want to allow duplicates sub-account wide, the alternative is to leave email and phone off the copy and add them separately.

How to duplicate a contact in GoHighLevel manually

  1. Open the original contact and keep it in one tab.
  2. Open Contacts in a second tab and click to add a new contact.
  3. Copy over the standard fields: name, business name, address, source and so on.
  4. Save, then open the new contact and fill in the custom fields, folder by folder.
  5. Set the contact owner and any tags you need.
  6. If a workflow should start for the new record, add it to the workflow or add the trigger tag.

This works, but it's tedious for records with many custom fields, and it's easy to miss one.

Duplicating a contact with the API

If you're comfortable with an API client, you can copy a contact in two calls with a token that has contacts.readonly and contacts.write:

  1. GET /contacts/{contactId} to read the original. The response includes standard fields and a customFields array of id and value pairs.
  2. POST /contacts/ with the locationId, the standard fields you want and the same customFields array.

Both use the base URL https://services.leadconnectorhq.com and the Version: 2021-07-28 header. If the sub-account blocks duplicates, the create call fails when email or phone matches, so drop those fields or change the setting first. Our Private Integration token guide covers getting a token.

Keeping duplicates easy to tell apart

Two contacts with the same name and phone number confuse reps fast. A few habits help:

What not to copy

Where the native way gets slow

Copying one record by hand is fine once. If your team does it daily, every copy means two tabs, dozens of fields and a good chance of missing something. The API version is quick but not something you hand to a rep, and the duplicate settings can make it fail without an obvious reason.

If you're cleaning up the reverse problem, actual unwanted duplicates, HighLevel has a separate manage-and-merge duplicates feature for that.

How Power-Ups handles it

Duplicate Contact is a Power-Up that adds a Duplicate contact button on the contact page, and a Duplicate selected button when you tick contacts in the Contacts list.

Power-Ups install with one loader line in Agency Settings Custom JS, and you choose which sub-accounts get each one. The same line can add sub-account Dark Mode and Contact Peek.

Questions

Is there a duplicate contact button in GoHighLevel?

As of October 2026 there is no native button that copies a contact. You create a new contact and re-enter the details, use the API, or add a button with a Custom JS add-on.

Why won't GoHighLevel let me create a contact with the same email?

The sub-account's Allow Duplicate Contact setting is off. It's in Settings, under Business Profile, in the contact deduplication preferences. With it off, a new record with a matching email or phone is merged instead of created.

Does importing a CSV create duplicate contacts?

No. HighLevel's help center says CSV imports always merge by phone or email, regardless of the Allow Duplicate Contact setting.

Features in this guide

Duplicate Contact

Duplicate a contact from its page or the list, choosing which fields come along.

Keep reading

Power-Ups

GoHighLevel Dark Mode for Sub-Accounts: Your Options in 2026

What GoHighLevel dark mode options exist for sub-account users, how agency Custom CSS and browser extensions compare, and a per-sub-account toggle option.

4 min read
Sub-Account Manager

How to Add Dropdown Options to GoHighLevel Custom Fields

How to add dropdown options to GoHighLevel custom fields, including checkbox and radio fields, what happens to old data, and how to add a long list at once.

4 min read
Sub-Account Manager

How to Bulk Create Custom Fields in GoHighLevel

How to bulk create custom fields in GoHighLevel with snapshots or the API, what to plan before you build, and a faster paste-a-list option for agencies.

5 min read
All 6 tools, all 34 features: $149/month

Every tool above plus everything we release next. $302/month bought separately. 7 days free, cancel any time.

Start the bundle free