UX CASE STUDY · AHOTU PREMIUM

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.

ROLE
UX Designer
TEAM
Design lead (UI), PM, Dev lead & developers
SCOPE
Join & pay flow, member profile, offers, consent, cancellation, design reviews
TIMELINE
May–Sep 2026 · Soft launch Aug 2026
01

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?

693
ATHLETES SURVEYED
66.7%
OF MEMBERS USED AN OFFER IN MONTH ONE
3
DESIGN REVIEW ROUNDS AGAINST PRODUCTION
02

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?

03

What athletes would pay for

A survey turned into a page structure

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.

CORE VALUE DRIVERSSUPPORTING VALUELOW VALUE (FOR NOW)
Click to view full size

FEATURE TIERS: 597 athletes ranked what a membership should include. The core four became the product; the rest waited.

RESEARCH → PAGEThe top results became the three parts of the membership. Access: sold-out races and early registration. Rewards: discounts from partner brands. Experiences: race and travel packages. The landing page uses these three. So does the member profile. What you're promised before paying is exactly what you find after.
04

Mapping it, and mapping it again

From a planned system to a buildable journey

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
Click to view full size

THE PLANNED SYSTEM: four ways in, colour-coded blocks for payment, verification and profile. Thorough, and more than the deadline could carry.

Click to view full size

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.

05

Joining without losing intent

The long way round is where people drop off

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.

ABANDONED CHECKOUTFAILED PAYMENTSWITCHED DEVICE

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.

Click to view full size

ONE STATE, THREE PROBLEMS: abandonment, failed payment and a device switch all land on the same screen with the same single action.

CAUGHT IN REVIEW, AUG 18The "Almost there" button didn't lead to Stripe at all. It was caught in the first design review, fixed before launch, and added to the list of things to test every time.
06

The hub

One profile, three states

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.

PREMIUMALMOST THEREFREE
  • 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.

Click to view full size

THREE STATES: one page, three people, one clear thing each.

07

The offers

A patch first, then the structure

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.

SEP 7 · SPOTTED IN REVIEWSEP 9 · PATCHSEP 18 · STRUCTURE ON STAGING
Click to view full size

BEFORE: one card per race. Correct card by card, confusing as a row.

Click to view full size

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:

  1. About the event. A description of the race, a general "Use this link" note and a "Register here" button.
  2. About the offer. What you get, and how to claim it.
  3. 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.

DESIGNED FOR REAL DATAEvery modal was tested at both extremes: a single-ticket event and a 13-race event, plus long race names that wrap. The labels now live on the profile: "Event sold out", "Sold out race", "15% off", "Free trial".
08

Respecting the member

A clear yes, and an honest way out

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.

Click to view full size

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.

THE FULL LIFECYCLEDiscover, join, pay, use, manage, leave. Every step has its own screen, and none of them needs customer support.
09

Design review of production

Three rounds, two signatures

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.

Click to view full size

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
KNOWING WHEN NOT TO ADD UITwo price notes were discussed. A line explaining currency conversion was removed, because the system already handles it and it only added doubt. A line saying local taxes might apply was kept, because it changes what people actually pay.
10

Tested inside, validated live

A soft launch as the test

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.
Click to view full size

MONTH ONE: people use what they pay for. Getting them through checkout is the next problem.

11

What's next

Work in progress

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.

Click to view full size

COMING SOON: Premium on event pages and in the calendar.

12

What I'd carry forward

What worked

Designing for real data. Duplicates, 13-race events, long names and empty states only show up with real content. Every rule that survived was tested against the extremes.
Review as design. Three rounds against production caught a wrong price, a dead button and a contrast failure. With design and build in parallel, the review was where the product got finished.
One hub. Sending every path back to the profile made three states enough to cover abandonment, failed payments, device switches and active members.
Labels that match reality. "Explore all benefits" on every button leading to the Premium page, "Go Premium" on the page that sells, "Sold out race" when only one race is. Small words, fewer wrong expectations.

What to do differently

Protect the thinking time. We designed alongside development to hit the deadline. It worked, but thinking moved into the middle of the build: late copy fixes, reworked cards, discussions that went backwards. Rushing doesn't make a project shorter; the time comes back as rework.
Test with athletes before launch, not only after. The soft launch is a good test, but a few sessions with real athletes before launch would have found the checkout drop-off earlier.
Plan around the summer. Holidays stalled the project, and restarting cost momentum. Handovers and decisions should be written down before people leave, not after they return.