Complete Guide to Importing Leads or Contacts into Salesforce Campaigns

Share this article...

Salesforce Campaigns have existed since the dawn of time, but have been receiving more attention now that Pardot is growing more tightly integrated with this Salesforce object.

The benefits of importing data into Salesforce are becoming more apparent, especially for gaining a complete picture on Campaign Influence. The shift in focus towards Salesforce Campaigns (particularly due to Connected Campaigns), means Pardot marketers need to get to grips with new campaign management processes.

One process that may continue to baffle you is importing Leads (or Contacts) into Salesforce Campaigns. There’s a choice of two import tools, multiple places to access the tools, and more than one type of record you need to create – yep, not the easiest to figure out.

How do you start? What’s the most efficient process? How can you avoid messing data up?

These are the questions this post will answer.

Importing into Salesforce – which tool to use?

As I mentioned in the introduction, there’s a choice of two import tools for Salesforce:

  • Data Import Wizard
  • Data Loader

I recommend you use the Data Import Wizard when starting out, which is what I will be showing you. It has a more user-friendly interface, and you can access it from Salesforce setup (whereas Data Loader is an application, accessed externally).

A Note on Campaign Members

I also hinted that the process involves creating more than one type of record. You may be familiar with how Leads and Contacts work – but most importantly, that they are two separate objects, each with their individual characteristics.

When you add a Lead/Contact to a Salesforce Campaign, you will be creating a Campaign Member. This golden link means that Leads/Contacts can be members of multiple Campaigns (AKA. Multi-touch Attribution).

Why this distinction is important will become clear as we go through the tutorial.

Check your Duplicate Rules

Before you go any further, ask your admin to check the matching rules and duplicate rules that are active in your org.

You want to ensure that there is a Lead matching rule that will look for a match with:

  1. a) existing leads
  2. b) existing contacts

If the lead matching rule doesn’t consult your contact database, it will create unwanted duplicates. I will mention an AppExchange app that can completely cure this headache at the end of this post.

Part 1: Importing Leads as Campaign Members – New and Existing

By following these steps, you add Campaign Members and Leads (where needed) in one import, without creating duplicates.

Let’s walk through that.

  • Salesforce asks: is there an existing Lead with a matching email address?
    • If yes, add them to the Campaign
    • If no, Salesforce asks…
  • Is there an existing Lead with a matching email address*
    • If yes, block Salesforce from creating a new lead.
    • If no, allow Salesforce to create a new lead, and add them to the Campaign.

*Any other logic defined in your duplicate matching rule will be taken into account as well.

Step 1: Prep your File

Your import file needs the following headers (at least*):

  • Email
  • Company
  • First Name
  • Last Name
  • Campaign ID
  • Member Status (optional**)

Where’s the Campaign ID? You will find the ID in the URL, eg: 7012A0000018SSnQAA:

*Take note! These fields are the standard fields any import will require, but these may only scrape the surface for what your org requires. Are there required Lead fields? Are there fields that lead assignment rules use? Regardless, adding more fields improves overall data quality, and so you should seize this opportunity.

**Member status: if you do not define the status your Campaign Member should have, Salesforce will use the default ‘Sent’ status. More content coming on Campaign Member Statuses coming to The DRIP soon.

Finally, download the sheet in .csv format.

Step 2: Launch Data Import Wizard

Go to Salesforce setup, and search for Data Import Wizard. Click the big green ‘Launch Wizard’ button (you may need to scroll).

Use the image below to follow along:

  • What kind of data are you importing? – select leads.
  • What do you want to do? – select ‘Add new and update existing records’
  • Match lead by: Email
  • Assign New Leads to this Source: [select the appropriate lead source, which will indicate a first touchpoint]
  • Assign All Leads to Campaigns – select this checkbox!

Then, drag your file into the ‘Where is your data located’ section.

Step 3: Field Mapping

On the next screen, you will find the fields will be automatically mapped (if you used the correct headers in your file). Click ‘Change’ to either select fields for unmapped fields, or remove a mapped field you don’t want to import.

See this error? This means that Salesforce has not picked up the campaign ID, and you need to cross-check your file.

Once you’re happy, start the import.

Step 4: Check the Result

You will be automatically navigated to the Bulk Data Load Jobs page.

When the progress reaches 100%, check how many records were processed and any failed under the ‘Batches’ section. Failed records obviously need actioning, so click ‘View Result’ to download a file that will tell you the error reason.

Part 2: Importing Contacts as Campaign Members – New and Existing

Earlier, I honed in on the fact that Salesforce Contacts have different characteristics to Leads. Part 2 will cover the differences in the import process.

Step 1: Prep your File

Your import file needs the following headers (at least – refer to the leads section for more information):

  • Contact: Email
  • Account Name
  • Contact: First Name
  • Contact: Last Name
  • Campaign ID
  • Member Status (optional**)

Step 2: Launch Data Import Wizard

Go to Salesforce setup, and search for Data Import Wizard. Click the big green ‘Launch Wizard’ button (you may need to scroll).

