Flow: Loyalty Points History¶
Actor¶
Registered user who has attended at least one match and earned loyalty points
Preconditions¶
- User has active HNS account
- User is logged into HNS mobile app
- User has at least 1 loyalty point (has attended at least one paid match)
Flow Steps¶
-
Access Points History
- User navigates to Ticketing Profiles screen via Account/Settings
- User scrolls to "My Loyalty Status" section
- User taps "View Points History" link
- System displays Loyalty Points History screen
-
View Points History Screen
- Screen displays:
- Header: "← Loyalty Points History" with back navigation
- Summary section:
- Total Points: "[X]" (e.g., "Total Points: 27")
- History list grouped by year:
- Year header (e.g., "2026")
- Match entries showing:
- Checkmark icon (✓)
- Match description (e.g., "Croatia vs Portugal")
- Match date (e.g., "23 Mar 2026")
- Points earned (e.g., "+1 point")
- Informational notes at bottom:
- "Points are calculated on a rolling 5-year window. Matches older than 5 years no longer count."
- "For each match, HNS determines early access eligibility and ticket allocation based on loyalty points."
- Screen displays:
-
Scroll Through History
- User scrolls vertically through match history
- Matches displayed in reverse chronological order (newest first)
- Year headers separate matches by year
- Both HOME and AWAY matches are displayed
- List shows all matches within 5-year rolling window
-
Return to Profile
- User taps back arrow (←)
- System returns to Ticketing Profiles screen
Alternative Flows¶
A1: Empty State - No Loyalty Points
- User navigates to Ticketing Profiles screen
- User has never attended a paid match
- "My Loyalty Status" section is NOT displayed
- User cannot access Points History (no entry point)
A2: Points History - Only Recent Matches
- User has points from matches within last 5 years
- Any matches older than 5 years are NOT shown in history
- Points from expired matches are not counted in total
- Info note explains the 5-year rolling window
A3: Mixed Match Types
- User has attended both HOME and AWAY matches
- Both types appear in the history list
- Each match shows +1 point regardless of match type
- HOME matches: "Croatia vs [Opponent]"
- AWAY matches: "[Opponent] vs Croatia" or location indicator
UI Wireframe¶
┌─────────────────────────────────────────────────────────────┐
│ ← Loyalty Points History │
├─────────────────────────────────────────────────────────────┤
│ │
│ Total Points: 27 │
│ │
│ ───────────────────────────────────────────────────────── │
│ │
│ 2026 │
│ ──── │
│ ✓ Croatia vs Portugal 23 Mar 2026 +1 point │
│ ✓ Croatia vs France 15 Feb 2026 +1 point │
│ │
│ 2025 │
│ ──── │
│ ✓ Croatia vs Spain 10 Nov 2025 +1 point │
│ ✓ Croatia vs Italy 08 Oct 2025 +1 point │
│ ✓ Germany vs Croatia 22 Sep 2025 +1 point │
│ ... (scrollable list) │
│ │
│ ───────────────────────────────────────────────────────── │
│ │
│ ℹ️ Points are calculated on a rolling 5-year window. │
│ Matches older than 5 years no longer count. │
│ │
│ ℹ️ For each match, HNS determines early access eligibility │
│ and ticket allocation based on loyalty points. │
│ │
└─────────────────────────────────────────────────────────────┘
Data Requirements¶
API Endpoint: GET /users/me/loyalty/history
Response:
{
"total_points": 27,
"qualifying_points": 27,
"history": [
{
"match_id": "uuid",
"match_description": "Croatia vs Portugal",
"match_date": "2026-03-23",
"match_type": "HOME",
"points_earned": 1,
"earned_at": "2026-03-23T22:00:00Z"
}
]
}
Related Flows¶
- Profile Management - Access point for this flow
- Loyalty Early Access Purchase - Where points determine ticket allocation
Related Features¶
Last Updated: January 2026