‹  Changelog

Preference webhooks and change history API

Emily Lane

Emily Lane

October 14, 2026

Preferences Editor with live preview

Courier now sends a webhook every time a user changes a notification preference, and GET /preferences/logs returns the full change history.

Keep your CRM, warehouse, or marketing tools in step with what users choose, without polling and diffing each user's preferences.

  • A preferences:user:updated event fires when a user opts in, opts out, or changes a topic's channels, whether on the hosted preference page, an unsubscribe link, your in-app preference center, or the API.
  • GET /preferences/logs returns changes newest first, with the previous value where Courier knows it. Filter by user_id or since.
  • The webhook payload and the history entry share the same id, so you can match them and catch up after downtime.
  • Resetting a topic to its default through the API doesn't create an entry, so update your copy when you make that call.

Learn more: Track preference changes · Webhook payload · API reference · Blog post