Preferences Exports
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
We are able to export the data for user_preferences, client_preferences, and client_preference_options.
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.
This is only supported for user_preferences at the moment.
Full Exports: Full historical exports.
This is only supported for client_preferences and client_preference_options.
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 CSV 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 | client | user_id | anonymous | preference_key | preference_name | preference_option_id | preference_option_value | preference_option_metadata | created_at | last_updated | last_updated_by |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 7212022 | DEMOCLIENT | 3977481 | f | colorPreference | Color Preferences | 4313 | Red | 2025-10-31 15:26:50.803603 | 2025-10-31 15:26:50.803361 | USER | |
| 7212203 | DEMOCLIENT | 3977551 | f | colorPreference | Color Preferences | 4323 | Green | 2025-11-04 10:47:23.285432 | 2025-11-04 10:47:23.285193 | USER | |
| 7212383 | DEMOCLIENT | 3977617 | f | colorPreference | Color Preferences | 4314 | Blue2 | 2025-11-06 09:50:41.970046 | 2025-11-06 09:50:41.969815 | USER |
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 |
Client Preferences Export
| id | client_id | key | name | description | visual_type | type | version | created | last_modified | deprecated |
|---|---|---|---|---|---|---|---|---|---|---|
| 538 | DEMOCLIENT | colorPreference | Color Preferences | Choose your favourite color | Radio | 2 | {"date": "2025-08-06T09:32:39.540403294Z"} | {"date": "2025-10-23T15:32:59.524779883Z"} | f | |
| 539 | DEMOCLIENT | contact-preferences-client | Contact Preferences | Choose preferred contact method | Radio | OptIn | 2 | {"date": "2025-08-06T09:58:49.142710698Z"} | {"date": "2025-08-28T11:47:20.664512826Z"} | f |
| 541 | DEMOCLIENT | example-client-preference | Example Client Preference | Test description | Radio | 2 | {"date": "2025-08-06T10:00:20.851294498Z"} | {"date": "2025-08-06T11:52:43.183225892Z"} | f |
Field Descriptions
| Field | Type | Description |
|---|---|---|
id | integer | Unique identifier for the client preference |
client_id | string | Client identifier |
key | string | Unique key identifying the preference type |
name | string | Human-readable name of the preference |
description | string | Optional description explaining the preference |
visual_type | string | Display type for the preference UI (Select, Radio, or Checkbox) |
type | string | Preference classification (OptIn, Global, or null) |
version | integer | Version number, automatically incremented on each update |
created | object | Creation timestamp object containing the date field |
last_modified | object | Last modification timestamp object containing the date field |
deprecated | boolean | Whether this preference has been deprecated and should no longer be used |
Client Preference Options Export
| id | client_id | client_preference_id | value | metadata | linked_ids | version | created | last_modified | deprecated | after |
|---|---|---|---|---|---|---|---|---|---|---|
| 4313 | DEMOCLIENT | 538 | Red | {} | [] | 2 | {"date": "2025-08-06T09:32:39.774663874Z"} | {"date": "2025-08-06T09:32:39.774663874Z"} | f | 4314 |
| 4314 | DEMOCLIENT | 538 | Blue2 | {} | [] | 2 | {"date": "2025-08-06T09:32:39.777383841Z"} | {"date": "2025-10-23T15:32:49.327506734Z"} | f | |
| 4315 | DEMOCLIENT | 539 | Phone | {} | [] | 2 | {"date": "2025-08-06T09:58:49.290779185Z"} | {"date": "2025-08-06T09:58:49.290779185Z"} | f | 4316 |
Field Descriptions
| Field | Type | Description |
|---|---|---|
id | integer | Unique identifier for the preference option |
client_id | string | Client identifier |
client_preference_id | integer | ID of the parent client preference this option belongs to |
value | string | The actual value/label of this option |
metadata | object | Additional metadata about the option (e.g., custom attributes) |
linked_ids | array | External system references (e.g., OPTA_FOOTBALL_TEAM) for linking to other systems |
version | integer | Version number, automatically incremented on each update |
created | object | Creation timestamp object containing the date field |
last_modified | object | Last modification timestamp object containing the date field |
deprecated | boolean | Whether this option has been deprecated and should no longer be available |
after | integer | ID of the option that should appear before this one (defines ordering in UI) |
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 1 month ago
