Library·SOP·Operations

Import and update contacts from a CSV in 6am

Choose the import mode, review matches and changes, run a small pilot, and reconcile saved contacts with the row report.

Last reviewed: · Editorial review

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

SOP 083 · 6am Contacts
SOPFree

Import and update contacts from a CSV in 6am

SOP 083 · 6am Contacts

Import a prepared CSV into the correct 6am workspace, review every proposed change, and verify the saved contacts before continuing with the full list.

01. Confirm the workspace and the intended changes

  1. Sign in to the 6am dashboard, select the company that should own the contacts, and open Contacts → Import contacts. Confirm the Workspace name above the form. If Contacts is unavailable, ask that workspace's administrator to check your access.
  2. Keep the original source unchanged. In a private working copy, classify rows as Create, Update or Hold, record the expected counts, and exclude Hold rows from the CSV. Confirm the purpose and permission to use the list with its owner. Importing does not establish marketing consent or send messages.
  3. For each intended update, open the existing contact's details in Contacts. Record its 6am Contact ID and the values you intend to change in the private working copy. The ID is a UUID belonging to this workspace; a GHL ID cannot replace it. If both email and phone are changing, use the existing 6am ID to identify the person.
  4. Prepare a small pilot containing the cases your actual list needs: a new contact, an intended update, and an update with a blank field that must preserve its saved value. Use reviewed contacts intended for this workspace. Record which rows belong to the pilot so they can be excluded from subsequent batches.

Current limits: UTF-8 CSV, comma or semicolon separators, up to 2 MB and 500 contact rows per file. Export XLSX to CSV first. This import screen does not offer contact export or automatic undo. Contacts provides Edit for individual corrections and Review duplicates for confirmed merges, as described in SOP 081. Preserve the original source and manually record affected values before updating; the row report is not a backup of contact details.

02. Upload the CSV and choose the mode

  1. Under 1. Choose your CSV, select the reviewed file. Fix encoding, header, separator or row-limit errors before proceeding.
  2. Under 2. Match your columns, verify each suggested association. Review the seven native fields: First name, Last name, Email, Phone, Company, Notes and 6am Contact ID. Select Do not import for fields you do not intend to change. Each source column can be mapped only once.
  3. Choose Import behavior according to the intended result:
Your intentAvailable modeWhat to check
Add new contacts without changing existing onesCreate new contacts onlyExisting matches are rejected. Confirm that every proposed creation is actually new.
Add new contacts and update existing onesCreate new and update matching contactsCheck each Create and Update row against the source plan.
Update existing contacts onlyUpdate existing contacts onlyUnmatched rows are rejected and never created. Verify each matched record and confirm Create = 0.

Matches use exact normalized email, international phone or the workspace's 6am Contact ID. Names alone do not identify contacts. Conflicting identifiers are rejected. A supplied unknown ID is rejected instead of creating a contact. Without an ID, an unmatched email or phone can create a new record in create-and-update mode.

Blank and unmapped fields preserve existing values automatically. There is no “skip empty values” checkbox to configure. A filled field replaces its saved value; filled Notes replaces the entire existing note. Importing a blank cell cannot clear a field. Use Edit in Contacts for that operation; clearing a field there removes its value.

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.

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.

03. Review every row before confirming

  1. Click Review import. Uploading and previewing do not save contacts.
  2. Under 3. Review before importing, reconcile Create + Update + Unchanged + Rejected with the number of non-empty contact rows in the CSV. Unchanged means the submitted values already match; it is not an error.
  3. Read every preview page, including previous and proposed values for updates. Each page shows 25 rows. Compare identifiers, names, company and notes with the source. For an update-only batch, verify Create = 0 and confirm each intended update matches the right record.
  4. Click Download row report. It contains row numbers, results and rejection reasons, not contact details. Row 1 is the header; a quoted multiline note still belongs to one CSV record. Retain the exact source CSV alongside its report.
  5. If a change is wrong, choose Prepare another preview, correct the CSV or mapping, and review again. Do not confirm a partially reviewed batch: confirmation processes all eligible rows, including those on other pages.

04. Confirm the pilot and check saved records

  1. Recheck the workspace and planned totals. Click Confirm eligible rows and accept the confirmation prompt only when every eligible change is intended. Rejected rows are skipped.
  2. Wait for Import completed, then open View contacts. Find each pilot contact by email or phone and inspect its details. Compare saved fields with the source, verify the intended existing ID for updates, and confirm blank fields preserved their prior values.
  3. If the pilot is correct, remove its successful rows from subsequent files and process the remaining reviewed batches. Stop if any saved value or identity differs from the plan. There is no automatic undo; give the workspace administrator the report and preserved values before attempting a correction.
  4. If the result of confirmation is uncertain, check Your recent imports and the saved contacts before creating another import. Reconfirming the same preview is idempotent; a new preview is a separate operation and must be reviewed against the current records.

05. Resolve exceptions and reconcile the list

Result or blockerNext action
Repeated email, phone or IDResolve every copy in the source. All rows sharing an identifier within the file are rejected.
Identifiers match different contactsConfirm the person's identity with the source owner. The import does not merge records.
Invalid or unknown 6am IDCopy the verified ID from that workspace's existing contact. Never remove an ID just to turn an intended update into a creation.
Contact already exists in create-only modeHold the row, or use create-and-update only after confirming that an update is intended.
No match in update-only modeCheck the current identifiers or native ID. A genuinely new person belongs in a separately reviewed create-only batch.
Email or phone retired by a mergeCheck Merge history and use the surviving contact’s current identifiers. Archived IDs do not redirect.
Invalid fieldCorrect the field according to SOP 082 and retry only the affected rows.
Expired preview or contacts changed since previewGenerate and review a new preview. Previews expire after 24 hours; stale previews are blocked at confirmation.
No eligible rowsCorrect the source before confirming; an entirely rejected file cannot be imported.

Download the completed report for each batch. Your recent imports shows your last 10 completed imports in the current workspace, with timestamps in UTC. Reconcile all input rows with created, updated, unchanged, rejected and separately held rows; do not count rejected or held rows as imported. Assign an owner and next action to each unresolved row. Retry only the corrected subset after checking its current matches.

Completion checklist

This is an editorial revision aligned with the current 6am interface. A successful preview does not verify ownership or accuracy of the source data; the pilot and saved-record checks remain part of each real import.