Library·SOP·Operations

Prepare and import contacts into 6am

Prepare a clean CSV, review matches and import contacts into the correct 6am workspace.

Last reviewed: · Editorial review

Clarity, structure and references reviewed in this version. This is not a test in a live account.

SOP 082 · 6am Contacts
SOPFree

Prepare and import contacts into 6am

SOP 082 · 6am Contacts

Prepare a reviewed CSV and import contacts directly into the correct company workspace in 6am. The original list stays intact, and no contact is written before you confirm the preview.

Scope and limits

This procedure covers preparation, column mapping, preview, creation and updates in 6am → Contacts → Import contacts. It does not configure GoHighLevel, send messages, subscribe contacts to campaigns, merge contacts, infer marketing consent or provide automatic rollback. For individual corrections use Edit in Contacts. For a confirmed duplicate use SOP 081 — Review duplicates in 6am. Importing itself never merges records.

Use CSV in UTF-8, with comma or semicolon separators, up to 2 MB and 500 contact rows per file. XLSX files must first be exported to CSV. Split larger lists into numbered batches and retain a private control sheet to reconcile the totals. Previews expire after 24 hours; completed imports retain the row results, without the uploaded contact payload.

01. Confirm the destination and preserve the source

  1. Sign in to the 6am dashboard. Select the company that should own the contacts. Open Contacts → Import contacts and check the Workspace name shown above the form. Stop if it is the wrong company.
  2. If Contacts is unavailable, ask a workspace administrator to grant contact management access. Access to another company or the general admin panel is not permission to import into this workspace.
  3. Keep the original file unchanged. Create a private working copy, record its source and date, and confirm with its owner which contacts are appropriate to import. Do not paste contact data into a publicly shared template.
  4. Click Download CSV template inside 6am. The file has only a header, with no sample contacts to remove. Open it in Sheets or Excel. Format Phone and Contact ID as text before pasting so the spreadsheet does not remove +, change identifiers or apply scientific notation.

02. Prepare the supported fields

Keep one person per row. Use the following seven headers; the mapping screen can also associate differently named source columns.

CSV header6am fieldPreparation rule
First NameFirst nameOptional; up to 255 characters. Do not invent a name.
Last NameLast nameOptional; up to 255 characters. Keep it separate from first name.
EmailEmailValid address, up to 254 characters. 6am trims spaces and normalizes case.
PhonePhoneInternational format with + and country code, containing 8–15 digits. Spaces, parentheses, dots and hyphens are removed. Country codes are never guessed.
Company NameCompanyOptional; up to 255 characters. This describes the contact's company, not the destination workspace.
NotesNotesOptional; up to 2,000 characters. A filled cell replaces existing notes; a blank cell preserves them.
Contact ID6am Contact IDOptional UUID copied from an existing contact's details in this workspace. Leave empty for new contacts. An ID exported from GHL is not a 6am ID.
  1. New contacts need a verified email or international phone. An update may use a known 6am Contact ID without repeating those fields. Never import a name-only row.
  2. For updates, open the existing contact in Contacts and copy its 6am Contact ID when possible. If both email and phone have changed, use that ID; otherwise an unmatched row without an ID can become a new contact.
  3. Check repeated emails, phones and IDs across the whole source list, including other batches. Within a file, all rows sharing any identifier are rejected, even if their names differ. Resolve the source before importing; do not arbitrarily keep the first row.
  4. Hold uncertain or conflicting rows in a separate private sheet. Do not include them in the CSV. Shared family phone numbers or shared inboxes require a source-owner decision because each email and phone must be unique within a 6am workspace.
  5. Keep only reviewed columns and rows. Export the current sheet as CSV UTF-8. Preserve quoted notes containing commas or line breaks; let the spreadsheet handle CSV escaping. Do not manually concatenate columns.

Prepare custom contact fields

Before exporting, open Custom fields in the same workspace and confirm that the required definitions are active and belong to Contact, following SOP 004. The import does not create definitions or choices. Opportunity fields are not available in this contact import.

Download a fresh CSV template: it contains the seven native headers plus all active contact fields as custom:key. Keep those stable headers to get automatic mapping; a display name is not a stable key. Review the name, key, group, type and available options on the mapping screen. A differently named source column can be mapped manually. Each source column may be used once across native and custom fields. Files accept up to 57 columns (seven native plus 50 custom fields), while the 500-row and 2 MB limits remain unchanged.

TypeAccepted CSV value
TextPlain text, at most 500 characters.
Long textPlain text, at most 5,000 characters. Let the spreadsheet quote commas and line breaks.
NumberDecimal point, no thousands separator or currency symbol, from -999999999999 to 999999999999. Example: 12500.50. 0 is a value.
DateA real date in YYYY-MM-DD, for example 2026-11-01.
Yes/Notrue/false or 1/0; yes/no and sim/não/nao are also accepted, case-insensitively. False is a value.
Single selectionOne registered option, with exact spelling and case. Numeric-looking choices such as 0 remain text.
Multiple selectionA JSON list of distinct registered text options, such as ["SEO","CRM"], at most 30 items. Enter this into one spreadsheet cell and let the CSV exporter escape quotes. Do not use a comma-separated string without JSON brackets and quotes.

