Site built by Composite – Webflow Agency NYC & UX Design Agency NYC
← All documentation
Getting started

Uploading a Contact List Without Creating Duplicates

Turn a CSV into a matched, de-duplicated list that lands in Salesforce as a membership value.

5
min read

The Upload List wizard turns a CSV of people into something your team can act on. SignalRx matches every row against the records you already hold, removes duplicates, optionally fills in missing contact details, and hands the result back to Salesforce as a named list.

Why upload a list instead of importing it

A CSV from a conference, a webinar, or a partner is almost never clean, and importing it straight into Salesforce inherits whatever is wrong with it. Run it through SignalRx first and three things happen before anything is written.

  • Match. Every row is resolved to a real person and company by triangulating the company website and domain, LinkedIn and other social, and third-party data against the records you already hold, not a single lookup, then matched against the Leads, Contacts, and Accounts you already have. The company domain drives the web and social resolution.
  • De-duplicate. Matched rows attach to the existing record rather than creating a second one. Nothing is created for someone you already know.
  • Enrich. Rows missing an email address or a phone number can have one sourced from web and third-party sources, and validated, before the list syncs.

The list name is the payoff. Whatever you call the list is written into the GW list membership fields on every member's record, and that is the value your Flows, reports, list views, and marketing platform key on. Name it as if a colleague has to recognise it in a report six months from now.

Upload List, step 1: list name, upload kind, record creation, and enrichment options.
Upload List, step 1: list name, upload kind, record creation, and enrichment options.

01 · Setup

List name

Type the name first. The helper text under the field is not decorative: this name appears in Salesforce and can't be changed after upload. Use the same naming convention you use for Revenue Plays, since both land in the same field.

What kind of upload is this?

Picking the right one is the only real decision in the wizard.

Upload kindUse it whenWhat SignalRx does
New contactsPeople who may not be in Salesforce yet: an event scan list, a partner referral sheet.Matches them to existing records where it can, and treats the rest as new.
Already in SalesforceYou exported the rows out of Salesforce, worked on them in a spreadsheet, and want them back as a list.Matches on the Salesforce record ID, so no duplicates are created.
I already have GW IDsYou are working from a SignalRx export and only want to group records SignalRx has already processed.Paste or upload the GW IDs. Nothing is re-processed and the list is ready straight away.
The three upload kinds. "New contacts" selected.
The three upload kinds. "New contacts" selected.

Create new records in Salesforce

This checkbox decides whether the upload can write new records. When it is ticked and SignalRx cannot match an uploaded contact to an existing record, it creates the Lead or Contact and the associated Account as required. Untick it and the upload is read-only against your org: matched people join the list, unmatched people never appear in Salesforce.

Untick it for the first upload from any new source. Run the file, look at what matched and what did not, then decide whether that source deserves to create records. A few thousand badge scans is exactly the file you do not want creating Leads unreviewed.

Enrichment

Two optional checkboxes fill in missing contact details before syncing: source missing email addresses and source missing phone numbers. They only act on rows where the value is absent, so nothing you supplied is overwritten. Tick them when the list will be worked, not when you are staging data.

02 · Upload

Drop in the CSV. One header row, one person per row. A first name, last name, and either an email address or a company plus job title gives the matcher enough to work with. Company domain is the most useful extra column.

Upload List, step 2: drag in the CSV or browse for it.
Upload List, step 2: drag in the CSV or browse for it.

03 · Map columns

SignalRx proposes a mapping from your column headers to its fields; you confirm or correct it. The fields are grouped: Required (first and last name), Contact Identifier (email, LinkedIn URL, job title, at least one), Company Information (company name or domain, at least one), and Optional (lead source). Columns you do not need can be left unmapped. Check the company and email columns carefully, because they carry most of the matching weight.

Upload List, step 3: the proposed column mapping, grouped into Required, Contact Identifier, and Company Information.
Upload List, step 3: the proposed column mapping, grouped into Required, Contact Identifier, and Company Information.

04 · Review

The last step shows the rows exactly as they will import, under the list name, upload kind, and file name you chose, with a count of how many rows will import. Read this screen. If a column looks wrong, or the count is not what you expect, the usual causes are a company column that did not map, a file of personal email addresses, or the wrong upload kind on a file that came out of Salesforce. Go back rather than import. Nothing is written to Salesforce until you click Import.

Upload List, step 4: the rows as they will import, with the list name, upload kind, file, and the import count. Nothing is written until Import is clicked.
Upload List, step 4: the rows as they will import, with the list name, upload kind, file, and the import count. Nothing is written until Import is clicked.

What happens in Salesforce afterwards

SignalRx polls Salesforce on a roughly twenty-minute cycle, so the list appears within the next cycle rather than instantly.

  • Every member carries the list name in its GW list membership field: GW Contact List Memberships on Contact and Lead, GW Company List Memberships on Account and Lead. The fields are multi-select, so a record can sit in several lists and Revenue Plays at once.
  • New records appear only if you ticked the box, and only for rows that did not match. SignalRx writes standard fields only when it creates a record, and it respects your duplicate rules.
  • Enriched values land in GW fields, not standard ones. GW Contact Email and GW Contact Phone Number hold what was sourced from web and third-party sources and validated; the packaged Data Hygiene Flow copies them into the standard fields when those are blank.
A Contact's GoodWork Information section in Salesforce, including the GW Contact List Memberships fields an upload writes to.
A Contact's GoodWork Information section in Salesforce, including the GW Contact List Memberships fields an upload writes to.

The SignalRx Intelligence Card on each record shows the result of the enrichment at a glance: the person's Fit score and buyer segment, a short description, and the company SignalRx resolved for them, with its own score.

After the import, the Intelligence Card on a Contact (left) and a Lead (right) shows what SignalRx sourced for the person and the company it resolved for them.
After the import, the Intelligence Card on a Contact (left) and a Lead (right) shows what SignalRx sourced for the person and the company it resolved for them.
On the Account, the card ranks the associated people by fit, so the contacts an upload matched or created appear here too.
On the Account, the card ranks the associated people by fit, so the contacts an upload matched or created appear here too.

From there the list behaves like any other membership value. Filter a list view on it, report on it, or build a record-triggered Flow with contains as the operator and the list name as the value. See Getting Started with SignalRx for Salesforce.

FAQ

Can I rename a list after upload? No. The name is written into Salesforce and is fixed once the upload runs. Upload again under the right name.

What if the same person is in two uploads? They join both. Membership is multi-select, so the second upload adds a value rather than replacing one.

Does an uploaded list refresh itself? No. An upload is a fixed set of people. A Revenue Play is the evergreen equivalent: it re-evaluates continuously and members join and leave on their own.

Will an upload overwrite data a person entered? No. SignalRx writes to blank GW fields and never overwrites a human edit.

Want any of these running on your data?

Talk to our team