> For the complete documentation index, see [llms.txt](https://help.openloyalty.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.openloyalty.io/whats-new/2026.md).

# 2026

{% hint style="success" %}
**📡 Stay up to date** — Subscribe to the RSS feed to get notified whenever new releases are published.
{% endhint %}

#### July 2026

{% updates format="full" %}
{% update date="2026-07-21" tags="new-feature,enhancement" %}

## Tier Analytics

A new analytics view for Tiers shows how members flow between tiers over time — how many upgraded, how many downgraded, and how many stayed. The interactive chart supports Isolation Mode for low-volume tiers, configurable timeframes, tier filters (up to 6 at once), and display settings like showing values on the static view or de-emphasizing same-tier flows.

**Why it matters:** Loyalty program managers can finally see tier movement at a glance — spotting upgrade momentum, churn, or downgrade patterns — without exporting data or building a separate report.

👉 [Learn more about Tier Analytics](/main-features/tiers/tier-analytics.md)
{% endupdate %}

{% update date="2026-07-09" tags="new-feature,enhancement" %}

## 🏷️ Custom Attributes on Campaign-Generated Unit Transfers

Point transfers created automatically by campaign "Add Units" effects can now carry custom attributes. Attributes are defined in the campaign configuration and are automatically applied to every transfer the campaign generates.

**Why it matters:** Reporting and reconciliation pipelines that need to tag point movements with business metadata — such as campaign type, budget category, or source — can now receive that context directly on campaign-generated transfers, without relying on manual transfers or post-processing.

👉 [Learn more about Campaigns](/main-features/campaigns.md)
{% endupdate %}
{% endupdates %}

<details>

<summary>More July updates</summary>

**⚙️ Enhanced**

* **Member timeline, Audit Logs, and Custom Events** — Default date range extended from 30 to 60 days; a new "All" option in the timeline view lets admins see a member's full history without a date limit
* **Navigation RBAC** — Menu items that a user does not have VIEW permission for are now hidden from the navigation

**🛠️ Fixed**

* Segment member count remaining incorrect after a member is deleted when incremental segment statistics are enabled

</details>

***

#### June 2026

{% updates format="full" %}
{% update date="2026-06-25" tags="new-feature" %}

## ⚡ Points Were Activated Campaign Trigger

Campaigns can now fire automatically the moment a member's pending unit transfers transition to active. Use this trigger to reward members as soon as enough stamps clear, kick off a follow-up campaign, or push any downstream workflow that depends on freshly activated points.

**Why it matters:** Loyalty workflows that previously had to poll for balance changes or use workarounds can now react instantly to the activation event — enabling more responsive, event-driven experiences without custom integration overhead.

👉 [Learn more about Campaigns](/main-features/campaigns/campaigns-and-referral-campaigns/creating-campaigns/trigger-types/internal-event.md#supported-internal-events)
{% endupdate %}

{% update date="2026-06-12" tags="enhancement" %}

## 🔄 Cancel Order Support

Return transactions can now automatically cancel the associated unit transfers, reversing points earned on the original purchase when a return is processed.

**Why it matters:** Loyalty programs handling product returns no longer need manual point corrections — submitting a return transaction triggers automatic reversal of the points, keeping member balances accurate without any extra admin work.

👉 [Learn more about Campaigns](/main-features/campaigns/campaigns-and-referral-campaigns/creating-campaigns/trigger-types/return-transaction.md)
{% endupdate %}

{% update date="2026-06-05" tags="enhancement" %}

## 🏆 Leaderboard Sub-Groups

Leaderboards can now optionally group participants into independent sub-rankings by address field (postal code, city, province, or country) or by a custom attribute. Each group maintains its own Top-1000 ranking and its own reward distribution.

**Why it matters:** You can run localized competitions within a single leaderboard campaign — members compete against peers in their city or group rather than the entire member base, driving more relevant engagement.

👉 [Learn more about Leaderboards](/main-features/leaderboards.md)
{% endupdate %}
{% endupdates %}

<details>

<summary>More June updates</summary>

**⚙️ Enhanced**

* **Unit Transfers list** — Removed "Expired On" column and added descriptive tooltips to column headers for improved readability

**🛠️ Fixed**

* Challenge edit form — trigger condition value disappearing when the form is re-opened for editing
* Unit transfer timestamps — timezone conversion issue affecting microsecond-precision sorting
* Segment form — incorrect layout for "Custom event within last N days" criterion
* Admin panel — infinite React update loop causing crashes on certain member views
* Webhook PUT request — false validation error raised incorrectly on update
* Member Overview — Latest Activity panel not refreshing when the filter is changed
* PATCH Member API — 409 Conflict error on custom field update caused by a duplicate key violation

</details>

***

#### May 2026

{% updates format="full" %}
{% update date="2026-05-06" tags="integration,new-feature" %}

## **WalletBalanceUpdated Webhook**

A new `WalletBalanceUpdated` webhook event fires whenever a member's wallet balance changes, enabling real-time downstream integrations to stay in sync without polling.

**Why it matters:** Any system that tracks points balances externally — mobile apps, CRMs, data warehouses — can now react instantly to wallet changes instead of polling or reconciling.

👉 [Learn more about Webhooks](/main-features/webhooks/what-triggers-a-webhook.md)
{% endupdate %}
{% endupdates %}

<details>

<summary>More May updates</summary>

**⚙️ Enhanced**

* **"Show legacy campaigns" toggle** — Campaigns listing now defaults to hiding migrated legacy campaigns; use the toggle to show them when needed
* **Spanish translations** — Missing Spanish UI strings have been added across the admin panel

**🛠️ Fixed**

* Pagination reset sort order to oldest-first when navigating to next page across multiple list views
* Validation message not shown on invalid Custom Attribute keys on member profile
* "Name" filter on Tier Sets list was not working correctly
* Static segments not rebuilding on recalculation trigger
* S3 challenge progress export — total count mismatch in reconciliation reports (count was including challenge progresses that the export excluded)

</details>

***

#### April 2026

{% updates format="full" %}
{% update date="2026-04-07" tags="wallets,new-feature,enhancement" %}

## **⏱️ Unit Transfers Mass Actions — Set/Delete Expiration Date**

Admins can now set or remove expiration dates on multiple unit transfers at once using mass actions, directly from the transfers list.

**Why it matters:** Managing expiry across large member bases previously required individual edits. This change makes bulk expiry management practical at scale.

👉 [Learn more about Managing Unit Transfers](/main-features/wallets/unit-transfers/managing-unit-transfers.md#bulk-actions)
{% endupdate %}
{% endupdates %}

<details>

<summary>More April updates</summary>

**🆕 Added**

* **"Copy to different tenant" for Challenges** — Quickly replicate challenge configurations across tenants from the Challenges listing
* **"Challenges" tab in Config duplication** — Challenges are now included in the Global Management config duplication workflow
* **"Download JSON" for Challenges** — Export challenge configurations as JSON directly from the listing view
* **Card number field hint** — When LCN auto-generation is enabled, the card number field displays as disabled with an explanatory hint in Member form
* **Global validation for Custom Attributes** — Empty values are now blocked on save across all Custom Attribute inputs

**⚙️ Enhanced**

* **"Migrated" pill moved to Name column** — In the Campaigns listing, the pill indicating a migrated Referral campaign now appears next to the campaign name (with a tooltip link to the corresponding Challenge)
* **Hide Custom Fields section** in Member form when no custom fields are configured
* Badge icon updated in Badges empty state view
* Migration Guide documentation for Achievements → Challenges

**🛠️ Fixed**

* Event frequency limit displayed incorrectly on single Challenge view when set to "1 in total"
* Transaction UUID shown instead of Document Number on single transaction view
* Empty string values were incorrectly accepted for Labels in PATCH Member API
* Challenge progress not refreshed after adding a transaction for a migrated achievement campaign
* Incorrect calculation of cumulative earned units in Tier Progress for member
* Missing date interval filter on member's custom events view
* Wallet Type detail view now displays the correct wallet name
* Challenge campaigns no longer incorrectly shown in direct campaign list with broken editing
* Fixed reward coupon creation/editing with "on a specific date" expiration rule
* Fortune Wheel import option no longer selectable (not supported, but was available in UI)

</details>

***

#### March 2026

{% updates format="full" %}
{% update date="2026-03-03" tags="challenges,enhancement" %}

## **🔄 Achievements → Challenges Migration & Navigation Redesign**

The major Achievements-to-Challenges rebranding continues with migration tooling, new navigation layout, and enhanced challenge management. A completely redesigned top navigation bar improves the overall admin panel experience.

**Why it matters:** The transition from "Achievements" to "Challenges" provides clearer terminology and improved management workflows. The new navigation makes it faster to find what you need.

👉 [Learn more about Challenges](/main-features/challenges.md)
{% endupdate %}

{% update date="2026-03-10" tags="integration" %}

## **🔐 HMAC Webhook Signatures**

Webhook security gets a major upgrade with HMAC signature support for verifying webhook authenticity.

**Why it matters:** HMAC signatures let you cryptographically verify that webhook payloads genuinely come from Open Loyalty, protecting against spoofed events.

👉 [Learn more about HMAC Webhook Signature](/main-features/webhooks/hmac.md)
{% endupdate %}

{% update date="2026-03-17" tags="badges,enhancement" %}

## **🏅 Badges Integration with Campaign Effects**

Badges system integrates with campaign effects, allowing badges to be automatically awarded through campaign rules. Challenges also get enhanced visibility controls and migration readiness improvements.

👉 [Learn more about Badges Integration with Campaign Effects](/main-features/campaigns/campaigns-and-referral-campaigns/creating-campaigns.md#add-rules-conditions-and-effects)
{% endupdate %}

{% update date="2026-03-05" tags="members,enhancement" %}

## **🔢 Loyalty Card Auto-Generator**

A new configuration option enables automatic generation of Loyalty Card Numbers (LCN) for members, removing the need for manual entry or external systems.

**Why it matters:** Reduces friction in member enrollment and eliminates duplicate or invalid card numbers.

👉 [Learn more about Loyalty Card Auto-Generator](/main-features/members/configuration.md)
{% endupdate %}
{% endupdates %}

<details>

<summary>More March updates</summary>

**🆕 Added**

* **Date validation on API ingestion** — Prevents future-dated or invalid timestamps from entering the system
* **Issued Reward references in Unit Transfer webhook and API** — Unit transfer webhooks now include associated reward details
* **High-precision timestamps for Points History** — Deterministic sorting with sequence fields for transfer records
* **Active Campaign limits per Tenant** — Configure maximum active campaigns per tenant with exclusions for gamification modules
* **Per-store wallet creation limit** — Prevent unlimited wallet type proliferation
* **Optional Comment Field for Admin P2P Point Transfers** — Admins can add context when performing peer-to-peer transfers
* **Soft delete for Badges** — Badges can now be soft-deleted with feature flag for incremental badges

**🛠️ Fixed**

* Custom Events: Fixed incorrect mapping of attributes to 'false' instead of text value
* Fixed `unitPluralName` incorrect value in GET /api/points response
* Fixed race condition allowing multiple redemptions of the same QR code
* DateTime display fix on `purchasedAt` column in transactions
* Fixed Allow spaces in Custom Attributes keys during points import and member PATCH updates
* Missing "Find by badge name" translation restored
* Fixed reward image upload limit (2MB enforced correctly)
* Fixed incorrect documentType field mapping in S3 Transaction exports
* Fixed reward webhook payload size issue when updating coupons

</details>

***

#### February 2026

{% updates format="full" %}
{% update date="2026-02-03" tags="challenges,new-feature" %}

## **🎮 Challenges Rebranding**

The full rebranding from "Achievements" to "Challenges" lands across the UI, API, and data model. Admins can now manually edit member challenge progress.

**Why it matters:** The "Challenges" terminology better communicates the feature's purpose. Manual progress editing lets support teams resolve edge cases without workarounds.

👉 [Learn more about Challenges](/main-features/challenges.md)
{% endupdate %}

{% update date="2026-02-10" tags="wallets,enhancement" %}

## **📝 Custom Attributes for Manual Unit Transfers**

Manual unit transfers can now carry custom attributes — opening up integration possibilities for external systems.

**Why it matters:** Custom attributes on transfers let you tag point movements with metadata (e.g., reason codes, campaign IDs).

👉 [Learn more about Custom Attributes for Manual Unit Transfers](/main-features/wallets/unit-transfers/managing-unit-transfers.md#edit-custom-attributes)
{% endupdate %}
{% endupdates %}

<details>

<summary>More February updates</summary>

**🆕 Added**

* **Partial Custom Attributes Updates via PATCH** — Member custom attributes can be partially updated without overwriting others

**⚙️ Enhanced**

* Achievement progress export refactored with improved date tracking
* Challenge progress endpoint filtering improvements
* Password recovery copy updated
* Webhook contract unified

**🛠️ Fixed**

* Fixed reward webhook payload size issue
* Fixed expired unit transfer created past expiry date upon unlocking
* Fixed static segment recalculation
* Fixed leaderboard calculation bug in February
* Fixed reward webhook payload overflow when updating coupons

</details>

***

#### January 2026

{% updates format="full" %}
{% update date="2026-01-05" tags="campaigns,new-feature" %}

## **📦 Campaign Code Import**

A new import feature for external redemption codes brings campaign codes into the platform.

**Why it matters:** Campaign code import allows you to use the generated list of codes (e.g., already printed out on your products).

👉 [Learn more about Campaign Code Import](https://help.openloyalty.io/whats-new/pages/SRo81A5dFHGeogQiRBKA#id-2.-imported-codes-csv-upload)
{% endupdate %}
{% endupdates %}

<details>

<summary>More January updates</summary>

**🆕 Added**

* **Tiers from Targeted Tiersets in Rewards** — Add tiers from any targeted tier set to reward targeting selection

**⚙️ Enhanced**

* Navigation tabs renamed: Achievements → Challenges (main nav and single member view)
* Segments protected against empty conditions
* Added `updatedAt` and `createdAt` columns to Segment Export files
* Transfer list filtering logic aligned with mass actions payload
* Segment criterion names updated to challenge terminology
* Analytics/dashboard data display and chart fixes

**🛠️ Fixed**

* Fixed 400 error when creating Segment with Achievement Completion condition
* Fixed missing conditions display for Achievement Completion campaigns
* Fixed incorrect error message for Transaction target attribute validation in Goals
* Fixed rewards targeted to non-default TierSet tiers not visible for members
* Fixed static segment recalculation
* Fixed Fortune Wheel Internal Server Error when unit effect exceeds wallet limit
* Fixed inconsistency in Members List Filtering UI — estimated count from API now displayed on frontend

</details>

***

*This page covers 2026 releases. For earlier releases, see What's New in 2025.*


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://help.openloyalty.io/whats-new/2026.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
