Salesforce duplicating contact records on sync

FieldPulse version: 3.2.1
Salesforce integration version: 1.4.2
Environment: Production

I have confirmed that the Salesforce integration is creating duplicate Contact records during the bidirectional sync. I can reproduce this when:

  1. A customer exists in FieldPulse with email john.smith@example.com
  2. A Contact exists in Salesforce with the same email address but different capitalization (John.Smith@example.com)
  3. The sync runs and creates a second Contact in Salesforce rather than matching to the existing record

I have verified that the Email field in Salesforce is marked as unique at the object level, but the matching appears to be case-sensitive. The duplicate detection in FieldPulse settings is configured with "Email (Exact Match)" enabled.

From a governance perspective, I need to understand whether the matching logic is configurable or if this requires a custom Salesforce duplicate rule. I have confirmed that approximately 340 duplicate Contacts have been created in the past 30 days.

Is this expected behavior, or is there a configuration option I have overlooked? I have reviewed Connecting FieldPulse to Salesforce and the field mapping documentation but did not locate guidance on matching criteria.

Parents
  • Yeah this one tripped me up too — the FieldPulse connector uses exact string matching on email, so john.smith@example.com and John.Smith@example.com are treated as different values. Heads up that this also applies to phone numbers if you have formatting differences (e.g., "555-1234" vs "(555) 123-4567").

    Here's what worked for me:

    1. In Salesforce, create a Duplicate Rule on Contact with Matching Rule set to "Standard Contact Matching Rule" (or custom if you need more control)
    2. Configure the rule to match on Email with "Fuzzy: Email" — this handles case insensitivity
    3. Set the rule action to "Allow" with alert, or "Block" if you want to prevent the duplicate at the API level

    That said, the FieldPulse integration will still log a sync error if Salesforce blocks the insert. YMMV on whether you want to clean upstream in FieldPulse first.

    Worth noting: I also added a Flow in Salesforce to normalize email to lowercase on insert/update, which catches other integration sources too.

Reply
  • Yeah this one tripped me up too — the FieldPulse connector uses exact string matching on email, so john.smith@example.com and John.Smith@example.com are treated as different values. Heads up that this also applies to phone numbers if you have formatting differences (e.g., "555-1234" vs "(555) 123-4567").

    Here's what worked for me:

    1. In Salesforce, create a Duplicate Rule on Contact with Matching Rule set to "Standard Contact Matching Rule" (or custom if you need more control)
    2. Configure the rule to match on Email with "Fuzzy: Email" — this handles case insensitivity
    3. Set the rule action to "Allow" with alert, or "Block" if you want to prevent the duplicate at the API level

    That said, the FieldPulse integration will still log a sync error if Salesforce blocks the insert. YMMV on whether you want to clean upstream in FieldPulse first.

    Worth noting: I also added a Flow in Salesforce to normalize email to lowercase on insert/update, which catches other integration sources too.

Children
No Data