User Sync
Import and synchronize users from external data sources like Airtable, Google Sheets, and CSV files.
Overview
User Sync allows you to:
- Import users from external registration systems
- Keep user data synchronized automatically
- Map external fields to DMS attributes
- Handle conflicts between sources
Supported Sources
Airtable
Connect to an Airtable base to sync users from a table.
Requirements:
- Airtable account with API access
- OAuth authorization (one-time setup)
Setup:
- Go to Sync Sources > Add Source
- Select Airtable
- Click Connect with Airtable
- Authorize DMS to access your bases
- Select the base and table
- Configure field mappings
Google Sheets
Sync users from a Google Spreadsheet.
Requirements:
- Google account
- OAuth authorization (one-time setup)
Setup:
- Go to Sync Sources > Add Source
- Select Google Sheets
- Click Connect with Google
- Authorize DMS to access your spreadsheets
- Select the spreadsheet and sheet
- Configure field mappings
CSV Upload
Upload a CSV file for one-time or periodic imports.
Setup:
- Go to Sync Sources > Add Source
- Select CSV Upload
- Upload your CSV file
- Map columns to DMS fields
- Run the import
Field Mappings
Map source columns to DMS fields.
Required Mappings
| DMS Field | Description | Example Source Field |
|---|---|---|
email | User's email (unique identifier) | "Email", "Email Address" |
Standard Mappings
| DMS Field | Description | Example Source Field |
|---|---|---|
first_name | First name | "First Name", "Name" |
last_name | Last name | "Last Name", "Surname" |
Custom Attributes
Any unmapped field becomes a custom attribute:
| Source Field | DMS Attribute |
|---|---|
| "Ticket Type" | ticket_type |
| "Company" | company |
| "Registration Status" | registration_status |
Example Configuration
{
"field_mappings": {
"Email Address": "email",
"First Name": "first_name",
"Last Name": "last_name",
"Ticket Type": "ticket_type",
"Company Name": "company",
"Dietary Needs": "dietary_restrictions"
}
}
Sync Settings
Sync Frequency
| Option | Description |
|---|---|
| Manual | Only sync when triggered |
| Hourly | Sync every hour |
| Daily | Sync once per day |
| Real-time | Sync immediately on changes* |
*Real-time requires webhook support from the source.
Conflict Resolution
When a user exists in both DMS and the source:
| Strategy | Behavior |
|---|---|
source_wins | External source overwrites DMS |
dms_wins | DMS values are preserved |
Recommendation: Use source_wins when the external system is the source of truth.
Running a Sync
Manual Sync
- Go to Sync Sources
- Find your source
- Click Sync Now
Dry Run
Preview changes before applying:
- Click Sync Now
- Enable Dry Run option
- Review the preview:
- New users to create
- Existing users to update
- Records with errors
- If satisfied, run the actual sync
Sync Results
After a sync completes:
Sync completed successfully
Processed: 150 records
Created: 10 new users
Updated: 25 existing users
Skipped: 115 unchanged
Errors: 0
Deduplication
DMS prevents duplicate users during sync.
By Platform
| Source | Deduplication Key |
|---|---|
| Airtable | source_id + email |
| Google Sheets | email |
| CSV | email |
Handling Duplicates
If a sync finds a duplicate:
- Existing user is updated (based on conflict resolution)
- Activity is logged
- No new user is created
Error Handling
Common Errors
Missing Email:
Row 15: Missing required field 'email'
Solution: Ensure all rows have email addresses.
Invalid Email Format:
Row 23: Invalid email format 'not-an-email'
Solution: Fix the email in the source data.
Connection Failed:
Failed to connect to Airtable: Invalid API key
Solution: Re-authorize the OAuth connection.
Viewing Errors
- Go to Sync Sources > Sync History
- Click on a failed or partial sync
- View error details for each problem row
OAuth Connections
Initial Setup
- Click Connect for the source type
- Sign in to the external service
- Grant DMS permission to access your data
- Return to DMS
Refreshing Connections
OAuth tokens expire periodically:
- Go to Sync Sources
- If connection shows "Expired", click Reconnect
- Re-authorize access
Revoking Access
To disconnect a source:
- Delete the sync source in DMS
- Optionally, revoke access in the external service's settings
Best Practices
Data Quality
- Clean source data before syncing
- Use consistent field names
- Validate email addresses at the source
Field Mapping
- Map all useful fields, not just required ones
- Use consistent attribute names across sources
- Document your mappings
Monitoring
- Review sync history regularly
- Set up notifications for sync failures
- Verify user counts match expectations
Multiple Sources
If using multiple sync sources:
- Avoid syncing the same users from different sources
- Use consistent field mappings across sources
- Choose one source as the "primary" for conflict resolution
Troubleshooting
Users Not Appearing
- Check sync status in Sync History
- Verify field mappings include
email - Check for errors in the sync log
- Ensure source data has valid emails
Attributes Not Updating
- Check conflict resolution setting
- Verify the field is mapped
- Check if the value actually changed in source
OAuth Errors
- Try re-authorizing the connection
- Check if the external service is accessible
- Verify you have permission to the specific base/sheet
Related Topics
- User Management - Managing synced users
- User Attributes - Understanding attributes
- API Reference - Sync API endpoints