April - May - June 2026

Admin Controls

Audit logs for User Management

Org owners and administrators can now view, filter, and export a chronological record of User Management actions taken in Intouch — such as adding users, changing permissions, and exporting user lists. The audit log table shows up to 20 events per page and supports filtering by date range (up to 30 days), user, and action type. Security-sensitive events, such as adding an org owner or updating admin permissions, automatically send email notifications to relevant org owners and the affected user. Export the full log set as a CSV file delivered by email.

Documentation link: Audit logs

Engage

Add Test Customers from the Test and Preview Page

Users can now add new test customers directly from the Test and Preview page, not just the campaign settings. This enhancement streamlines the testing process, offering greater flexibility and efficiency for campaign validation. The update improves user workflow by reducing navigation steps and making test customer management more accessible during campaign setup.

Documentation link - https://docs.capillarytech.com/docs/test-and-preview-across-engagement-channels

Wait for Future Event Context Tags in Journey Engagement Blocks

You can now personalize engagement block messages using context tags derived from the Wait for future event block configured in a journey. When a customer performs the specified event and moves to the next step, both entry event-based tags and Wait for future event context tags become available in the engagement block editor. This allows brands to send highly personalized communications based on the customer's actions at each stage of the journey.

Documentation link: https://docs.capillarytech.com/docs/context-based-tags-in-engagement-block

Ignore Unsubscribed Users in Campaign Delivery

You can now send communications to the complete audience list by enabling the Ignore Unsubscribed Users option during campaign configuration. When enabled, the system checks whether users are reachable on the selected channel at the time of delivery and sends the communication even if they have unsubscribed. This helps brands bypass the unsubscribed user flow when required and ensures important communications can still be delivered.

Documentation link: https://docs.capillarytech.com/docs/configure-communication-channel-settings#send-messages-to-unsubscribed-users

Simplified Configuration for Loyalty Value-Based Labels

You no longer need to configure earning or expiry conditions for loyalty labels that only display customer values such as points balance, slab details, purchase values, or upgrade and renewal gaps. These labels can now be used directly in communication templates, making the configuration process simpler and reducing unnecessary setup steps while creating campaigns and journeys.

Documentation link: https://docs.capillarytech.com/docs/engagement-building-block#adding-engagement-block

https://docs.capillarytech.com/docs/create-message#add-incentive-campaign-offerpoints-strategy

Customer Data Platform

Allow reuse of identifiers held by campaign and victim users (V2 API)

Previously, when a V2 API request tried to assign a mobile number, email, or external ID to a customer, the request failed if that identifier was already held by a campaign user (a non-registered user) or a victim user (a merged-away account). This caused registration and profile-update flows to block unnecessarily when the identifier was held by an inactive account.

A new org-level configuration, CONF_ALLOW_CAMPAIGN_AND_VICTIM_USER_IDENTIFIER_REUSE, allows the API to automatically clear the conflicting identifier from the campaign or victim user and assign it to the requesting customer. This applies to mobile, email, and externalId identifiers for source=INSTORE requests. Contact Capillary Support to enable this configuration.

Documentation link: Add or Remove Customer Identifiers

Transaction Update API: Support for Return and Not-Interested Transactions

The v2 Transaction Update API now supports updating extended fields and custom fields for RETURN, NOT_INTERESTED, and NOT_INTERESTED_RETURN transaction types. Previously, only regular transactions could be updated. Use the new type field in the request body to scope the lookup. Note: MIXED transactions are not yet supported.

Documentation link: Update Transaction

GET Locations API — OR-Based q Filter Search

The q parameter in the GET Locations API now combines multiple filter types (name, code, external_id) using OR logic instead of AND. A location matching any one of the provided filters is returned, making it easier to search across multiple criteria simultaneously.

Documentation link: Get Locations

Labels v2 API — Labels and Assignments

The new /v2/labels and /v2/labels/assignments APIs let you create, update, and manage labels for customers, products, and stores, and assign those labels to entities in bulk. Labels support configurable expiry (fixed date or relative duration) and three entity types: CUSTOMER, PRODUCT, and STORE. All operations support batch requests of up to 10 items.

Documentation link: Create Labels

Search Customers by Label — Exact Match and Case-Insensitive

The Search Customers by Label API (GET /v2/customers/labels/search) now performs an exact, case-insensitive match on the label name. Previously the q parameter supported fuzzy and prefix search (for example, pre to find all labels starting with "pre"). Callers must now pass the full label name.

Documentation link: Search Customers by Label

Loyalty+

