Worth Logging
In For
Ahotu lists endurance races in 195+ countries. The Ahotu Premium membership was built to give athletes more reasons to come back: entries to selected sold-out races, early registration, partner discounts and race packages, for €29 a year. For Ahotu, it was also a way to grow retention and build closer relationships with race organisers and endurance brands. My part was the experience from first curiosity to first claimed offer.
The short version
Athletes already use Ahotu to find races. The Premium membership adds a new option: a yearly fee in return for benefits they can't get on their own, like entries to sold-out events, early registration, discount codes from endurance brands and race packages. Most of those benefits come from race organisers and partner brands, not from Ahotu itself.
That left two questions to design for. Before joining: how do you make €29 feel worth it to someone who hasn't used a single benefit yet? And after paying: how do members find and claim what they paid for?
The brief
Ahotu wanted a paid membership that gives athletes real advantages: races they couldn't otherwise enter, earlier registration and discounts from endurance brands. The project started on 11 May with a deadline of 30 July. Summer slowed it down, and the soft launch went live at the end of August.
We designed alongside development, not ahead of it. Most decisions in this case were made while the thing was already being built.
My role was UX: every flow from signup to cancellation, the member profile and its states, the offer modals, consent, and the design reviews against production. Visual direction and the landing page were led by our design lead.
The team framed every weekly check-in around four questions: who is it for, what problem are we solving, what does success look like, and what are the risks.
Before joining: had to show the value
- Value visible before paying, not after
- One landing page explaining every benefit
- Only promise what's ready on launch day
After paying: had to be easy to use
- One clear place to find every benefit
- Simple steps to claim an offer
- Clear labels when something is sold out
How might we make the value clear before joining, and easy to find and use after paying?
What athletes would pay for
Before any screens, 693 athletes answered a survey about what a membership should include. Race entry discounts came first (72.5%), then guaranteed entry (61.1%), early access (58.3%) and travel and accommodation discounts (50.3%). Community and VIP perks came last, both below 15%.
That ranking sorted every idea into three tiers: core value drivers, supporting value, and low value for now. The core four became the primary features. It also simplified the offer: the membership went from three levels (Free / Pro / Elite), to Free / Premium / Premium+, and finally to just Free and Premium.
FEATURE TIERS: 597 athletes ranked what a membership should include. The core four became the product; the rest waited.
Mapping it, and mapping it again
The first flow covered everything. Four ways in: logged out with an account, no account, logged in, or already on the profile. Each had its own path, built from colour-coded blocks for payment, verification and the Premium profile. It also had email verification with a code, a "one step away" summary page before payment, an Ahotu receipt email and a separate page for partner benefits.
Most of it was simplified on purpose. The team drew an MVP line on the story map, and everything below it moved to v2: promo codes, changing plans, pausing, win-back offers and notification settings. Some steps were cut because they repeated information. The summary page showed what the user had just read on the landing page, so it only added a click. And since it was our first time using Stripe, some planned steps turned out to be things Stripe already handles.
What shipped is simpler:
- A verification link instead of a code
- Straight from the landing page to payment in Stripe
- Stripe sends the receipt; Ahotu sends a welcome email confirming the membership
- Benefits on the profile, not a separate page
THE PLANNED SYSTEM: four ways in, colour-coded blocks for payment, verification and profile. Thorough, and more than the deadline could carry.
INTERNAL LINKING: the map of where Premium lives in the site, and where every path leads.
Premium can be found from five places: the homepage spotlight, a banner on the calendar page, a banner on event pages, the account drop-down and a banner above the footer. All five lead to the same Premium landing page, and all five use the same button: "Explore all benefits." On the landing page, the button changes to "Go Premium," because that's where joining starts. Each label tells you where it takes you, and after paying, everything leads to the Premium profile, where members claim their offers.
Joining without losing intent
Signing up with Google goes almost straight to payment. Signing up with email doesn't: fill in the form, check your inbox, confirm, log in again, then pay. Every step in that detour is a chance to forget why you started.
The design treats intent as something to carry through the flow. The confirmation step tells users their account is confirmed and that the last step is to log in and pay. The login after confirmation keeps them on the path instead of offering new options. Payment happens in Stripe, with states for failure and retry, and a short loading overlay while the payment completes. Success leads to one place: the profile.
The most useful piece was a single state. Anyone who has chosen Premium but not paid sees "Almost there!" on their profile, with one button back to payment. It is stored on the account, not the browser, so it covers someone who closed the tab, someone whose card failed, and someone who started on their phone and continues on a laptop.
ONE STATE, THREE PROBLEMS: abandonment, failed payment and a device switch all land on the same screen with the same single action.
The hub
Every path in the membership ends in the same place: the profile. The payment success page, the welcome email and the login all lead there. Because members always come back to it, it had to make sense in every state.
- Premium shows a member badge next to the name, and three rows of offers: events, packages and partners.
- Almost there shows one button: go to payment.
- Free shows what Premium includes, the price, and two buttons: explore all benefits or go Premium.
The specs were written as simple rules developers could test, like showing arrows only when a row has more than four cards. Early versions stacked four coloured badges on every card. The final version uses one calm label per card, and a "best deals" row was removed so the profile only shows what the member already has.
THREE STATES: one page, three people, one clear thing each.
The offers
At first, the profile showed one card per race. That worked until an event had several races. After launch, the 3 Days Ultra Trail Ibiza showed up three times in a row: same photo, same title, same date.
The first fix was a patch. Each card got a distance pill, and events with several races got a "Sold out race" label. Each card was now correct, but the row still showed the same event again and again.
So the structure changed. Now there's one card per event. All its races are inside the offer modal, grouped by sport, each with its own discount, date and button.
BEFORE: one card per race. Correct card by card, confusing as a row.
AFTER: one card per event. The modal holds every race, each with its own discount, date and "Claim offer".
The offer modal changed three times:
- About the event. A description of the race, a general "Use this link" note and a "Register here" button.
- About the offer. What you get, and how to claim it.
- About the choice. Races grouped by sport, the real discount as the label ("15% off" instead of "Discount"), long text folded behind "Show more," and sold-out access explained in plain words.
By this point, the member has already picked the race. What they need is the deal and the next step.
Partner offers work in two ways: a link straight to the partner, or a code to copy with a link to where you use it. After copying, the button says "Copied to clipboard," then resets so you can copy again.
Respecting the member
Premium members get their own newsletter, and it needed its own consent. The first idea was a checkbox during signup, mixed in with everything else. The final design asks once, clearly: after payment, an opt-in modal with two equal buttons, "No, thanks" and "I'm in!"
Members who say no see a small banner on their profile, with one button if they change their mind. They can also change it anytime in Settings. Cancelling the membership doesn't change it without asking.
CONSENT: from a checkbox hidden in signup to one clear question after payment, with a way to change your mind later.
Cancelling is in Settings, not hidden behind support. The membership block shows when it renews and that you keep access until then. One confirmation, "Yes, please" or "No, never mind," then a cancelled state with a way to renew. No discounts to make you stay, no guilt.
Design review of production
With design and development running in parallel, the design review was where the product actually took shape. I ran three rounds: two before launch (18 and 24 August) and one after (7 September). Each board followed the member journey in order, design next to production, desktop and mobile, with a priority-tagged note for every issue and two sign-off boxes: dev fixed it, design approved it.
REVIEW FORMAT: design and production side by side, one note per issue, two check boxes per note.
What the reviews caught:
- A price of €30 per day in the Stripe sandbox, before launch
- A payment button that went nowhere
- Ahotu green failing contrast on light grey, which moved small green text to soft black
- A carousel rule that only shows with more than four cards, tested by adding cards
- Duplicated event cards, after launch, which became the structural fix in section 07
Tested inside, validated live
There was no time for external usability testing before launch, so testing happened in two places. Inside the team: a written test plan, three design review rounds and an edge case document that grew with every bug. And live: Premium launched softly, without announcement or marketing, so real members could use it before any public launch.
About a month after launch, the data told a clear story: 66.7% of members used at least one offer in their first month.
- The most claimed single offer was entry to a sold-out race, early support for the idea that access matters more than discounts.
- Package offers had the highest take-up per offer published, matching travel as a top driver in the survey.
- About two in three people who started checkout didn't finish. That is the clearest opportunity for the next version.
- Paying members visit about twice as often and view about 2.5× as many pages. That's correlation, not proof, but it points the right way.
MONTH ONE: people use what they pay for. Getting them through checkout is the next problem.
What's next
Version 1 made Premium easy to find. Version 2, which I'm designing with our design lead, shows it where athletes actually choose races: on event pages and in the calendar.
This part is in progress right now. Check back soon to see where it lands.
COMING SOON: Premium on event pages and in the calendar.