# 2026

### April 2026

<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

**⚙️ Enhanced**

* Badge icon updated in Badges empty state view
* Migration Guide documentation for Achievements → Challenges

**🛠️ Fixed**

* 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

#### **🔄 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](https://help.openloyalty.io/main-features/challenges)

#### **🔐 HMAC Webhook Signatures**&#x20;

Webhook security gets a major upgrade with HMAC signature support for verifying webhook authenticity.&#x20;

**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](https://help.openloyalty.io/main-features/webhooks/hmac)

#### **🏅 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](https://help.openloyalty.io/main-features/campaigns/campaigns-and-referral-campaigns/creating-campaigns#add-rules-conditions-and-effects)

#### **🔢 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](https://help.openloyalty.io/main-features/members/configuration)

<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

#### **🎮 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](https://help.openloyalty.io/main-features/challenges)

#### **📝 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](https://help.openloyalty.io/main-features/wallets/unit-transfers/managing-unit-transfers#edit-custom-attributes)

<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

#### **📦 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/main-features/campaigns/campaigns-and-referral-campaigns/creating-campaigns/trigger-types/redemption-code-campaign#id-2.-imported-codes-csv-upload)

<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.*