Concept-level attribution in the Points Ledger API

Brands using multi-concept org hierarchies can now retrieve concept-level attribution for each points ledger entry. Pass includeConceptDetails=true in the request and the API returns the conceptId and conceptName of the concept associated with the store where each transaction occurred.

Documentation link: Get Points Ledger

Reverse redeemed points using an external reference number

You can now reverse redeemed points using an externalReferenceNumber instead of the internal redemptionId. If your system tracks redemptions using an external reference, you no longer need a separate lookup to find the redemptionId before reversing. The two identifiers are mutually exclusive; providing both returns an error.

Documentation link: Reverse Redeemed Points

Cross-member points redemption with FEFO draw order

When cross-member redemption is enabled for a UserGroup2 group, points are now drawn from the combined balance of all group members in FEFO (First Expiry, First Out) order — the earliest-expiring batch across all members is consumed first. The response includes a per-member breakdown showing exactly whose points were used and from which expiry batch. The v1.1 Redeem Points API also now returns is_group_redemption in the response to indicate whether a redemption was processed as a cross-member group redemption.

Documentation link: Redeem Customer Points · Redeem Points (v1.1)

Retrieve cross-member redemption history with the Group Points Ledger API

A new API lets you retrieve paginated cross-member redemption and reversal history for a user group. Filter by scope to view an individual member's activity or the full group's history. Each entry includes a userRole field identifying whether the member initiated the redemption or was a source member whose points were drawn.

Documentation link: Get Group Points Ledger

Partner Program Supplementary Membership Relinking

Brands can now schedule a future-dated membership relinking for customers in supplementary partner programs. Setting a future start date queues the relink to activate automatically on that date. Pending relinks can also be cancelled before they activate using the Update Customer Tier API.

Documentation link: Link Customer to Partner Program

Remove loyaltyProgramEnrollments from Customer API Documentation

The loyaltyProgramEnrollments object and its sub-fields (programId, tierNumber, loyaltyPoints, tierExpiryDate, pointsExpiryDate) have been removed from the request parameter tables and code examples across customer API pages.

Filter Historical Points by Program ID and Activity Type

You can now filter historical points records by loyalty program or activity type (for example, earned or redeemed points), giving you more control over the data you retrieve. Date range filters require a full timestamp with timezone offset — plain date strings are not supported.

Documentation link: Get Historical Points

Reversal Breakdown for Cross-member Redemptions

When you reverse a cross-member redemption, you can now see a breakdown of how the reversed points are returned to each group member who contributed to the original redemption.

Documentation link: Reverse Redeemed Points

Tier Management APIs

You can now create, update, and delete tiers through the API, and manage the full approval process — from submitting a tier for review to approving or rejecting it and tracking pending approvals.

Documentation links: List All Tiers · Get Tier · Create Tier · Update Tier · Delete Tier · Submit Tier for Approval · Approve or Reject Tier · List Pending Tier Approvals

Incentives

Cart promotions: Choose how Fixed-window Limits Reset per Customer

Fixed-window reset periods on cart promotion limits now support a Cycle start date setting with two options: Promotion config date resets all customers on the same shared schedule, and Customer's issuance date starts each customer's cycle from when the promotion was individually issued to them. The issuance date option is available for Loyalty Earning and Code linked promotions and gives every customer an equal redemption window regardless of when they received the promotion.

For more details, refer to Create a Cart Promotion

Activate and Deactivate Cart Promotions

Cart promotions can now be reactivated after being deactivated. The activate and deactivate actions are available from the three-dot menu in the promotions list and are fully reversible, allowing brands to pause and resume promotions without recreating them.

For more details, refer to Manage Cart Promotions

Role-Based Access Control for Incentives

Incentives now supports role-based access control (RBAC), enabling organisations to define granular permissions for the Incentives module. This allows teams to control who can configure and manage incentives based on their role.

Decimal Precision for Rewards catalog

Rewards catalog can now set conversion ratios using decimal values for any reward type that supports the conversion ratio payment mode. This allows you to have the flexibility to create more accurate reward offers, for example, 0.44 miles per point or 0.005 wallet credit per point.

Previously, you were limited to whole numbers, which made it harder to fine-tune your rewards. With this enhancement, you can tailor your point-to-reward conversions to support your business goals better.

For more details, refer to Issue Reward

Increased category limit for coupon series

Coupons now support attaching up to 1,000 product categories to a coupon series, up from the previous limit of 20. With this increase, merchants can use a single coupon series to cover a much broader range of products.

For more details, refer to Create coupon series