Registration infrastructure

Registrations that don't crash.

A concert on-sale, a university enrolment window, a festival ticket drop — a hundred thousand people arriving in the same second. Sorted turns that spike into a fair, timestamped line instead of a downed checkout.

No credit card required. Create your first event in minutes.

Live event

Burning Man Tickets

Accepting

Registered

47,214/100k

Price

$900

Waitlist

10,000

maya@example.com Registered
jon@example.com Pending payment
lena@example.com Waitlisted #1
nora@example.com Queued
POST /api/events
→ 201 Created
{
  "public_url": ".../events/aZ4k9mQ2pX0",
  "embed_code": "<iframe …>"
}

Published benchmarks, not testimonials

Two runs, both measured to the last row in the database.

200,000

registrations, two runs

3,706/s

peak throughput

100%

accepted, 0 dropped

258ms

p95 under full load

Sell out Burning Man in 30 seconds

100,000 people battling for 20,000 tickets, 300 concurrent connections, one event.

Simulated registrants

100,000

Throughput

3,706/s

Accepted into queue

27s

Fully persisted

28.2s

Accepted

100%

p95 latency

258ms

$ k6 run homepage_stampede.js
# 100,000 registrants, 1 event, capacity 20,000, 300 concurrent
registration_duration: avg=80.78ms p(95)=257.6ms p(99)=392.58ms
registration_accepted_rate: 100.00%
http_req_failed: 0.00%
total_registrations: 100,000 (3,706/s)
# capacity enforced correctly under load
registered: 20,000 (exactly the event's capacity)
waitlisted: 80,000 (fair, timestamp-ordered)
# two-phase: fast accept, then async settle
last request accepted: t+27.0s
last row durable in DB: t+28.2s

Enrol a whole university in one minute

100,000 students competing for limited-capacity courses across 2,000 classes, all in the same enrolment window.

Simulated registrants

100,000

Throughput

2,350/s

Accepted into queue

42.6s

Fully persisted

43.1s

Accepted

100%

p95 latency

207ms

$ k6 run homepage_stampede.js
# 100,000 registrants, 2,000 courses, capacity 50 each, 300 concurrent
registration_duration: avg=127.33ms p(95)=207.01ms p(99)=280.85ms
registration_accepted_rate: 100.00%
http_req_failed: 0.00%
total_registrations: 100,000 (2,350/s)
# capacity enforced correctly under load
registered: 94,347 (random course choice — some fill, some don't)
waitlisted: 5,656 (fair, timestamp-ordered)
# two-phase: fast accept, then async settle
last request accepted: t+42.6s
last row durable in DB: t+43.1s

01 · Concurrency

Built for the second everyone registers.

Sorted runs on the BEAM — the runtime built for telecoms that carry a large share of the world's phone calls. Each event is its own lightweight process, and registrations hit an in-memory queue first, so a signup spike never turns into a database pile-up.

Registrations land in ETS instantly — zero lock contention

A per-event worker drains, validates, and persists every 50ms

Results stream back over PubSub the moment they're decided

Fair, timestamped ordering under any load

REGISTRANTS ETS in-memory intake queue drain 50ms Event Worker validate · price · persist Postgres async batch PubSub live result One isolated process per event — no shared bottleneck

02 · Hosted pages & embeds

One event, three ways in.

Every event you create comes with a hosted registration page, a drop-in iframe embed, and a full REST API — no extra setup.

Hosted page

sorted.fast/events/aZ4k9mQ2pX0

Embed anywhere

<iframe src=".../events/aZ4k9mQ2pX0/embed">

01 / Create

Spin up free, fixed-price, or dynamic-price events from the dashboard, the REST API, or an agent workflow.

02 / Share

Send attendees to the hosted page, or paste the iframe straight into your own site. No code changes to your backend.

03 / Register

Sorted queues each request, validates capacity and payment, then confirms registered, waitlisted, or rejected in real time.

03 · Dynamic pricing

Airline-style pricing, on autopilot.

Set a starting price and a floor-and-ceiling range. Sorted watches demand in real time and nudges the price within your bounds — capturing peak interest and filling quiet slots automatically.

Demand response

Prices rise toward your ceiling as an event heats up.

You set the bounds

Floor and ceiling are yours — the price never leaves the range.

See pricing modes →
Peak $47

04 · Payments

Attendees pay. You get paid.

Paid events use the Stripe Payment Element right inside the registration flow — embeds included. Sorted runs on Stripe Connect with destination charges, so your platform fee is split out automatically and free events skip payment entirely.

Participant pays $900.00
Platform fee via Stripe Connect

Free events

$0

Paid flow

Stripe

Works in

Embeds

05 · Agent ready

Designed for agents, too.

An LLM agent can discover Sorted, create an event, and hand back a working link or embed — no human in the loop. Machine-readable docs and an A2A agent card make the whole platform self-describing.

Make registration boring — even on launch day.

Create your first event by hand or through an agent, then let Sorted handle the link, the embed, the waitlist, and the payments.