An events platform for the Council of Europe Development Bank, shipped for the 70-year anniversary.
The Council of Europe Development Bank runs events year-round. The 70-year anniversary set the deadline and the bar: a platform built for one high-profile event that scales to the rest of the bank's calendar. WAYF designed the admin around how editors actually run events, shipped a participant experience that does not assume web fluency, and built an email flow that lands cleanly in Outlook. The anniversary went out without production issues. CEB now runs every new event on the same platform.
[Pending — quote from the Council of Europe Development Bank events team to be sourced before publication. The slot below holds attribution structure and is ready for a 30–50 word statement about the anniversary delivery, the participant experience, or the long-term partnership with WAYF.]
- 1st
- Proprietary events platform for the team
- 100%
- Invited participant response rate
- 0
- Production issues during the event
- 2
- Registration models in one admin
- 2
- Languages live (EN / FR)
- 100s
- Invitations sent for the anniversary
CEB had no events platform of its own. The anniversary was the deadline that forced the build.
The events team had been running CEB's calendar across tools that were never built around how they actually work. The 70-year anniversary made that arrangement untenable. The constraints below shaped the platform WAYF designed to replace it.
-
CEB had no events platform under its own roof.
Event work was scattered across off-the-shelf tools and manual processes that the team did not own and could not extend. There was no system shaped around how CEB runs events, no path to add the next capability without negotiating with a vendor. The anniversary set the date by which that arrangement had to be replaced.
-
The 70-year anniversary was a fixed deadline.
The anniversary date was set long before the platform was. No slip date, no soft launch, no private beta. Whatever WAYF shipped had to be production-ready for a high-visibility event with the bank's leadership and external guests.
-
The platform had to outlive the one event.
An anniversary-only tool would have justified neither the cost nor the disruption. CEB needed a system that scaled to the events the bank runs year-round. The anniversary was the test that decided whether this became how CEB runs events going forward.
-
Two registration models had to coexist.
Some CEB events are invitation-only, where the bank sends invitations to a known list. Others are public, where anyone can register and the organiser approves submissions. The admin had to support both flows out of one system, with the same data model and the same participant record on both sides.
-
Participants varied in how often they use the web.
The anniversary audience included people who use the web every day and people who do not. Clever interactions that needed explaining would have generated support load on the day. The participant flow had to read cleanly for everyone in one pass.
-
Email had to land cleanly in Outlook.
A significant share of the bank's contacts open invitations in older Outlook versions. The invitation email had to render correctly across Gmail, Apple Mail, and Outlook, including the older Outlook quirks around rounded corners. A broken layout on the wrong client would have undercut everything else.
Discovery before code. A minimum viable scope that was production-ready.
WAYF started by listening. Multiple sessions with CEB editors and organisers mapped how the team actually runs events, what their current pain points were, and what their ideal version of "running an event" looked like. The shape of the platform came out of that mapping.
The output was a minimum viable scope that was production-ready. It looked right for participants on the day, gave organisers an admin that fit their actual workflow, and stayed clear of features that would not be used by the anniversary. That scoping discipline is the reason the deadline held.
In scope for the anniversary
- Participants Manager with bulk operations
- Invitation-only and public registration flows
- Magic-link entry and recovery
- Progressive registration with server-persisted progress
- Bilingual EN / FR experience
- Confirmation PDF download
- State-aware public event page
Scoped for after
- Multi-event handling across the calendar
- History of past events
- Admin improvements informed by anniversary feedback
The work scoped for after the anniversary is what WAYF and CEB are building now, with the platform already in production.
Payload backend, Next.js 15 frontend, Turborepo monorepo with shared types end to end.
With an ambitious deadline, the stack choice mattered as much as the design. WAYF picked tools that move fast in the parts that need polish and stay out of the way in the parts that do not.
Payload CMS handles the backend. Payload is a widely-supported content platform whose extension model supports building a real product on top of it, beyond a content site. Database schema, auth, admin scaffolding, and media handling come from the framework. The budget went to the parts that matter to the bank: the Participants Manager, the registration flows, and the email pipeline.
The participant-facing site is a custom Next.js 15 frontend. React 19 and TypeScript, with Tailwind CSS 4 for layout. Custom because the participant experience is what makes an events platform worth keeping.
The project is a Turborepo monorepo with shared packages for UI components, API hooks, and Zod schemas. When a type changes in Payload, it flows automatically into the frontend. That keeps the system tight as it grows, and stops the two halves of the codebase from drifting.
Payload as the foundation; custom UI on top for the actual product.
Payload's extension model supports building a real product on top of it. The boring, reliable parts come with the framework: database schema, auth, admin scaffolding, media handling. Custom collections and custom admin components are first-class. Most of the project's value sat in domain-specific UI for organisers and a tailored participant flow; stock CMS surface area was a means to that end.
The modern stack also paid off on the timeline. Custom development moved fast in the places it needed to: the Participants Manager, the registration flows, the email pipeline. Payload stayed out of the way in the places that would have absorbed budget for no return.
The Participants Manager. Custom UI on top of Payload, built around how organisers actually run events.
WAYF took Payload, kept what fit the project, and built custom UI on top so editors get a workflow that matches how they run events at CEB. The headline piece is the Participants Manager: a custom admin component that gives organisers the operations they reach for daily, in one place.
Bulk operations
- Excel participant import with drag-and-drop, field mapping, and duplicate detection
- Bulk invitation send and resend, with sent / resent tracking and timestamps
- Mass messaging to selected participants using custom message templates
- Onboarding a few hundred guests in seconds, not hours
Filtering and approval
- Filter by invitation status, registration status, participation type (in-person / online / livestream), and approval state
- Submission approval queue for public events: organisers approve or reject before any confirmation goes out
- Change history on every participant, with a clear audit trail of who changed what and when
Two registration models, one admin
Invitation-only and public events run on the same data model and the same admin. Invitation events draw from a known list the bank uploads or builds; public events let anyone register and route submissions to the organiser's approval queue. Same participant record, same operations, same workflow shape. The organiser learns one tool and uses it across the whole calendar.
Built without assuming web fluency, with plain calls to action and short flows.
The anniversary audience included people who use the web every day and people who do not. WAYF designed the participant flow so it reads cleanly for everyone in one pass: large visible calls to action, plain language, and no interactions that need explaining.
Invitations that render correctly in Outlook
WAYF used React Email and built custom components with a table-based layout and explicit handling for Outlook's quirks around rounded corners. The invite renders correctly across Gmail, Apple Mail, and Outlook, including the older Outlook versions the bank's contacts often use. Each invitation carries a custom greeting and a bilingual layout ordered by the participant's preferred language, with a single clear call to action.
Magic-link entry, no password to start
When a participant opens the invitation email, they land in their session already identified. The invitation token proves the participant owns the email address, so the flow skips a confirmation step. Tokens expire, which keeps old links from being passed around.
Recovery for every state
Every dead end has a way out. A participant who loses the invite link can recover it. A participant who reopens the page from the same device is recognised as themselves. A participant who later creates an account and forgets the password follows a clean reset flow. The participant is never stuck without a next step.
Progressive registration
Progress is persisted on the server at every step. A participant who starts a form, gets pulled away, and comes back later only fills in what they had not done yet. The flow never asks them to start over. That single decision removed a large category of "abandoned-form" support emails.
Identification without impersonation
The system knows who each participant is from the moment they open the invitation link, before they register. The token model is scoped so that nobody else can pretend to be them. One token grants access to one participant's draft and nothing else.
Conditional flow
The form changes shape based on what the participant picks. An in-person guest answers transport questions (flight, train, car), an online attendee sees a different subset of the form, and a livestream viewer skips on-site activities entirely. The participant only sees fields that apply to them.
A confirmation PDF to take away
At the end of registration, the participant can
download a PDF summarising what they confirmed:
practical info, transport, activities. Formatted in
the participant's preferred language, generated with
@react-pdf/renderer.
Mailjet for production, Mailpit for development, templates the organisers control.
Production email runs through Mailjet, chosen for deliverability and for handling the bulk send of hundreds of invitations cleanly, in batches, with per-message success tracking. In development, everything routes to a local Mailpit container so the team can preview every email before it ships.
Beyond invitations and password resets, WAYF built customisable templates so organisers can compose their own messages from inside the admin and send them to a filtered group of participants. Per-event branding (logos, support email, custom greeting) is configured per event, so the visual identity of one event does not leak into the next.
The public event page reads its own date. Organisers never have to flip a switch.
The public event page is state-aware. It reads the event date and shifts what it shows on its own across four stages.
-
Registration open
Before the event, while invitations are out and the registration form is accepting submissions.
-
Registration closed, event upcoming
After the registration cut-off but before the event starts. The form goes away. The page keeps the participant oriented.
-
Event in progress
During the event window itself. The page shifts to live context — practical info, where to be, what is happening.
-
Event concluded
After the event has finished. The page shifts to a retrospective state without the organiser having to archive it manually.
The organiser never has to remember to flip a switch. That removes a whole class of "the page still says register" mistakes that hit teams running back-to-back events.
CEB owns its events platform. The anniversary proved it.
WAYF sent out hundreds of invitations for the anniversary. The numbers told the story.
- 100% response. Every invited participant responded, either accepting and completing the full registration with all logistics, or declining. There was no silent drop-off.
- Near-zero support tickets. Almost no inbound questions about the invitation flow, on a high-visibility event with a varied audience.
- Zero production issues. No participant-side incidents during the live event window.
That outcome only happens when the flow is genuinely clear. People do not email support when they understand what they are being asked to do.
The anniversary gave CEB confidence in the platform and in WAYF. CEB now runs every new event on the platform. WAYF and the bank are actively working on the next phase: better multi-event handling, history of past events, and admin improvements informed by what the anniversary surfaced. A one-event delivery is becoming the bank's long-term events platform.
The anniversary set the deadline. The same platform now runs every new CEB event.
We're booking platform engagements for 2026.
Thirty minutes to walk through the work and decide if we're the right team for it. Scoping and a fixed price come after.