Each release is tagged by the area of the API it touches. Use the tag filters in the right side panel to narrow the list (for example, Incentives for points, rewards, and benefits changes, or Automation for triggers, automations, and queries).
New features
- Ledger entry origin. Each entry in the ledger now includes an
originobject describing where the holding came from: thetransactionororderit was earned on, another namedsource, theratea point was issued at, anymeta, and, for a redemption, reversal or return, theredemption. When the transaction item has no SKU,originfalls back to the product variant’s SKU. - Redeemed item state on
redemption-item.created. The event payload now includes aredeemableobject with the post-redemption state of the holding:id,type,value_remaining, andexpires_at. See Event contexts. - Filter organisations by location.
GET /v3/organisationsacceptsfilter[locations.id],filter[locations.handle],filter[locations.external_id],filter[locations.external_code],filter[locations.name],filter[locations.type],filter[locations.country_iso_3],filter[locations.is_published], andfilter[locations.is_permanently_closed]to find organisations by the attributes of their associated locations.
Improvements
- Point redemption reversals. Reversing a point redemption refunds the number of points it took, whatever the tenant’s point-to-dollar rate.
- Tier anniversary automation query. The
upcomingTierAnniversaryautomation query matches tiers by anniversary day in the tenant’s timezone, and month-based schedules target each anniversary once per cycle. - Sorting by a relation path. A
sortkey that names a relation path, such assort=tags.handle, is ignored, the same as any other key that isn’t a sort field. See Filtering and sorting.
Breaking changes
- Earlier point and reward records in the default ledger listing.
GET /v3/profiles/{profile}/ledgersnow lists the point and reward records written before ledger entries existed, after the entries, unless you filter. These records have nokind,delta,balance_after,region_idoroccurred_at, appear in every region, and count towards paging andmeta.total. To keep the entries-only response, sendfilter[legacy]=0.filter[legacy]=1still returns only the earlier records.
New features
- Benefit value types. Benefit definitions gain a
value_typefield that says what thevaluerepresents:money,point,count,percent, orother.GET /v3/benefits/definitionsacceptsfilter[value_type]. See Benefits. - A complete balance ledger. The profile ledger now records every change to a spendable balance: issues, redemptions, reversals, returns, expiries, adjustments, region conversions, and merges. Each entry carries
asset,kind, a signeddelta,balance_after,region_id, andoccurred_at, so the ledger reconciles with the profile’s balance. See the breaking changes below. - Sensitive custom fields. Custom fields can be flagged
is_sensitive, or listsensitive_keys(dot paths,*allowed) inside a JSON value. Add?mask_sensitive=1to any endpoint that returns custom fields to mask those values for display. A masked value sent back on update keeps the stored value. See Custom attributes. - Configuration endpoints. Manage core configuration through the API: regions, countries, statuses, currencies, systems, staff, questions, and questionnaires with their pages and question assignments.
GET /v3/benefits/definitions/campaignslists benefit campaigns alongside definitions that have no campaign. redemption-item.createdevent. Raised once for each item in a redemption, with the item, its definition, and the parent redemption. See Event contexts.- Customer-facing location descriptions. Locations gain
short_descriptionandlong_descriptionfor customer-facing copy, separate fromdescription. - Operator filters on more lists. The
filter[field][operator]syntax now works on the profile, tag, location, organisation, region, country, and status lists. See Filtering and sorting.
Improvements
- Reliable pagination links. Pagination links keep your filters, sort, and page size, use
httpson secure connections, and no longer loop back to the first page. - Predictable identity creation.
POST /v3/profiles/{profile}/identitiesreturns200with the existing identity when it is already on the profile, and422when it belongs to another profile, instead of500. See Identities. - Richer list purchase context. The
product-list-item.linkedevent context includes thetransaction_item, thelist_ownerprofile, and theconnectionbetween the purchaser and the list owner. See Lists. - Region for placeholder staff profiles. When a transaction references an unknown staff member, the placeholder staff profile can take its region from the transaction’s location. Enable it with the
shell_staff_region_from_locationtenant setting. - Source-less bonus tier points. Tier points created without a
source_idstore a nullsource_type, andGET /v3/tiers/pointsreturns points with any source type. - One active region per profile. Setting a profile’s active region now reliably deactivates its other regions. See Profile localisation.
- Profile-scoped list endpoints. The
/v3/profiles/{profile}/lists/...endpoints return404when the list, share, or item does not belong to that profile. - Batch resync payloads. Webhooks resent through
POST /v3/webhooks/batch.jsonincludechangeswithresync: true, so consumers process them. - More reliable address writes. Creating and updating profile addresses retries automatically under heavy concurrent writes.
Breaking changes
value_typerequired on valued benefits. Creating or updating a benefit definition with a non-zerovaluenow requiresvalue_type, or the request fails with422. Definitions with no value, or a value of 0, can leave it empty.- Benefit balances count money only.
benefit_balance, and socombined_balance_dollars, now sum only benefits whose definition has avalue_typeofmoney. Valued benefits with novalue_typeno longer count. Setvalue_typeon existing definitions to keep them in the balance. - New ledger response.
GET /v3/profiles/{profile}/ledgersis now paginated, newest first, and returns entries for the profile’s current region (usefilter[region_id]for another region). It also acceptsfilter[asset],filter[kind],filter[occurred_at], andfilter[created_at]. Rows recorded before this release are available withfilter[legacy]=1for reference only; they do not reconcile with balances.
New features
- Move a profile between regions. New endpoints move a profile to another region and convert their tier points and loyalty points into the new region’s currencies.
POST /v3/profiles/{profile}/regions/{region}/switchexecutes the move and acceptsdry_run: trueto preview the outcome, andGET /v3/profiles/{profile}/regions/{region}/switch-previewreturns the points eligible for conversion with suggested rates. Conversions are specified per point definition handle, and any points not listed stay in the original region. See Profile localisation and Points.
Improvements
- Faster redemptions for uncapped benefits. Redemptions against uncapped benefits no longer update the global redemption counter in real time. The total updates within about a minute, improving throughput during high-volume campaigns.
New features
- Filter benefits and points by timestamp. The benefit and point endpoints now accept
filter[created_at]andfilter[updated_at]for precise data extraction. See Filtering and sorting. - Console links in MCP responses. The MCP read tools now return a
navigationobject with direct links to the matching records and sections in Omneo Console.
Improvements
- Referrer tier in referral context. The
invited_byobject in the transaction event context now includes the referrer’stier_handle, so Reactions can issue rewards based on the referrer’s tier. - Centralised exchange rates for point actions. Point-issuing reaction actions can source currency exchange rates from the currency table with a
rate_sourceargument. Thepoint.createandtier-point.createactions now support currency conversion, matching the pluralpoints.createandtier-points.createactions. See Using rates.
New features
important-date.createautomation action. Create or update an important date custom attribute on a profile from a Reaction. See Actions.- Issue-delay alignment on rates. A new
issue_period_boundaryfield on rates aligns time-based issue delays (for example1 days) to thestart_of_dayorend_of_dayof the resulting day in the tenant timezone. - Manual and market currency rates. Currencies can store both a
manual_rateand amarket_ratewith ause_market_rateflag to control which is active, and a newPOST /v3/currencies/batch.jsonendpoint updates market rates for many currency pairs at once. See Currency and regions. - Expanded MCP configuration tools. Read-only MCP tools can now inspect tenant configuration, including profiles, reactions, automations, actions, every definition kind, and core lookups like locations, regions, and currencies. See MCP.
Improvements
- Regional tier fallback. If a profile’s region has no specific tier definitions, the profile now falls back to the common, non-regional tier ladder instead of having no tier. See Tiers.
- Accurate tier point calculation windows. Tier point calculation windows now close at the exact moment of calculation rather than the end of the UTC day, so delayed points do not count toward a maintenance period that has already passed. See Tiers.
- Region-currency settlement. Redemptions and returns now settle in the currency of the profile’s assigned region, keeping them consistent with the profile’s balance. See Incentives overview.
New features
- Reward campaigns and issuance limits. Reward definitions support a
campaignfield for grouping and reporting. Thereward.createaction can enforce issuance limits across a campaign or type usingissue_limit_scope,issue_limit_max, andissue_limit_window. See Rewards. - Inspect notification targets via MCP. A new read-only
read-targetstool lists and inspects notification target configurations. See MCP.
Improvements
- Match transactions by location type. The
transaction.countandtransaction.totalreaction actions accept alocation_typesarray to match transactions from locations of any of the given types. - Check full incentive history. The
incentive.not-receivedaction can check a profile’s entire history by omitting theincentive_daysargument.
New features
next_tier_in_dayson aggregations. Profile aggregations include a bounded (1 to 365) day count until the next tier progress deadline. See Tiers.- Filter credits by spendable status.
GET /v3/profiles/{profile}/creditsacceptsfilter[active], and the Credit resource now returns anis_activeflag. achievement.repeat-unlockedevent. Raised once per transaction for repeating achievements, with a count of how many levels unlocked. See Webhooks.
Improvements
- Region currency everywhere. The
regionobject now includes its configuredcurrencywherever it appears, including on profiles, countries, locations, and definitions. See Currency and regions. - Reward multipliers. The
reward.createaction accepts amultiplierto issue a reward worth a multiple of its definition value, useful for rewarding several achievement unlocks at once. - Custom item scoring on tier points. The
tier-points.createaction supportsitem_amountandcheck_ratearguments for custom item scoring and point definition rates. - No-expiry credits in automatic redemption. Automatic credit redemption now includes credits that have no expiry date.
Breaking changes
- Credit list responses are now a plain array.
GET /v3/credits,GET /v3/locations/{id}/profiles, andGET /v3/profiles/{id}/locationsreturn a root-level array instead of a paginated object; thelinksandmetawrapper has been removed. Update integrations that read these lists. See Credits.
New features
- Per-region balance breakdown. Profile balance responses include a
regionsarray detailing reward, credit, and point holdings for each region, plus any holdings not assigned to a region. See Profile localisation.
Improvements
- Idempotent tier point issuance. The
tier-point.createandtier-point.create.with.regionactions accept an optionalidempotency_keyto prevent duplicate issuance from repeated requests. - Fixed exchange rates in point actions. Point-issuing actions can convert currencies using a fixed
exchange_ratestable supplied in the action configuration. See Using rates. - Richer claimed-transaction context. Claiming a transaction re-raises
transaction-item.createdfor each item with the full profile context. The context now includesis_claimed,transaction.claimed_at, andtransaction.order.meta. See Event contexts. - Referrer details on transaction events. The
transaction.createdcontext exposes aninvited_byobject with the referring profile’s id, email, statuses, and communication attributes, for eligibility checks in referral reward scenarios. See Event contexts.
Breaking changes
- Region-scoped balances and redemptions. A profile’s top-level balance fields (for example
reward_balance,credit_balance) now represent the total spendable in the profile’s current region, not global holdings across all regions. Sum the newregionsbreakdown for the global total. Redemptions are now scoped to the profile’s current region: a profile can spend value issued for their region, or value issued for no specific region. See Profile localisation.
New features
- Associate benefits with a location. Benefits can carry a location at creation, claim, or redemption for attribution and reporting. The
redeem.benefitandbenefit.createactions acceptlocation_id,location_external_id, orlocation_external_code, and the benefit and redemption event contexts now include location data. See Locations.
Improvements
- Retire a region in one call. Regions can be created or updated with an empty
countrieslist, so all countries can be detached at once. - Hourly automation windows. Automations on an hourly schedule now use an hourly query window automatically, simplifying configuration.
New features
- Filter by discount reason. Transactions and orders can be filtered by the reason text on item-level discounts via
filter[discount_reason], with operators includingeq,in,starts_with,contains, andends_with. See Filtering and sorting.
Improvements
- Safer incentive estimates.
POST /v3/transactions/incentive-estimatereturns a422when a trigger contains actions that cannot be safely mocked, and mock runs no longer dispatch real events or webhooks for unmocked actions. See Estimating incentives.
New features
- Record a tier point’s origin. The
tier-point.createaction accepts ametaobject to store custom data with a tier point, such as the rule or custom field that generated it. - Batch tier point issuance. A new
tier-points.create.batchaction issues several tier points from a single event. - Aggregates on redemption groups. The redemption grouping endpoint returns
countandtotalper group and acceptswith_redemptions=0to omit the embedded redemptions for smaller responses.
Improvements
- Faster redemption listings. The redemption grouping and listing endpoints page through large datasets faster. See Redemption.
- Faster benefit lists. The
benefits/claimable,benefits/viewable, andbenefits/visibilityendpoints apply more filters at the database level. See Benefits.
New features
- Partial import results. A partially successful import now reports a
COMPLETED_WITH_ERRORSstatus, and new endpoints list and export the rejected rows:GET /v3/imports/{import}/failuresandPOST /v3/imports/{import}/failures/export. The newImportFailureresource gives each rejected row’sline,external_id, andmessage.
Improvements
- Notification offsets on incentives. Benefits, credits, and rewards accept
notify_extend_offset_daysandnotify_extend_offset_hour, required when a reminder or extension target is configured. See Incentive notifications. - Wider phone number validation. Phone validation recognises newly allocated ranges, such as Australia’s
+61494block.
Breaking changes
price_sellrequired on order items. Creating or updating order items now requiresprice_sellto keep transaction data consistent.
New features
- Benefit reclaim cooldown. A new
reclaim_after_daysfield on benefit definitions sets a cooldown before a reclaimable benefit can be issued again. See Benefits.
Improvements
- Custom fields on transaction intake. Custom fields are accepted on all transaction intake endpoints and are available for incentive evaluation during dry runs.
- Dry runs for
benefit.create. Thebenefit.createaction supports dry runs, previewing a benefit’s value and expiry without persisting data. See Estimating incentives. - Secondary phone on profiles. Profiles accept a
secondary_phonevalue. See Core fields. - Leap-year birthday benefits. Birthday benefits for profiles with a 29 February birthday now trigger in non-leap years.
New features
processed_counton imports. The Import resource reports the total number of rows processed by a job.- Fuller appointment event context. The appointment event context now includes the full
appointmentDefinition,location, andassignedStaffobjects. See Appointments and Event contexts. - Birthday automation lead time. Upcoming-birthday automation queries support a lead time in months, and a new
upcomingBirthMonthquery targets all profiles with a birthday in the current month. - Points detail on transaction events. The
transaction.points.issuedcontext includes apointsarray detailing each point created. See Event contexts. taskableon automations. Thetaskableflag is exposed via the API to read, update, and filter. See Automations.
Improvements
- Profile context embedded on tier events. The
tier-point.createdandtier.progressedpayloads embed the fullprofilecontext, removing a separate lookup. See Event contexts. - More filterable models. Interactions can be filtered by
location_idand profiles bytransaction_count. See Filtering and sorting.
Breaking changes
tier-point.creatednow carries aTierPointcontext. The event payload changed from aTiercontext to aTierPointcontext, andsource_idandsource_typeontier.progressedandtier-point.createdare now populated where they were previouslynull. Update integrations that consume these events. See Event contexts.
New features
- Project tiers with future-dated points. A profile’s tier can be calculated taking future-dated tier points into account, giving more accurate projections. Pending tier points now process every 10 minutes for faster tier and balance updates. See Tiers.
Improvements
- Link transactions to their order. Transactions can be linked to their originating order via an
order_idfield, andGET /transactionscan filter byfilter[order_id].
Improvements
- Identify locations by external reference. Endpoints such as redemptions and appointments now accept
location_external_idorlocation_external_code, removing the need to know the internallocation_id. See Locations. - Optional
staff_id. Thestaff_idfield is now nullable in several requests, so it can be omitted. - Documented validation responses. The API specification now documents the
422 Unprocessable Entityresponse for endpoints that validate input.
New features
- Custom fields on connections. New CRUD endpoints manage custom fields on connection resources at
/v3/connections/{connection}/custom-fields, so connection-specific metadata can be stored and retrieved.
Improvements
- Discoverable query parameters. Browse endpoints now publish their filterable, sortable, and searchable attributes in
api.jsonfor automated discovery. See Filtering and sorting. - Explicit tier-gift order. Tiered benefit replacement mappings accept an explicit
sort_orderon each mapping, making the hierarchy independent of array order. See Benefits. - Filter by custom fields. Locations and profiles can be filtered by
filter[custom_field], and both resources now return and accept acustom_fieldsarray. See Custom attributes.
New features
- Self-descriptive query parameters. The API specification formally documents the
filter,sort, andsearchparameters for all collection endpoints. See Filtering and sorting.
Improvements
- Trim benefit-definition responses.
GET /v3/benefits/definitionsaccepts a comma-separatedexcludesparameter to omit costly fields (tags,region,total_global_created,same_campaign_count) for faster responses on large page sizes. See Benefit definition. x-omneo-filtersin the spec. Collection endpoints now include anx-omneo-filtersblock in the OpenAPI specification, detailing the available filter, sort, and search attributes.
New features
- Tag audiences by campaign. Group definitions accept a
campaignfield so audiences can be tagged and filtered by marketing campaign. See Groups.
Improvements
- Timezone on points. Points accept an optional
timezonefor more accurate time-based calculations and expiry. - Update access token scopes. Personal access token scopes can be updated after creation. See API tokens.
New features
benefit.replaceaction. A new reaction action swaps a member’s tier gift when their loyalty status changes: it retires the current gift (only when it is not expired and not redeemed) and issues the gift matching the new status on the same expiry, and issues directly when there is nothing to retire. Which gift maps to which status is config-driven through amappingslist of{ handle, condition }evaluated against the profile. See Benefits.- Duplicate automations and triggers.
POST /automations/{id}/duplicateandPOST /triggers/{id}/duplicateclone a Reaction and all of its actions into a new inactive copy, ready to edit and switch on. See Automations. - Conditional reward expiry. Reward definitions gain
extend_days_conditionandexpiry_conditionfields (evaluated against the receiving profile), so expiry and extension length can vary by tier, region, and more, falling back to fixed settings when a condition is unset. See Rewards.
Improvements
- Tier anniversary job in tenant timezone. The daily tier anniversary job runs in the tenant timezone (default Australia/Melbourne) instead of UTC, so anniversary reviews and maintenance fire at the correct local day boundary. See Tiers.
New features
- Auto-confirm appointments. Appointments booked against auto-confirm booking types are confirmed automatically on creation, with the confirmation time recorded. See Appointment definitions.
- Linked records on appointment events. Appointment event payloads now embed their linked records, each connected profile or product list with full detail, so integrations get the complete picture in one event. See Event contexts.
Improvements
- Clearer dry-run outcomes. Automation dry runs report a precise per-profile outcome,
success,excluded,failed, orno_op, and results can be filtered by status. See Automation dry run result.
New features
- Advanced automation queries. Automation queries support raw database queries in the automation builder for highly specific workflows.
Improvements
- Track connection origins. The source of new connections can now be identified, making audience growth easier to attribute.
- Richer appointment data. Appointments carry additional data points for tracking and integrations.
New features
- Richer appointment definitions. Appointment definitions gain short and long descriptions, an icon, a banner image, terms and conditions, internal notes, and a
visibility_conditionrule to control who each appointment type is shown to. See Appointments. - Appointment visibility endpoint.
GET /v3/profiles/{profile}/appointment-definitions/visibilityreturns only the appointment types a given customer is eligible to book. See Appointments.
Improvements
- Expanded API reference. The API specification now documents 35 additional endpoints, including groups, questionnaires, automation dry runs, profile appointments, and target preview, with a check that keeps
api.jsonaligned with the live routes. See Automation dry run result.
Removed
- Deprecated endpoint
GET /tenants/custom-fields/{customField}/versionshas been removed.
New features
- Dry run results API. Access, filter, and delete the results of automation dry runs programmatically through a new endpoint. See Automation dry run result.
New features
- Automation dry runs.
POST /automations/{id}/triggeracceptsdry_run: true, with an optionalnow(Y-m-d) or astart_dateandend_daterange to simulate a period. A dry run targets the same profiles as a live run and records, per profile, which actions would fire and their result, without persisting records, firing events, or issuing rewards or points. Initial coverage is reward and point or tier-point creation. See Automations and Reactions. - Profile trading hours. Full CRUD for a profile’s normal hours (
/v3/profiles/{profile}/normal-hours) and special hours (/v3/profiles/{profile}/special-hours), plus updating an appointment definition’s normal hours. See Appointments. - Batch tier recalculation.
POST /v3/profile/tiers/calculate/batch.jsonrecalculates the tiers of a set of profiles asynchronously, with single-profile recalculation also available. See Tiers and Profile tier.
Improvements
- Filter redeemables by definition. Redemption items can be filtered by
filter[redeemable_definition_id]combined withfilter[redeemable_type]ofbenefit,reward,point, orcredit. - Faster transaction and benefit-definition lists. Transaction history and benefit-definition listings load faster at scale. See Transactions.
- Consistent location types. A location’s
typeis stored in lower case regardless of the casing supplied, preventing case-based duplicates. See Locations.
New features
- Target template preview. Render a target’s Twig template against a chosen resource (profile, transaction, order, reward, and more) and get the processed payload, or the exact error, back on demand, for building and debugging custom event templates in isolation. See Targets.
- Create and update interactions. New
POSTandPUTendpoints create and edit profile interactions, which were previously read-only; both require theupdate-profilesscope. See Profile interaction. - Staff statuses. Staff create and update accept and sync a
statusesarray, matching profile behaviour. See Tags and statuses.
Improvements
- Richer rating events. Rating event payloads include the profile’s first name, last name, and email. See Product ratings.
- Transaction item fallback id.
variant_external_idon transaction item events falls back to the product variant’s external id when the item has none of its own. See Event contexts.
Breaking changes
- Paginated access token listing.
GET /v3/auth/access-tokensis now paginated with filtering and sorting, and its response moves to the standard{ data, meta, links }envelope. Clients must readdata. See API tokens.
New features
- Advanced profile groups. Create dynamic and static groups across a wider range of attributes, including favourites, for more flexible segmentation and targeting. See Dynamic groups.
- Check prior incentives in automations. A new action checks whether a customer has received a specific incentive within a given timeframe, helping avoid duplicate offers.
- Tier points on returns. Tier point calculations handle product returns, with options to configure how and when points adjust for returned items. See Tiers.
- Automation catch-up. A catch-up process retroactively applies automations to profiles that a scheduled run would otherwise miss.
New features
- View profile appointments and update organisations. New capabilities read a profile’s appointments and update organisation details.
- Target by highest status in a group. A new automation action targets profiles by the highest status within a group.
Improvements
- Discount reasons in daily spend automations. Daily spend automation queries support including discount reasons.
- Archive variants with a product. Archiving a product now archives its variants automatically, keeping the catalogue tidy.
Improvements
- Custom data per achievement level. Add custom data to each level of an achievement to build more varied programs.
- Enhanced rating context. Ratings carry richer context and data for more relevant feedback.
New features
- Product rating events. Track and respond to new product rating events. See Webhooks.
- Exclude discounted items. A new filter excludes discounted items from results. See Filtering and sorting.
Improvements
- Refined tier point model. The model for calculating tier points is more accurate.
- Faster address updates. Updating addresses is quicker and more reliable.
- Better product estimate handling. Product estimate requests are handled more efficiently.
New features
- New identity endpoint. A new endpoint improves management of profile identities. See Profile identity.
Improvements
- Public appointments endpoint. The appointments endpoint is publicly accessible, making it easier to integrate with scheduling tools.
- Filter by
definition.type. Query results can be filtered bydefinition.typefor more granular control. See Filtering and sorting.
New features
- Tier points by source. View tier points by their original source, such as a specific transaction, making it easier to track how they were earned. See Points.
Improvements
- Clickable links in questions. Links included in questionnaire questions are now clickable.
- More accurate appointment slots. Available appointment slots are calculated and displayed more accurately.
New features
- Earn tier points from benefits. Interacting with specific benefits can now contribute toward tier points, opening up new ways to reward engagement beyond purchases. See Benefits and Points.
- New
not_inandnot_hasfilter operators. More precise audience segmentation against profile and automation queries. Available across automation queries and profile filters. - Broader interaction tracking. Additional interaction types are now captured against profiles. See Interactions.
Improvements
- Future-dated benefits are now hidden from display until they activate. Customers only see benefits they can redeem right now. See Benefits.
- Tier status now includes pending points. A profile’s tier surface returns both confirmed and pending point totals, giving a more accurate live view of progress toward the next tier. See Tiers.
- Faster product list loading across product lists and list items.
Improvements
- Profile location. Refined the new profile location surface for better performance. See Profile localisation.
New features
- Product estimate endpoints. New API endpoints to retrieve product estimates before a transaction is committed. See Products.
- Bulk benefit export. Benefits data can now be exported as a CSV from Console.
Improvements
New features
- Batch update custom attributes and regions. Update custom attributes and regions for many profiles at once via the Batch endpoints.
- Advanced profile validation filtering. Profile validation rules accept richer filter expressions for more granular targeting.
Improvements
expires_atincluded in profile status context. Status payloads now carry expiry information directly. See Statuses.
New features
- Per-profile rule controls. Apply rules to individual profiles to govern how they interact with the platform. Useful for managing exception cases that need specific treatment without deleting or depersonalising the record. See Profile statuses.
New features
- Benefit visibility endpoint. New endpoint
GET /v3/profiles/{profile}/benefits/visibilityreturns the benefit definitions a profile is currently allowed to see, based on the definition’svisibility_condition. See Benefits and Profile benefit.
Improvements
- Country search by full name. Country lookups accept either the country code or the full name. See Country.
- Protected join date and join location. A profile’s original join date and join location are now immutable once set, preserving the integrity of cohort and tenure reporting. See Profile core fields.
- Consistent redemption list sorting. Redemption and Redemption item lists sort consistently by ID.
New features
- Programmatic audit creation. A new endpoint allows saving an audit entry programmatically, making audits accessible to integrations and automations. See Audit.
Improvements
- Stock accuracy on product variations. Only product variants with available stock are returned in stock-aware contexts.
New features
- Redemption data endpoints. New endpoints to retrieve redemption and redemption item data.
benefit.expiredwebhook event. A new event fires when a profile’s benefit expires, so integrations can react automatically. See Webhooks and Benefits.
Improvements
- Leaner tier definition payloads. Tier definition responses now omit fields that integrations rarely use, reducing payload size.
updated_atrefreshes on address change. A profile’supdated_attimestamp updates when one of its addresses is modified.- More sortable lists. Additional list endpoints accept sorting by ID.
- Reward expiration accuracy. Improved calculation of reward expiry dates.
New features
- Region on profile attributes. Profile attribute payloads now accept a
region, enabling region-aware personalisation. See Profile localisation and Profile region. - New automation actions. A new system action, plus enhancements to the create-tier-point action. See Reactions and Tier point.
Improvements
New features
- Issue multiple credits in one call. Specify a quantity and value to issue several credits in a single request. See Credits and the Credit endpoints.
- Filter daily spend aggregations by product tag. Profile aggregations can now be sliced by product tag.
- New automation query for daily spend by tag. Trigger actions when a profile’s spend on tagged products crosses a threshold. See Automation query.
New features
- Custom date attributes on profiles. Track milestones and anniversaries with profile date attributes, including events when those dates change. See Custom attributes and Profile dates attribute.
New features
- Targeted product reservations. Offer product list reservations to specific customer segments rather than the full audience. See List reservations.
- List expiration dates. Set an expiry date on a list to manage time-bound campaigns. See Lists.
Improvements
- Reservation event tracking. The reservation lifecycle now emits clearer events for downstream automations.
- Smoother redemption flow. Reward and benefit redemption is more reliable. See Redemption.
New features
- Check profile status action. A new automation action to look up and verify a profile’s status. See Profile statuses.
- Custom transaction event trigger. Fire a named event with the transaction context, optionally with a custom payload. Available from a Reaction or via the Artisan command surface.
DispatchProfileTransactionEventaction. Finds a profile’s transactions (optionally within a date range), filters them with JsonLogic, and dispatches a custom event for each match. See Automation action.get_dateJsonLogic operator. Returns a datetime string based on a base date with optional offset, timezone, UTC conversion, and start- or end-of-day flags. Useful for building date-aware automation queries. See Automation query.
Improvements
- Exact-match numeric condition. Build precise rules by matching a number field to an exact value in automation queries.
New features
- Incentive estimate endpoint. Preview the value of incentives that would apply to a profile before issuing them. See Incentives overview.
- Expanded auditing. The audit surface now captures a more complete history of profile changes. See Audit.
- Automated achievements. Configure achievements to be awarded automatically as part of daily automations.
New features
- Bulk tag management. Add or remove profile tags on many profiles in a single API call. See Tags and statuses.
- Returns tracking. Flag individual transaction items as returns and run a daily automation that aggregates total return value per profile. See Transactions and Return strategy.
- Tier and point definition events. New events fire when a tier definition or point definition is created or updated, enabling more automation workflows.
Improvements
New features
- Separate email and SMS consent preferences. Manage email and SMS opt-in independently. See Comms preferences.
Improvements
- Filter profiles by credit and custom attribute data. Richer expressions are accepted on the Profile browse endpoint.
- Date searching on custom dates. More flexible date queries against profile date attributes.
New features
- Streamlined create-connection action. A single action creates a connection between two profiles, replacing a multi-step flow.
Improvements
- Currency and region on incentives. Incentives can carry currency and region context for cleaner multi-market campaigns. See Incentives overview.
New features
accrued_attimestamp on points. Each point and tier point now carries the exact accrual datetime, giving precise tracking of loyalty activity. See Profile point.- Point redemption ignores future-dated points. Points with an
issued_atin the future are excluded from redemption calculations until they activate.
New features
- Referral tracking. A profile now exposes the total number of customers it has referred. Referrals are modelled on connections.
New features
- Compare date fields against each other. Automation queries now support cross-field date comparisons, enabling rules like “last purchase older than last visit”.
New features
- Issue credits to a profile. Create credits directly against a profile. See Credit.
- Share a status. Share a profile’s status for collaboration across staff. See Share and Statuses.
- Delete a specific profile identity. Remove a single identity from a profile without affecting the rest.
Improvements
- More expressive automation rules. The rules engine now supports a wider set of expressions for Reactions.
New features
- Sharing and incentives. A new system for sharing items between profiles and claiming incentives off the back of a share. See Product list share and Lists overview.
- Location-based redemption. Rewards can be redeemed at specific locations. See Redemption.
Improvements
- Tier change history on profiles. Tier transitions are recorded against the profile, so you can reconstruct a status journey. See Tiers.
- Better interaction tracking. More interaction signals are persisted against the profile. See Interactions.
- Reference linking on transactions. Transactions can carry references to related transactions for improved history and tracking.
New features
- Distinguish imported vs system-generated credits. Credit records carry a source marker so you can separate platform-issued credits from migrated balances.
claimedstatus on transactions. Transactions now expose aclaimedstatus, giving clearer insight into the claim lifecycle.- Status group tracking in audits. Audit entries now record status group changes alongside the underlying status change.
New features
- Custom transaction events. Define custom events tied to a transaction context, useful for triggering bespoke loyalty logic. See Reactions and Tier point.
Improvements
- Connection context includes custom attributes. The connection event payload now carries the connector’s and connected profile’s custom attributes. See Connections.
- Tier points in transaction responses. The Transaction response now includes tier point allocations resulting from that transaction.
New features
- More granular custom data deletion. New options for deleting custom data on a profile. See Deletions, purges, and depersonalisations.
- Redemption updates the benefit definition counter. When a redemption item is created against a benefit, the parent benefit definition’s total redemption count updates automatically.
Improvements
- Benefit expiry in days. Benefit definitions accept an expiry expressed as a number of days from issue.
- Profile updates synced across regions. Cross-region profile updates land more reliably. See Profile region.
New features
- Profile origin tracking. A profile now records the staff member who created it, adding accountability to manual sign-ups. See Staff.
Improvements
- Credit descriptive attributes. Credits now carry additional descriptive metadata for clearer reporting.
- Batch profile processing. Improved throughput when working with large batches of profiles, plus more intuitive status sorting. See Batch.
- Searchable benefit definitions. Benefit definitions are now searchable by name and key fields.
New features
- File upload for imports. Submit an import by uploading a file directly, in addition to the existing JSON payload pattern.
- Batch import job processing. A new endpoint processes import jobs in batches for faster large-scale ingestion. See Batch.
Improvements
- More expressive automation arguments. Automations accept a richer argument shape for greater control inside scheduled flows.
- Updated credit search response. Credit search responses use a refined shape for cleaner integration.
New features
- New automation query type. Automation queries can now run against model contexts other than profile, opening up new automation patterns.
- Auto-expire reservations. A new daily automation clears expired product list reservations.
Improvements
New features
- Edit the profile on a credit. Reassign a credit to a different profile for administrative correction. See Credit.
- Update rewards by re-uploading an import file. Modify existing rewards by submitting an updated import.
Improvements
- Wider date format recognition. Date validation accepts a broader set of input formats, reducing import errors.
- System-generated profile updates do not trigger webhooks. Integrations only see webhook events for genuine customer or staff activity, not internal platform updates.
New features
- Saved search filters. Save a frequently used filter set and reuse it. See Saved filter.
New features
- Spend limits on point accrual. Cap the amount of spend that contributes toward earning points. See Point definition and Points.
- View redeemable benefits. A new endpoint surfaces all currently redeemable benefits for a profile. See Profile benefit.
- Custom handles for locations. Identify locations using custom handles in API requests.
New features
- Custom fields on product list items. Attach custom fields to product list items, with a reusable reference rule that resolves products from
namespace:handle:value. - New trigger events. Reward definition, country, and list definition lifecycle events are now available as triggers.
- Product list deletion events. Product list and list item deletions now emit dedicated events.
New features
- Profile staff linking. Profile create and update endpoints now accept
preferred_staff_idandjoined_staff_id, so you can attach preferred and onboarding staff in a single request. Identify the staff member with either a staff profile UUID or anidentityHandle:identifierpair. See Staff and Connections. - Staff metadata in responses. API responses and domain events return detailed staff metadata (name, email, identities) so downstream systems stay informed.
- Automatic preferred staff and joined staff connections. The profile observer creates, updates, and removes the Preferred Staff and Joined Staff connection records automatically whenever those attributes change.
- Default staff connection definition. A baseline
staffconnection definition ships with every environment.