v7.25.0 — June 2026
Released: June 2026Realtime Earn API (V2)
Per-Transaction Identifiers in Response
The V2 batch transaction API now returns arequest_id for every transaction submitted in a batch. This server-assigned identifier can be used for support tracing and cross-referencing with the polling API.
Polling API — Status Breakdown
The polling API now returns a full status breakdown for a submitted batch:
The polling response also includes the total points awarded for each transaction across all applicable rule groups.
Authentication & Security
SAML 2.0 SSO
Enterprise programs can now enable SAML 2.0 Single Sign-On as an alternative to password-based login:- Supported identity providers: Okta and Microsoft Azure AD
- Users are redirected to the IdP for authentication; Loyalife issues a session token after successful SAML verification
- Disabling the SAML SSO toggle immediately reverts all logins to standard username/password
- LDAP authentication continues to work when SAML is concurrently enabled
- MFA is compatible with both SAML and LDAP flows
Custom Subdomain Hosting
Each program can be hosted on a dedicated custom subdomain instead of the shared default domain:- Custom subdomains are provisioned through Program Settings → Program Details
- The subdomain URL is preserved across Login, Forgot/Reset/Setup Password flows, and all system-generated emails
- Programs with SSO enabled cannot change their subdomain after configuration
- Linked programs inherit the primary program’s subdomain and logo
- Custom subdomain URLs now route users directly to the correct login screen — SAML-only or dual-mode (Email/Password + SAML) — bypassing the program selection screen entirely
- The post-login program switcher remains available for users with access to multiple programs
- Subdomain creation events are now logged in the Subdomain URL audit trail
API Credential Management
Multiple Client ID and Client Secret pairs can now be generated per program:- Module-level API keys support Read or Write access scopes
- Default credential expiry: 90 days; custom expiry can be set up to a maximum of 2 years
- The credential listing shows Expiring Soon and Expired status badges
- Automated email notifications are sent at: credential generation, revocation, 7 days before expiry, 1 day before expiry, and on the expiry day
VAPT 2026 Security Hardening
All vulnerabilities from the 2026 security audit have been resolved:- SQL Injection (High): Member search now uses parameterised queries; free-text input is rejected for all search parameters
- IDOR — Profile Disclosure (Medium): Profile endpoint enforces server-side authorisation; cross-user access returns HTTP 403
- Session Hijacking (Medium): All active sessions and refresh tokens are invalidated on successful password reset
- CAPTCHA Misconfiguration (Medium): Password reset endpoint now validates CAPTCHA server-side with per-IP and per-email rate limiting; expired tokens are rejected; abuse returns HTTP 429
- PII Masking (Low): Phone numbers and email addresses in member API responses are now masked at the serialiser layer
- Secure Media Access: Media files are now served via encrypted proxy URLs instead of raw storage URLs; direct storage access is blocked
Campaigns
Push Notifications in Campaigns
Push Notification is now a first-class delivery channel in the Campaign module alongside Email, SMS, and WhatsApp:- Supported campaign types: Promotional, Occasion Reward, and Reward to Members
- Campaigns link to a push notification template from the Communication module
- Campaign performance metrics show: Total Sent, Success, and Failed counts per notification
- Notifications are delivered after the campaign cron executes
Rule-Based Campaigns
A new Campaigns (Rule Based) module is available, controlled by a program-level feature flag:- When enabled, rule-based campaigns appear in the Campaign module
- The toggle is independent of the standard Campaigns module and defaults to OFF
- Maker-Checker support for rule-based campaigns will be added in a future release
Communications
Push Notifications as a Channel
Push Notification is now a 4th delivery channel in the Communication module:- Title: up to 50 characters
- Body: up to 120 characters, supports
{{variables}}for personalisation - Redirect to screen: optional deep-link target for the in-app screen that opens on tap
- A live iPhone lock screen preview is shown in real time while composing
- Test notifications can be sent to a registered member’s device by phone number
Notification Event Name Updates
Legacy notification event names have been updated to clean, Loyalife-branded names. Thelbms_ prefix has been removed from all event names, and the Giift brand name has been replaced with Loyalife throughout. Existing client-customised templates are not affected by this change.
Mobile Applications
Custom Branded App UI Support
Channel partner mobile apps can now be delivered with a fully custom, client-branded UI — covering login, home, points history, claim submission, KYC, and profile flows — as an alternative to the standard Loyalife channel partner experience.CamScanner-Grade Document Scanning
Invoice and KYC document capture now uses the OS-native document scanner instead of a custom camera implementation:- iOS: Apple VisionKit · Android: Google ML Kit
- Automatic edge detection, deskew (perspective correction), and image enhancement — fully on-device, no network dependency
Re-KYC Flow
Members who have already completed KYC can now re-initiate verification from their profile, with support for multiple KYC document types.Program Settings — Calculation
Aggregate Computation Timing (Pre / Post)
A new one-time, irreversible switch lets programs choose whether aggregate attributes are computed before or after rule execution:- Default: Pre Computation, applied to both new and existing programs
- Switching from Pre to Post requires confirmation via a modal and cannot be reversed once confirmed
- For Debit transactions, aggregate attributes update before rule execution; for Credit transactions, they update after — AVG, MIN, and MAX aggregate behaviour is unchanged
- Validated across 40 scenarios, including MCC group exclusion, aggregate boundary testing, max points cap enforcement, and billing cycle aggregate reset
Billing Cycle Toggle Made Irreversible
The Billing Cycle switch under Program Settings is now a one-time, irreversible setting — a confirmation modal warns before enabling it. Max Points reset now aligns with the billing cycle reset logic.Billing Cycle Rewards
Reward Calculation on Cycle End Date (Phase 1)
Reward and aggregate calculations now trigger on the Billing Cycle End Date itself, rather than End Date + 1:- Transaction Processing Date is now the key date used for both reward and aggregate calculations
- Members enrolled mid-cycle correctly exclude transactions dated before their enrollment date
Segments
Smart Segment and Manual Segment Creation Paths
The segment creation flow now offers two distinct paths:- Smart Segment — filter-based, with support for Select All Members (static) or attribute-based filters. Segment name auto-populates; duplicate names are blocked; 100-character name limit applies
- Manual Segment — CSV upload with append or replace mode; 100-character name limit applies
Segment Listing Enhancements
- Search by segment name from the listing page
- Segment names are clickable hyperlinks
- A Linked Campaigns column shows how many campaigns are associated with each segment
Attribute Visibility Controls
A dedicated Attribute Flags section is available in Feature Flags for segments:- 15 system attributes (across Member and Transaction categories) can be individually or bulk enabled/disabled
- Disabling a system attribute hides it from the segment filter in the creation flow
- Custom member and transaction attributes include an Include in Segment Filter checkbox, available at creation time and via Edit
- Segment creation supports a mix of system and custom attributes without conflict
Rule Engine
”Is Multiple Of” Operator
A new Is Multiple Of operator is available in Rule Engine conditions for aggregate attributes:- Applies to aggregate transaction count attributes
- Enables milestone-based rules such as “every Nth transaction earns a bonus”
- Example:
Monthly Transaction Count is multiple of 10 → award 100 bonus points
Attribute-to-Attribute Date Comparison
Rule conditions can now compare two date-type attributes against each other:- Example:
Transaction Date [Day of Month] equals Date of Birth [Day of Month] - Self-comparisons and comparisons between incompatible data types are prevented
- Date-type fields are auto-locked in the comparison selector to enforce valid pairings
Time Input for Transaction Date
The Transaction Date attribute in Rule Engine and Campaign Rules now includes a time picker (HH:MM, 24-hour format):- Default time is
00:00if not set - The combined value is stored as
MM/DD/YYYY HH:MM - For Between operators, each date boundary has its own time selector
- Existing date-only rules are backward compatible — treated as
00:00
Reports
AG Grid Search & Filter in Custom Reports
Custom Reports now use AG Grid for real-time client-side search and filtering of CSV data:- Column headers are auto-detected from the CSV — no configuration required
- Filter types are auto-assigned: text filter for strings, number filter for numerics, date filter for dates
- Global search operates across all columns; column-level filters apply on top with AND logic
- Multi-column filtering and filter reset are supported
- Sorting available for string, numeric, and date columns
- Pagination: 50, 100, 500, or 1,000 rows per page
- Filtered CSV export — export only the rows matching your current filter state
View Links in Custom Reports
Custom reports now include clickable View Segment and View Campaign links that navigate directly to the relevant module detail page.Statement Summary File & Cashback SFTP Posting
- A Statement Summary file is now generated automatically the day after each Billing Cycle End Date, listing opening balance, cycle-to-date earned/adjusted/redeemed points, and closing balance per member
- A daily cashback file is posted automatically via SFTP to the configured financial posting destination
- Numeric columns across custom reports no longer display thousands separators, and date filters use a consistent
YYYY-MM-DDformat
Approval Workflow
Summary Counters
The Approval Workflow page now displays a summary section with real-time request counts:
Counters update in real time as requests move through the workflow. Counts are role-level and module-specific.
API
LocalAttributes in GetTransactionSummary
ThegetTransactionSummary API response now includes a LocalAttributes object for transaction_type=1 (accrual) transactions:
- All custom transaction attribute data types are returned: Int, String, Selection, Date, Float
- For debit transaction types,
LocalAttributesreturns blank — no custom attribute data is populated - All other existing behaviour of the API is unchanged
Redemption API — XID Parameter
A newXID field is available on the Redemption API to support downstream reconciliation:
- Passed in the request under
AdditionalDetailand echoed back in the response - Stored against the redemption and populated in the Cashback Fin Posting file for reconciliation with external systems
- If
XIDis omitted, redemption proceeds as before withAdditionalDetailreturned as null
UI & Navigation
- Sidebar collapsible toggle: The left navigation sidebar now supports collapsing to icon-only mode. Hovering shows a tooltip label. Collapse state persists across sessions
- Program logo in top header: The program logo dynamically reflects the currently active program
- Linked program switcher: Accounts managing multiple programs can switch between them from the top header
- Admin login screen responsive: The Admin Login screen is now responsive on Android and iOS mobile browsers in both portrait and landscape orientations
- Superset Dashboard on Loyalty Overview: The Loyalty Overview page now displays the most recently created or updated Superset Dashboard; visibility can be toggled per program