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


idclientuser_idanonymouspreference_keypreference_namepreference_option_idpreference_option_valuepreference_option_metadatacreated_atlast_updatedlast_updated_by
7212022DEMOCLIENT3977481fcolorPreferenceColor Preferences4313Red2025-10-31 15:26:50.8036032025-10-31 15:26:50.803361USER
7212203DEMOCLIENT3977551fcolorPreferenceColor Preferences4323Green2025-11-04 10:47:23.2854322025-11-04 10:47:23.285193USER
7212383DEMOCLIENT3977617fcolorPreferenceColor Preferences4314Blue22025-11-06 09:50:41.9700462025-11-06 09:50:41.969815USER

Field Descriptions:

FieldTypeDescription
idintegerUnique identifier for the user preference record
clientstringClient identifier
user_idintegerUser identifier in your system
anonymousbooleanWhether this is an anonymous user preference
preference_keystringUnique key identifying the preference type
preference_namestringHuman-readable name of the preference (from joined client_preference table)
preference_option_idintegerID of the selected option
preference_option_valuestringValue of the selected option (from joined client_preference_option table)
preference_option_metadataobjectAdditional metadata about the option including visual type and description
created_atstringTimestamp when the preference was first set
last_updatedstringTimestamp of the last modification
last_updated_bystringSystem or portal that made the last update

Client Preferences Export

idclient_idkeynamedescriptionvisual_typetypeversioncreatedlast_modifieddeprecated
538DEMOCLIENTcolorPreferenceColor PreferencesChoose your favourite colorRadio2{"date": "2025-08-06T09:32:39.540403294Z"}{"date": "2025-10-23T15:32:59.524779883Z"}f
539DEMOCLIENTcontact-preferences-clientContact PreferencesChoose preferred contact methodRadioOptIn2{"date": "2025-08-06T09:58:49.142710698Z"}{"date": "2025-08-28T11:47:20.664512826Z"}f
541DEMOCLIENTexample-client-preferenceExample Client PreferenceTest descriptionRadio2{"date": "2025-08-06T10:00:20.851294498Z"}{"date": "2025-08-06T11:52:43.183225892Z"}f

Field Descriptions

FieldTypeDescription
idintegerUnique identifier for the client preference
client_idstringClient identifier
keystringUnique key identifying the preference type
namestringHuman-readable name of the preference
descriptionstringOptional description explaining the preference
visual_typestringDisplay type for the preference UI (Select, Radio, or Checkbox)
typestringPreference classification (OptIn, Global, or null)
versionintegerVersion number, automatically incremented on each update
createdobjectCreation timestamp object containing the date field
last_modifiedobjectLast modification timestamp object containing the date field
deprecatedbooleanWhether this preference has been deprecated and should no longer be used

Client Preference Options Export

idclient_idclient_preference_idvaluemetadatalinked_idsversioncreatedlast_modifieddeprecatedafter
4313DEMOCLIENT538Red{}[]2{"date": "2025-08-06T09:32:39.774663874Z"}{"date": "2025-08-06T09:32:39.774663874Z"}f4314
4314DEMOCLIENT538Blue2{}[]2{"date": "2025-08-06T09:32:39.777383841Z"}{"date": "2025-10-23T15:32:49.327506734Z"}f
4315DEMOCLIENT539Phone{}[]2{"date": "2025-08-06T09:58:49.290779185Z"}{"date": "2025-08-06T09:58:49.290779185Z"}f4316

Field Descriptions

FieldTypeDescription
idintegerUnique identifier for the preference option
client_idstringClient identifier
client_preference_idintegerID of the parent client preference this option belongs to
valuestringThe actual value/label of this option
metadataobjectAdditional metadata about the option (e.g., custom attributes)
linked_idsarrayExternal system references (e.g., OPTA_FOOTBALL_TEAM) for linking to other systems
versionintegerVersion number, automatically incremented on each update
createdobjectCreation timestamp object containing the date field
last_modifiedobjectLast modification timestamp object containing the date field
deprecatedbooleanWhether this option has been deprecated and should no longer be available
afterintegerID of the option that should appear before this one (defines ordering in UI)


Best Practices

  1. Differential Processing: Exports are differential by default. Design your integration to process incremental updates and maintain a local copy of the full dataset
  2. First Export: The first export will contain all historical records. Subsequent exports will only include changes
  3. Data Processing: Always validate the JSON structure before processing exports
  4. Error Handling: Implement retry logic for failed export retrievals
  5. Monitoring: Set up alerts for missing or delayed exports
  6. Date Handling: All timestamps are in UTC; convert to your local timezone as needed
  7. Null Handling: Be prepared to handle null values in optional fields like last_updated_by and joined fields
  8. Anonymous Users: Check the anonymous flag 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