With out-of-the-box tools from Salesforce, the process I would go through would involve a mess of .csv files litering my desktop and probably a bunch of duplicates in my database. It’s a pretty nasty mutli-step process through a bunch of different Salesforce.com tables.
The good folks at CRMfusion have saved nonprofit organizations from this drudgery with their fantastic tool, DemandTools. With our 10 licenses, it would normally cost us $1,500 per year…CRMfusion gives the application licenses away to Salesforce nonprofits!
With DemandTools, my time is cut in half and I can do everything in a single Excel .xls file with multiple worksheets. I still have to go through steps to make sure my imported data doesn’t already exist in Salesforce, but DemandTools make that easier to do. I can “auto map” fields and set Salesforce fields to constant data (so if all imported records came from the same source, I can put that in DemandTools to populate the “Lead Source” field on each record as it imports).
DemandTools does so much more. Its de-duper is top notch, it can clean accounts/organizations and contacts at the same time. I can’t imagine administering Salesforce without it.
Now the good folks at CRMfusion have taken it one step further with PeopleImport, also free for nonprofits!
PeopleImport is just for adding new account/organizations, contacts & leads (we don’t use leads, but if we did this would be the tool for it).
In DemandTools, after I prepare the data in Excel I have to run their “Find Contact IDs” or “Find Account IDs” tools to compare my Excel file to the existing Salesforce database and give me any existing matches. CRMfusion has developed some amazing matching algorithms that apply fuzzy logic (to catch the fact that there are at least 3,560 ways to misspell “university”) and nickname checking to ensure that if that person is in there already, you’ll know it. PeopleImport saves this extra step by doing the duplicate checking at the same time as the import and you can perform actions in your database based on the results of the checking!
At the time of the import, you tell PeopleImport exactly what to look for in an existing contact. Is it just a matching email address? Would be easy if every contact had a unique email address but that’s not the case for us. Some records have addresses but no email, some have email but no addresses. For me, I like using a First Name match for the first name (which means “Bobby” and “Robert” would be considered a match), a fuzzy match on the last name (which means that “Smith” and “Smyth” would match), and either the email (exact) or City (fuzzy). You set up multiple scenarios which you can save and reload that the system will run through in order. If it finds a match, it can update the record with any new information from the import (helpful if someone changed their phone number, or set a different preference), maybe set an activity record, add to a campaign, etc. Or nothing. You tell it what you want to do. If it doesn’t find a match, you set what happens next. In our case, I want it to check if the organization exists (based on the name). If it already exists, add a new contact record in the same organization. If it doesn’t already exist, add a new organization record and then add a new contact record to that organization.
One window. Minimal buttons to push (assuming you have the scenarios preconfigured). After it does its thing and produces its results, you check exactly what it’s going to do (just in case you really do have a Robert Smith and Bobby Smythe in Portland, OR and they’re not the same person) before hitting the final button that actually makes it happen.
When we did a booth at the ASCO annual meeting earlier this year, I had a devil of a time importing the contacts because of all the checking I needed to do against the existing database first. PeopleImport should make that a breeze next year.