Blank cells, unmapped fields and the empty list [] preserve existing values. A nonempty multiple selection replaces the previous list. To deliberately clear a custom field, use the contact's Custom fields action and review that change separately. Archived values are preserved. Custom fields never replace email, international phone or native Contact ID for matching. Multiple rows that resolve the same existing contact through different identifiers are also rejected; keep one reviewed row per person.

03. Upload and map the columns

  1. On Import contacts, select the CSV under 1. Choose your CSV. File validation checks size, encoding, row limits, headers and CSV structure. A malformed file must be corrected before a preview can be created.
  2. Under 2. Match your columns, review each of the seven 6am fields. Recognized English and Portuguese headers are suggested automatically. Choose the correct source column or Do not import. Each source column can be used only once; unused columns are ignored.
  3. Choose Create new contacts only for a first import when existing records must remain untouched. Rows matching an existing email, phone or native ID will be rejected in this mode.
  4. Choose Create new and update matching contacts only when updates are intended. Exact normalized email, phone or native ID can identify a contact. Different identifiers pointing to different existing contacts cause rejection, never a silent merge. A supplied native ID that is missing from this workspace is also rejected; it does not fall back to creation.
  5. Choose Update existing contacts only when the entire batch is for corrections. Unmatched rows are rejected and never create contacts. Review every matched identity.
  6. Remember: blank or unmapped fields never erase existing data. Filled fields replace existing values, including the entire Notes field. To clear a field, use Edit in Contacts, review the whole form and retain at least one valid email or international phone.
  7. Click Review import. Uploading and generating a preview do not create or update contacts.

04. Review a small pilot before confirming the full list

  1. For the first list from a new source, prepare a small pilot with a few reviewed contacts. Include a known existing contact only if an update is intended. Confirm the company again.
  2. Review the counts for Create, Update, Unchanged and Rejected. They must add up to the number of non-empty contact rows in the CSV. Blank rows are ignored. An unchanged row already matches the submitted values.
  3. Read every preview page, including old and new values for updates. The table shows 25 rows per page. Confirm email, international phone, company and notes against the source. Never treat a successful validation as proof that the data belongs to the right person.
  4. Download the row report. Its row number refers to the CSV record, counting the header as row 1; a quoted multiline note is still one record. The report includes the result and reason, without contact details.
  5. If anything is wrong, choose Prepare another preview, correct the source and upload again. If contacts changed after the preview was created, confirmation is blocked and a new preview is required. If the preview expires, generate a new one.
  6. Click Confirm eligible rows only after checking the destination and changes. Confirm the prompt. Rejected rows are skipped; only eligible rows are processed. Repeating confirmation of the same preview does not import it twice.

05. Reconcile the result and resolve exceptions

  1. Wait for Import completed, then open View contacts. Search the pilot contacts and verify their saved details. Proceed with the remaining reviewed batches only after the pilot is correct.
  2. Save each completed row report in the private job folder and reconcile source rows against created, updated, unchanged and rejected totals. Your recent imports displays your last 10 completed imports for this workspace; its timestamps are in UTC.
  3. Correct rejected rows in the private source copy. Import only the corrected subset using the appropriate mode. Do not resubmit the entire list blindly: newly prepared previews match the current contact database.
  4. For a conflicting email/phone or unknown native ID, check existing contact details and resolve the identity with the source owner. Never replace an ID simply to bypass an error. If an email or phone was retired by a merge, check Merge history and use the surviving contact’s current ID and identifiers; archived IDs do not redirect.
  5. If the wrong company or wrong values were confirmed, stop further batches and contact the workspace administrator with the import report and preserved source. This screen has no automatic undo. Do not try to repair an error with another unreviewed bulk import.

Pilot and verify custom values

  1. In Custom contact fields, review each association and its type instructions. Leave fields you do not intend to change as Do not import.
  2. Use a small approved pilot covering a new contact, an existing contact and each mapped type. Include blank, zero and false where meaningful. Preserve the current values privately before updating.
  3. Read every before → after custom change in the preview. An invalid custom value rejects the entire row, including its native fields. Correct the source; do not remove the mapping just to bypass a rejection. The row report identifies the stable custom:key and reason without retaining the submitted values.
  4. Confirm eligible rows, locate the pilot contacts and reopen Custom fields. Compare saved values with the source, including blank preservation, zero, false and replacement of nonempty multiple-selection lists. Confirm that unrelated and archived fields remain intact.
  5. If a contact value or mapped field definition changes after preview, confirmation is blocked. Generate and review a new preview. An archived mapped field must be reviewed before remapping; do not silently substitute another field.

Acceptance checklist