Preferences Export
The Preferences Centre export provides user preference selections enriched with preference definitions and option metadata.
Requesting Access
To request access to preferences exports for your integration, please contact customer support with the following information:
- Client ID
- Preferred destination (S3, etc.)
- Desired export frequency
Export Destinations
Exports can be delivered to the following destinations:
Amazon S3
- Direct delivery to your S3 bucket
- Requires: bucket name, region, and appropriate IAM permissions
- Primary destination for all exports
- See S3 Destination
Other Destinations
Additional destinations may be available in future releases. Contact customer support to discuss your specific requirements or request new destination types.
Export Types
Full vs Differential Exports
Differential Exports: Each export contains only records that have been created or modified since the last successful export. The system uses a checkpoint mechanism to track the last export timestamp per client and only includes records with last_updated > last_checkpoint.
Full Exports: Full historical exports are available upon request. Contact customer support if you require a complete snapshot of all preference data regardless of modification date.
Export Scheduling
Exports can be configured to run at the following intervals:
- Hourly: Every hour at a specified minute
- Daily: Once per day at a specified time (UTC)
- Weekly: Once per week on a specified day and time (UTC)
- Custom: Contact customer support for custom scheduling requirements. We use Cron for scheduling: https://crontab.guru/
Data Formats
All preference exports are delivered as JSON files.
Export Samples
User Preferences Export
The user preferences export contains user preference selections enriched with preference names and option metadata from joined tables.
Sample Export:
[
{
"id": 12345,
"client": "DEMOCLIENT",
"user_id": 98765,
"anonymous": false,
"preference_key": "marketing_emails",
"preference_name": "Marketing Communications",
"preference_option_id": 101,
"preference_option_value": "opt_in",
"preference_option_metadata": {
"visualType": "checkbox",
"type": "opt-in",
"description": "Receive promotional offers and updates"
},
"created_at": "2024-01-15T10:30:00.000000",
"last_updated": "2024-03-20T14:25:30.000000",
"last_updated_by": "user_portal",
"last_updated_by_ip": "192.168.1.100",
"last_updated_by_ip_raw": "192.168.1.100"
},
{
"id": 12346,
"client": "DEMOCLIENT",
"user_id": 98765,
"anonymous": false,
"preference_key": "data_sharing",
"preference_name": "Data Sharing Preferences",
"preference_option_id": 205,
"preference_option_value": "partners_only",
"preference_option_metadata": {
"visualType": "radio",
"type": "opt-in",
"description": "Share data with trusted partners only"
},
"created_at": "2024-01-15T10:30:00.000000",
"last_updated": "2024-03-22T09:15:45.000000",
"last_updated_by": "admin_portal",
"last_updated_by_ip": "10.0.0.50",
"last_updated_by_ip_raw": "10.0.0.50"
},
{
"id": 12347,
"client": "DEMOCLIENT",
"user_id": 55432,
"anonymous": true,
"preference_key": "cookie_consent",
"preference_name": "Cookie Preferences",
"preference_option_id": 310,
"preference_option_value": "essential_only",
"preference_option_metadata": {
"visualType": "select",
"description": "Essential cookies only"
},
"created_at": "2024-03-21T16:45:00.000000",
"last_updated": "2024-03-21T16:45:00.000000",
"last_updated_by": null,
"last_updated_by_ip": "203.0.113.42",
"last_updated_by_ip_raw": "203.0.113.42"
}
]Field Descriptions:
| Field | Type | Description |
|---|---|---|
id | integer | Unique identifier for the user preference record |
client | string | Client identifier |
user_id | integer | User identifier in your system |
anonymous | boolean | Whether this is an anonymous user preference |
preference_key | string | Unique key identifying the preference type |
preference_name | string | Human-readable name of the preference (from joined client_preference table) |
preference_option_id | integer | ID of the selected option |
preference_option_value | string | Value of the selected option (from joined client_preference_option table) |
preference_option_metadata | object | Additional metadata about the option including visual type and description |
created_at | string | Timestamp when the preference was first set |
last_updated | string | Timestamp of the last modification |
last_updated_by | string | System or portal that made the last update |
last_updated_by_ip | string | IP address that made the last update |
last_updated_by_ip_raw | string | Raw IP address that made the last update |
Best Practices
- Differential Processing: Exports are differential by default. Design your integration to process incremental updates and maintain a local copy of the full dataset
- First Export: The first export will contain all historical records. Subsequent exports will only include changes
- Data Processing: Always validate the JSON structure before processing exports
- Error Handling: Implement retry logic for failed export retrievals
- Monitoring: Set up alerts for missing or delayed exports
- Date Handling: All timestamps are in UTC; convert to your local timezone as needed
- Null Handling: Be prepared to handle
nullvalues in optional fields likelast_updated_byand joined fields - Anonymous Users: Check the
anonymousflag to distinguish between authenticated and anonymous user preferences
Troubleshooting
Export Not Received
- Verify your destination credentials are current
- Check that your destination has sufficient storage space
- Review any firewall or security rules that might block the delivery
Missing Historical Data
- Exports are differential by default - you'll only receive changes since the last export
- To receive all historical data, contact support to reset your export checkpoint
Data Discrepancies
- Ensure you're processing the most recent export file
- Verify timezone handling for date fields
- Contact customer support if data appears incorrect
Empty Exports
- Empty exports are normal when no preference changes have occurred since the last export
- This indicates stable data with no user activity for the export period
Updated about 2 hours ago
