Skip to main content

I'm new to a company that uses both contacts and leads. Here is the issue we are encountering:     We get lists of potential students (we use Education Cloud) from various sources (sign-ups from events, etc). Once they apply, they are converted to a contact / Person Account. If the person's name ends up on another list (through another event sign-up, etc), our data team doesn't know if the applicant is a contact or a lead (because they're not a contact until they apply). They've historically imported leads, but this is causing a lot of duplicates to be created.    Does anybody have recommendations for how to set up a system (flow, ideally) that would allow our import file to:   1) Check for any contacts (person accounts) and update those records if the contact exists.  2) If the contact doesn't exist: Check for any leads and update or create as needed.    Thanks in advance! 

 

@Agentforce Education (Education Cloud) 

3 respuestas
  1. 31 oct 2025, 19:05

    Great question! We faced a very similar challenge at my institution, and it's a common headache in Higher Ed when you're managing data from so many different sources.

    There are multiple ways to approach this, but we've had a lot of success using a record-triggered Flow built on a "staging object." It sounds complex, but the concept is pretty straightforward and it made a huge difference for our data integrity.

    Here’s the basic setup we use:

    1. A "Staging" Custom Object: Instead of trying to import directly into different objects, our data team now imports all incoming lists into one custom object (we called ours Incoming Inquiry). This object has fields for all the info we get in our lists (First Name, Last Name, Email, Source, etc.). This simplifies the import process for our team immensely.
    2. An Automated Flow: A record-triggered Flow automatically runs every time a new record is created in that staging object. This is where the pattern is so flexible. At our institution, we actually don't use the Lead object, so our flow just checks for an existing Contact (Person Account). If it finds one, it updates it. If not, it creates a new Contact.
    3. Since you are using both Leads and Contacts, your flow would just follow the exact logic you described:
      • First, it checks if a Contact (Person Account) already exists. If yes, it updates the Contact and stops.
      • If no Contact is found, it then checks for an existing Lead. If yes, it updates that Lead.
      • If it finds no match at all, it creates a brand new Lead.

    The key takeaway is that the staging object + flow pattern can handle whatever matching rules you need, regardless of which objects (Leads, Contacts, or others) you're using.

    This process has been a game-changer for us. It has dramatically reduced our duplicates and provided a consistent process for our data team. Plus, the staging records give us a great audit trail of what came in and what the system did with it.

     

    When we were building this out, these Trailhead modules were incredibly helpful for getting the key concepts down:

    Hope our experience gives you a solid starting point. Good luck!

0/9000