Pluspoint — AI local marketing platform

Importing contacts

Updated August 24, 2026

Import a CSV to load an existing customer list into Pluspoint, or to update details in bulk from a system that already holds them. The import matches every row against your existing contacts and shows you exactly what will change before anything is written. Rows that match nothing become new records.

Before you start

  • You need full Contacts access. With restricted access the Import button is not shown — see Users and permissions.
  • Import is only available on desktop. It is hidden on screens 768 pixels wide or narrower.
  • You must choose at least one location during the import, so create your locations first — see Managing locations.
  • The file must be a real CSV. Save any spreadsheet as CSV before uploading.

Where to find it

ContactsImport, or go to https://app.pluspoint.io/contacts and select Import.

The dialog carries a Download a sample CSV. link to a template at https://docs.google.com/spreadsheets/d/1elW5JQyXmByeMzRHhhsSuX3PXL42HyxGhNytbWXfVsI/.

Prepare the CSV

The file needs a header row, comma separators, and headers spelled exactly as below. Fields containing commas can be quoted, with any quote inside a quoted field doubled.

Column headerMaps to
First NameFirst name
Last NameLast name
Mobile NumberPhone number
EmailEmail address
FacebookFacebook handle, without the facebook.com/ prefix
InstagramInstagram handle, without the instagram.com/ prefix
External IDExternal ID — your own system’s identifier for this customer

Rules the parser applies to the file itself:

  • Columns it does not recognise are ignored, so you can leave extra data in the file.
  • A row with a different number of columns from the header row is dropped without warning. Watch for stray commas in unquoted values.
  • The file picker offers .xlsx and .xls as well as .csv, but only plain CSV text is parsed. Uploading a real Excel workbook fails with Incorrect file format.

Note A contacts export writes the external-ID column as External Id, while the import expects External ID. If you are editing an export and loading it back in, rename that header first. Otherwise every external ID in the file is silently ignored.

Run the import

  1. Select Import.
  2. Choose one or more Locations. Everyone the import touches is assigned to the locations you pick here.
  3. Select Upload CSV file and choose your file.
  4. Select Validate.
  5. Review the table of parsed rows. Values that failed validation are shown in red.
  6. Remove any row you do not want with the bin icon. Import stays disabled while a single invalid row remains. Delete those rows, or select Back, fix the file and upload it again.
  7. Select Import.

How rows are validated

The dialog quietly cleans the file before it shows you anything, so the table can list fewer rows than your spreadsheet.

RuleEffect
A row with neither a phone number nor an emailDropped silently
Two rows with the same phone numberOnly the first is kept. Rows with no phone number are all kept
A phone number that starts with neither + nor 0A + is added before it is validated
A phone number starting with 0 on a Ukraine-locale accountBecomes +38 followed by the number
A phone number starting with 0 on a United Kingdom-locale accountBecomes +44 followed by the number without its leading zero
Any phone number after thatValidated as an international number and rewritten in E.164 format. An invalid one blocks the row, even if its email is fine
An emailValidated by format. An empty cell is acceptable, but a malformed address blocks the row
A row the dialog pairs with an existing contact but that changes nothingRemoved from the import entirely

That last rule has a consequence worth planning around. Those rows are never sent, so the locations you chose in step 2 are not applied to them. To add a location to contacts whose details are already correct, select them on the Contacts page and use bulk Edit instead — see Managing contacts.

What the import changes

A row is treated as an existing contact when any one of these matches a contact in your account:

  • a non-empty External ID that is equal,
  • a phone number that is equal after cleaning,
  • or an email address that is equal.

The preview table is stricter than that. It pairs a row with an existing contact in only two cases: equal phone numbers, or equal email addresses when neither the row nor the contact has a phone number. So a row the import will match on external ID — or on email while the two phone numbers differ — is shown and counted as new. It is imported without the back-fill described below.

For a matching contactFor a new contact
First name, last name, email, phone number, Instagram and Facebook are overwritten with the imported values, blank cells included. For a row the preview paired, the dialog back-fills the blanks from the existing record first, so nothing is lost. For a row it did not pair, a blank cell overwrites the stored valueCreated with everything the row supplies
An existing External ID is kept. The file never overwrites one that is already setThe External ID from the file is stored
The locations you chose are added. Existing locations are never removedAssigned to the locations you chose
Existing segments are left untouchedCreated with no segments
No new Contact created activityA Contact created entry is written to the timeline

Two things an import deliberately does not do:

  • It cannot assign segments. There is no segment column, and segments already on a contact survive the import untouched. Assign segments afterwards with bulk Edit — see Segments.
  • It cannot remove anything. Locations are only ever added, and no contact is deleted or unsubscribed by an import.

Size and repeat imports

Keep individual files to a manageable size, and split a very large list across several imports rather than sending one enormous file.

Re-importing the same file is safe. The second run matches every row to the contact it created, finds nothing changed, and removes the rows from the import. That is also why a re-import does not re-apply the location you picked.

Troubleshooting

SymptomCauseFix
No Import buttonYou have restricted Contacts access, or you are on a screen 768 pixels wide or narrowerAsk for full access, or use a desktop browser
Incorrect file formatThe file is an Excel workbook or is not comma-separated textSave it as CSV and upload again
Fewer rows in the table than in the fileRows with neither phone nor email, duplicate phone numbers, malformed rows and unchanged matches are all removed before the table is drawnCheck those cases in the source file
A phone number shows in redIt is not a valid international number after cleaningWrite it in full international form, starting with + and the country code
External IDs did not come throughThe header reads External Id rather than External ID, or the contacts already had an external IDRename the header; existing external IDs are never overwritten
The locations you chose were not applied to some contactsThose rows matched an existing contact and changed nothing, so they were droppedAssign the location with bulk Edit on the Contacts page
Imported contacts have no segmentsImport cannot set segmentsSelect them on the Contacts page and use bulk Edit
Couldn’t importThe batch failed as a wholeNothing was written. Check the file for very large size or malformed rows and try again
Book your Pluspoint demo