Contact Mapping
Detailed mapping between WeGive donors and Virtuous contacts, including V1 and V2 differences
Contact Mapping
This document details the comprehensive mapping between WeGive donor records and Virtuous contact objects, covering both V1 and V2 integration versions with their distinct approaches to contact management.
Overview
Virtuous uses different contact models depending on the integration version:
- V1: Direct Contact object mapping with simple one-to-one relationships
- V2: Hierarchical Contact → ContactIndividual structure supporting households and organizations
WeGive maps these to the Donor object with version-appropriate relationship handling.
V1 Contact Mapping
Individual Contact Mapping
Core Fields
WeGive Field | Virtuous Field | Type | Required | Transformation |
---|---|---|---|---|
id | Correlation ID | String | No | Stored in WeGive virtuous_id |
first_name | FirstName | String | Yes* | Direct mapping |
middle_name | MiddleName | String | No | Direct mapping |
last_name | LastName | String | Yes* | Direct mapping |
suffix | Suffix | String | No | Direct mapping |
email_1 | EmailAddress | String | No | Email validation |
mobile_phone | PhoneNumber | String | No | Phone formatting |
*Either FirstName or LastName is required in Virtuous
Contact Information
Email Handling:
- Primary email maps to Virtuous
EmailAddress
field - Secondary emails can be managed through additional contact methods
- Email validation ensures data quality
- Duplicate email prevention
Phone Number Management:
- Mobile phone maps to primary phone number
- Additional phone numbers (home, work) map to secondary contact methods
- Phone number formatting normalized during sync
- International phone number support
Address Information:
- Complete address synchronization between systems
- Street address, city, state, postal code mapping
- Country information defaults to organization settings
- Address type designation (home, work, etc.)
Organization Contact Mapping
Core Fields
WeGive Field | Virtuous Field | Type | Required | Transformation |
---|---|---|---|---|
id | Correlation ID | String | No | Stored in WeGive virtuous_id |
name | Name | String | Yes | Direct mapping |
email_1 | EmailAddress | String | No | Email validation |
virtuous_id | Id | String | No | Correlation tracking |
V2 Enhanced Contact Mapping
Hierarchical Structure
V2 integration supports Virtuous’s advanced contact model:
Contact (Household/Organization Level)
- Purpose: Represents the household, family unit, or organization
- Contains: Multiple ContactIndividual records
- Address: Primary household or business address
- Coordination: Manages relationships between individuals
ContactIndividual (Person Level)
- Purpose: Represents specific individuals within the contact
- Personal Data: Individual names, emails, phones
- Relationships: Role within household or organization
- Primary Designation: Identifies main contact person
V2 Donor to ContactIndividual Mapping
Individual Donor Fields
WeGive Field | Virtuous Field | Type | Required | Transformation |
---|---|---|---|---|
id | Correlation ID | String | No | Multiple correlation fields |
first_name | FirstName | String | Yes | Direct mapping |
middle_name | MiddleName | String | No | Direct mapping |
last_name | LastName | String | Yes | Direct mapping |
email_1 | EmailAddress | String | No | Email validation |
mobile_phone | PhoneNumber | String | No | Phone formatting |
virtuous_contact_id | ContactId | String | Yes | References parent Contact |
virtuous_contact_individual_id | Id | String | Yes | Individual identifier |
virtuous_is_primary_contact_individual | IsPrimary | Boolean | No | Primary designation |
Enhanced Correlation Fields
V2 Correlation Strategy:
virtuous_contact_id
: Links to the household/organization Contactvirtuous_contact_individual_id
: Identifies the specific individualvirtuous_is_primary_contact_individual
: Marks the primary contact personvirtuous_primary_contact_individual_id
: References primary individual
Household Management
Household to Contact Mapping
WeGive Field | Virtuous Field | Transformation | Notes |
---|---|---|---|
id | Correlation ID | Stored mapping | Household correlation |
name | HouseholdName | Household naming | Generated or provided |
virtuous_id | Id | Contact reference | Household Contact ID |
Household Relationships
Family Structure:
- Spouse relationships automatically coordinated
- Children linked to parent households
- Extended family member connections
- Address sharing within households
Primary Individual Rules:
- One primary individual per household
- Primary individual handles main communications
- Gift attribution to primary individual when appropriate
- Automatic primary designation when needed
Address Mapping
Address Synchronization
Address information coordinates between both systems with version-specific handling:
V1 Address Mapping
- Direct Mapping: Individual contact addresses sync directly
- Address Types: Home, work, billing address support
- Organization Addresses: Business address for organization contacts
V2 Address Coordination
- Household Addresses: Shared addresses for family members
- Individual Addresses: Personal addresses when different from household
- Address Hierarchy: Household address inherits to individuals
- Organization Addresses: Business addresses for company contacts
Address Fields
WeGive Field | Virtuous Field | Transformation | Notes |
---|---|---|---|
street_1 | Address1 | Direct mapping | Primary street address |
street_2 | Address2 | Direct mapping | Secondary address line |
city | City | Direct mapping | City name |
state | State | Direct mapping | State/province |
postal_code | PostalCode | Direct mapping | ZIP/postal code |
country | Country | Default handling | Defaults to organization country |
Data Transformation Rules
Name Handling
Individual Name Processing:
- Name validation ensures required fields are present
- Middle name and suffix handling for complete names
- Name formatting consistency across systems
- Special character handling and normalization
Organization Name Processing:
- Business name validation and formatting
- DBA (Doing Business As) name support
- Organization type designation
- Name uniqueness validation
Contact Information Processing
Email Management:
- Email format validation and normalization
- Duplicate email detection and prevention
- Primary email designation
- Email preference coordination
Phone Number Processing:
- Phone number formatting and normalization
- International phone number support
- Phone type designation (mobile, home, work)
- Contact preference management
Sync Operations
V1 Sync Operations
Push Operation (WeGive → Virtuous)
Create New Contact:
- Determine contact type (Individual vs Organization)
- Map appropriate fields based on contact type
- Create contact with complete information
- Store correlation ID for future updates
Update Existing Contact:
- Use
virtuous_id
for contact identification - Update changed fields only
- Preserve existing Virtuous-specific data
- Maintain contact type consistency
Pull Operation (Virtuous → WeGive)
Import Contact:
- Determine contact type from Virtuous data
- Map fields to appropriate WeGive donor structure
- Create or update WeGive donor record
- Store correlation ID for bidirectional sync
V2 Enhanced Sync Operations
Push Operation (WeGive → Virtuous)
Create New Contact Structure:
- Determine if Contact (household) exists
- Create Contact if needed for household/organization
- Create ContactIndividual for the person
- Establish relationships and primary designation
- Store multiple correlation IDs
Household Coordination:
- Group family members into households
- Coordinate shared information (address, surname)
- Manage primary individual designation
- Handle household-level communications
Pull Operation (Virtuous → WeGive)
Import Contact Hierarchy:
- Import Contact (household/organization) structure
- Import associated ContactIndividual records
- Create WeGive donors for individuals
- Maintain household relationships
- Preserve primary individual designation
Matching and Deduplication
V1 Matching Strategy
Primary Matching (in order):
- Virtuous ID: Exact match using stored
virtuous_id
- Email Address: Match on primary email address
- Name Match: Full name matching for individuals
- Organization Name: Name matching for organizations
V2 Enhanced Matching
Hierarchical Matching:
- Contact Individual ID: Match on
virtuous_contact_individual_id
- Contact ID: Match on
virtuous_contact_id
- Email Within Household: Email matching within household context
- Name + Household: Name matching within known households
- Create New: Create new hierarchy when no matches found
Conflict Resolution
Update Strategy:
- Push Operations: WeGive data takes precedence
- Pull Operations: Virtuous data takes precedence
- Relationship Coordination: Preserve existing family relationships
Field-Level Rules:
- Contact Info: Always update with latest data
- Names: Update only if target field is empty
- Relationships: Maintain existing household connections
- Primary Designation: Coordinate primary individual status
Validation Rules
Data Quality Requirements
V1 Validation:
- Either first name or last name required for individuals
- Organization name required for organization contacts
- Email format validation when provided
- Phone number format normalization
V2 Enhanced Validation:
- ContactIndividual requires name fields
- Contact requires appropriate type designation
- Household relationship validation
- Primary individual designation consistency
Error Handling
Common Validation Issues:
- Missing required name fields
- Invalid email format
- Duplicate contact detection
- Household relationship conflicts
Automatic Corrections:
- Name field defaults when missing
- Email format cleaning
- Phone number normalization
- Household relationship resolution
Performance Optimization
V1 Performance
- Simple Operations: Direct contact mapping
- Fast Processing: Minimal relationship overhead
- Direct Correlation: Simple ID-based matching
V2 Performance Considerations
- Complex Relationships: Additional processing for households
- Multiple Lookups: Contact and ContactIndividual coordination
- Relationship Management: Household coordination overhead
Optimization Strategies
Batch Processing:
- Group related operations for efficiency
- Household-aware batching in V2
- Correlation ID caching
Query Optimization:
- Index optimization for correlation fields
- Efficient household relationship queries
- Contact hierarchy navigation
Version Migration
V1 to V2 Migration
Migration Process:
- Assessment: Review existing V1 contact structure
- Household Planning: Plan family groupings
- Primary Designation: Establish primary individual rules
- Data Migration: Convert V1 contacts to V2 hierarchy
- Validation: Verify relationship accuracy
Data Preservation:
- All existing contact information maintained
- Relationship data enhanced with household structure
- Historical data remains intact
- Correlation IDs properly migrated
This comprehensive contact mapping documentation ensures accurate donor and contact synchronization between WeGive and Virtuous across both integration versions while maintaining data integrity and supporting complex relationship structures.