April 21, 2026

Batch events body wrapper, contact merge ID response, and loyalty transaction filter

Breaking changes

  • Batch track events (POST /events/batch) — The request body schema has changed. The array of events must now be wrapped in an object under an events key. Previously accepted: [{...}, {...}]. Now required: {"events": [{...}, {...}]}. Additionally, event_name and identifiers are now explicitly marked as required fields on each event object.

Added

  • Create contact (POST /contacts) — New getId field (boolean, default false). When set to true alongside forceMerge: true, the response includes the id of the surviving contact after the merge. Useful when you need to reference the retained contact record immediately after creation.
  • Loyalty transaction history (GET /loyalty/balance/programs/{pid}/transaction-history) — New loyaltySubscriptionId query parameter for filtering transaction history by a specific loyalty subscription.