Your duplicate detection challenges stem from trying to use tracking identifiers as primary identity fields when they should be treated as relationship data. Let me provide a comprehensive solution addressing all three aspects:
Custom Field Deduplication Strategy:
The fundamental issue is that your custom identifiers (partner_referral_code, campaign_tracking_id, customer_internal_id) are transactional tracking fields, not identity fields. They represent a lead’s interaction with your marketing channels, not the lead’s core identity. Mixing these two concepts in your duplicate detection logic creates the exact problem you’re experiencing.
Here’s how to restructure your matching rule configuration:
- Primary Identity Fields: Configure your duplicate detection to use ONLY true identity fields:
- Email address (highest weight)
- Phone number (high weight)
- LinkedIn profile URL (medium weight, if you collect it)
- Company name + job title combination (low weight, as tie-breaker)
- Exclude Tracking Fields from Duplicate Detection: Your custom identifiers should NOT be part of the duplicate matching rule. Navigate to Lead Management > Settings > Duplicate Detection Rules. Edit your existing rule or create a new one:
Rule Name: “Primary Lead Identity Matching”
Matching Logic:
IF (email_exact_match = true) OR
(phone_normalized_match = true AND company_name_fuzzy_match = true)
THEN flag_as_duplicate = true
Notice that partner_referral_code, campaign_tracking_id, and customer_internal_id are completely absent from this rule. They should never prevent duplicate detection.
- Store Tracking Data Separately: Instead of storing custom identifiers as fields on the Lead record, create a related “Lead Source Tracking” object or table. Each lead can have multiple tracking records:
Lead Record:
Related Lead Source Tracking Records:
- Tracking ID: T-00001, Lead ID: L-00001, Source: Partner A, partner_referral_code: PRTNR-A-12345, campaign_tracking_id: CAMP-2025-Q2, Date: 2025-06-15
- Tracking ID: T-00002, Lead ID: L-00001, Source: Partner B, partner_referral_code: PRTNR-B-67890, campaign_tracking_id: CAMP-2025-Q3, Date: 2025-06-18
This structure preserves ALL tracking information while preventing it from interfering with duplicate detection. You maintain complete attribution visibility without compromising data quality.
Matching Rule Configuration:
Within AEC 2021 Lead Management, configure your duplicate detection with these specific settings:
- Field-Level Matching Configuration:
Navigate to Lead Management > Configuration > Matching Rules. For each identity field, set:
Email Address:
- Match Type: Exact (case-insensitive)
- Weight: 100
- Required: Yes
- Normalization: Lowercase, trim whitespace
Phone Number:
- Match Type: Normalized
- Weight: 80
- Required: No
- Normalization: Remove spaces, dashes, parentheses; add country code if missing
Company Name:
- Match Type: Fuzzy (85% similarity threshold)
- Weight: 30
- Required: No
- Normalization: Remove “Inc”, “LLC”, “Ltd” suffixes
- Matching Threshold: Set your duplicate detection threshold to 100 points. This means:
- Email match alone = duplicate (100 points)
- Phone match + company match = duplicate (80 + 30 = 110 points)
- Phone match alone = not duplicate (80 points, below threshold)
This configuration ensures high confidence in duplicate detection while avoiding false positives.
- Automated vs Manual Merge: For matches scoring exactly 100 points (email only), enable automatic merging. For matches scoring 100-150 points (phone + company), flag for manual review. This gives your sales ops team control over edge cases while automating clear duplicates.
Data Quality Implementation:
To maintain data quality while handling multiple custom identifiers:
- Lead Ingestion Workflow: Modify your lead capture process to separate identity data from tracking data at the point of entry. When a form is submitted:
Step 1: Extract identity fields (email, phone, company)
Step 2: Check for existing lead using matching rules
Step 3a: If duplicate found, update lead record’s “last_interaction” date
Step 3b: If duplicate found, CREATE NEW tracking record with current custom identifiers
Step 4a: If no duplicate, create new lead record
Step 4b: If no duplicate, create initial tracking record
This workflow ensures you never lose tracking attribution while maintaining clean lead deduplication.
- Merge Policy for Custom Fields: Even with proper duplicate detection, you need a merge policy for when duplicates are identified. In Lead Management > Settings > Merge Policies, configure:
For Standard Fields (email, phone, company):
- Strategy: Keep most recent
- Conflict Resolution: Manual review if both records updated within 7 days
For Custom Identifier Fields (if you must keep them on Lead record):
- Strategy: Concatenate all unique values
- Format: “PRTNR-A-12345|PRTNR-B-67890” (pipe-separated)
- Maximum: Keep last 10 values
This preserves historical tracking while maintaining a single lead record.
- Data Quality Monitoring: Set up automated data quality checks:
- Daily report: Leads created in last 24 hours with duplicate email/phone
- Weekly report: Lead records with >5 custom identifier values (suggests merge issues)
- Monthly audit: Sample 100 leads and verify tracking records properly linked
These reports help you catch duplicate detection failures quickly and refine your matching rules based on real patterns.
- Lead Scoring Adjustment: If you use lead scoring, adjust your scoring model to account for multiple tracking records. A lead with multiple partner referral codes or campaign interactions should receive bonus points for multi-touch attribution, not be penalized as a potential duplicate.
Migration Plan for Existing Duplicates:
You likely have existing duplicate leads in your system. Here’s how to clean them up:
- Identify Existing Duplicates: Run a one-time analysis query to find leads with matching email/phone but different custom identifiers:
SELECT email, COUNT(*) as duplicate_count
FROM leads
GROUP BY email
HAVING COUNT(*) > 1
-
Extract Tracking Data: For each duplicate set, extract all custom identifier combinations into a temporary table before merging.
-
Merge Duplicates: Use Lead Management’s bulk merge functionality to consolidate duplicate leads, keeping the oldest lead record as primary (it likely has the most complete interaction history).
-
Create Tracking Records: For each merged lead, create individual Lead Source Tracking records for each unique custom identifier combination that was preserved.
-
Validation: After migration, verify that:
- Total lead count decreased by expected amount
- No tracking attribution was lost
- Lead scoring reflects combined interaction history
Long-term Recommendations:
For sustainable data quality:
-
Standardize Lead Capture: Ensure all lead sources (web forms, partner portals, imports) follow the same identity + tracking separation pattern.
-
Partner Integration Guidelines: Provide partners with API documentation that clearly separates identity fields from tracking fields in the payload structure.
-
Regular Matching Rule Tuning: Quarterly, review your duplicate detection match rate and false positive rate. Adjust field weights and thresholds based on actual data patterns.
-
Consider Platform Upgrade: While you can solve this in AEC 2021, upgrading to AEC 2023 or later would give you access to the Identity Service, which handles complex identity graphs natively and would eliminate the need for custom matching rule configuration.
By separating identity management from attribution tracking and configuring matching rules to focus only on true identity fields, you’ll eliminate the duplicate lead creation issue while preserving complete multi-touch attribution data for your sales and marketing teams.
This draft is based on general Adobe Experience Cloud knowledge. It has not been verified against your specific version and environment. Practitioners: verify the steps and share your experience below.