Use the image below to follow along:

  • What kind of data are you importing? – select Accounts and Contacts.
  • What do you want to do? – select ‘Add new and update existing records’
  • Match contact by: Email
  • Match account by: Name & Site
  • ! Assign All Contacts to Campaigns – don’t forget to scroll down and select this checkbox!

Then, drag your file into the ‘Where is your data located’ section.

NB: it’s worth pointing out that there is no lead source selection box, unlike lead import. As this is key information, consider pulling a list of newly created contacts, and doing a second import to include lead source as a field in your import file.

Repeat Steps 3 and 4 from Part 1.

Using Pardot Import as a Shortcut

Someone bought a smart hack to my attention recently. It is possible to import Leads and Contacts via Pardot, by importing prospects directly into a Pardot list, then leveraging an automation rule to add these prospects to a Salesforce Campaign. I can completely see how this method is appealing, after all Pardot de-duping capabilities will match existing prospects, create those that don’t exist, and add both types to the list – all in one swoop! However, there’s two reasons you should be beware of this shortcut:

  • Automatic AMPSEA Matching: with ‘allow multiple prospects with the same email address’ enabled, when importing prospects, Pardot matches with the most recently active prospect (which perhaps is not the record you want!).
  • Assignment: these new prospects will not be assigned automatically, and so there is an extra automation required to assign prospects to a user before these can sync to Salesforce.
  • Salesforce validation rules: field validation in Salesforce can be much more strict than Pardot. Validation errors, such as the wrong data format or length, will be thrown back as errors during Salesforce import. You don’t get this visibility from the Pardot import tool, so you risk creating many Prospect Sync Errors.


This tutorial has shown you how to import leads and/or contacts into Salesforce Campaigns. The growing importance of Salesforce Campaigns in any Pardot campaign management process means it is time Pardot marketers got to grips with efficient Campaign Member import – I hope this post has been valuable in helping you achieve that.

AppExchange to the Rescue

The process we’ve gone through in this tutorial is fiddly and time-consuming, but completely possible to become habit. There is one app from the Salesforce AppExchange that I can recommend to cure the headache. PeopleImport by Validity not only can handle this process more efficiently, but gives you the ability to define smarter matching logic. Check it out, if only to educate yourself further on the topic of Campaign Member import.

12 thoughts on “Complete Guide to Importing Leads or Contacts into Salesforce Campaigns

  1. Great article.

    If I have a list of people I need to import to a campaign (webinar attendees for instance), I may not know which of them are leads and which of them are contacts. In fact, I’ll never know this. Would you recommend importing the entire list as leads first, then doing the same process with the same list and importing them as contacts?

    1. Hi Tom, thanks for reaching out. I would recommend you first check to ensure that there is a Lead matching rule that will look for a match with a) existing leads b) existing contacts, because if the lead matching rule doesn’t consult your contact database as well as your leads, it will create unwanted duplicates. Be sure that it will also block creation when you do this. Then importing these records as leads will: a) block any existing contacts b) block any existing leads c) create new leads where there no existing leads or contacts. Hope that helps!

      1. Thanks for the response Lucy! I have matching rules set up. In the example above, if I import leads and some of them are existing contacts, are those contacts added to the campaign as campaign members or would they be skipped altogether?

  2. Hey there,

    Thanks so much for sharing this! I’ve tried the mentioned steps for contacts (creating new and adding them to the campaign), but I get an error for the account name when I try to upload. Is there any way to upload and match the account name with an existing account? I can do this with by uploading to account ID using the lookup by name, but then I don’t get the option to add them to the campaign.

    I’ve created a workaround in the past where I add a checkbox field to the contact record specific to the campaign I want to add them to, but this definitely isn’t scalable.

    Any help is appreciated 🙂

    1. Hi Beth, have you tried selecting ‘Account name and site’ for the account matching in Data Loader? I suppose if you try that and get past that stage, then you should be ok to do the rest of the steps. Do you have an account database where there are lots of variations of the same account eg. DRIP Ltd. / DRIP Inc. / DRIP BVBA etc… or is your data relatively simple in structure?

  3. Good article and thank you for sharing. You can automatically assign to the user when importing prospect records into Pardot as long as you include the column “Assign to User” in the CSV file that’s populated with the User’s email address that’s used in Salesforce.

  4. I have records that have fail during upload. I understand why they failed but would like a list of the records that have failed. Is that possible in SF?

  5. Thanks for sharing! Looking forward to the content on Campaign Member Statuses. New to Salesforce – a question that has come up is whether or not there is a recommended method for changing the Campaign Member Status? For webinars and related events, we’ll see individuals who initially registered, missed the day of event but participate later in an on-demand offering. Looking for an efficient way to change their “registered” status without creating a duplicate entry.

    1. Hello Jennifer!

      Thanks for going through the article! I wouldn’t say there is a recommended way, as new Campaign Member Status values can be obviously created and used either manually from each Campaign or through an automation. I’d personally go with a flow to replace the values based on criteria, but it depends on what is happening in your particular org.

  6. Hi, I dont see “Assign All Leads to Campaigns – select this checkbox! ” On my data import wizard! Why is that? Any ideas?

Add Comment