Queue as a service

A fair waiting room
for any launch.

Sorted absorbs the traffic spike, keeps every visitor updated on their place in line, releases them at your pace, and hands your app a signed token proving they waited their turn — no backend changes required.

Works with any website. Set up in under five minutes.

Flash sales, ticket drops, launches

When everyone
arrives at once.

Without a queue, every request hits your server at the same moment and it fails. With Sorted, visitors wait in arrival order and enter at your pace.

8,412

in the queue

240/min

let into your site

15 min

access per visitor

Waiting room

Product Launch Queue

Live

Your place in line

128

Estimated wait: about 4 minutes

8,412 in queue

Keep this page open. You'll go to the site automatically when it's your turn.

Three steps to a surge-proof site.

Create the queue, point visitors at it, and verify each release token before they reach your app.

01 / Create a queue

Set your target URL, release rate, and token TTL via the dashboard or API. Customize the waiting room with your own content.

POST /api/queues
{ "queue_event": {
    "title": "Flash Sale",
    "target_url": "https://shop.com/sale",
    "release_rate": 200,
    "token_ttl_minutes": 15
  } }

02 / Redirect or embed

Point visitors at sorted.fast/queue/42, or embed the waiting room with <iframe src=".../queue/42/embed"> — no changes to your backend needed.

03 / Verify tokens

Released visitors arrive at your site with a signed token. One API call confirms they waited their turn.

POST /api/queues/verify_token
{ "token": "eyJhbG..." }

→ { "valid": true,
    "visitor_id": "v_abc",
    "queue_event_id": 42 }

Plug into what you already run.

A / DNS redirect

Send launch traffic to the queue first. Released visitors return with a signed token.

sale.shop.com
  → CNAME sorted.fast
  → /queue/42
  → shop.com/sale?token=...

B / Iframe embed

Keep visitors on your page. The waiting room runs inside it.

<iframe
  src="sorted.fast
    /queue/42/embed"
  width="100%"
  height="500">
</iframe>

C / API only

Build your own waiting screen. Join, poll position and verify through REST.

POST /api/queues/:id/join
GET  /api/queues/:id/status/:v
POST /api/queues/verify_token

Why a queue helps

Every request at once, or one at a time.

Without a queue

YOUR SERVER 💥 503 502 504

Every request hits your server at once — it buckles.

With Sorted queue

WAITING ROOM 1 2 3 4 Fair FIFO order release YOUR SERVER

Visitors wait in a fair queue — released at your pace.

Architecture

Built on telecom-grade infrastructure.

Each queue runs as an isolated process with its own in-memory state — no shared database locks, no single point of failure. The same runtime that handles a large share of the world's phone calls.

  • ETS hot path — zero bottleneck on join
  • Fair FIFO ordering with microsecond timestamps
  • Real-time position updates over WebSocket PubSub
  • Cryptographically signed release tokens
Queue Worker (per queue) VISITORS join() ETS: incoming public intake ordered_set drain 50ms GenServer dedup · validate · move ETS: queue FIFO ordered release N/m Signed token + redirect to target PubSub live position updates PostgreSQL async flush

Everything you need.

Customizable waiting room

Add your own content — pricing, FAQs, promotions. Keep visitors engaged while they wait.

Configurable release rate

Control exactly how many visitors per minute reach your site. Protect your infrastructure from overload.

Embeddable widget

Drop the waiting room into your own page as an iframe, or use the standalone URL. Works either way.

Real-time position updates

Visitors see their exact position and estimated wait, updating live over WebSocket.

Signed access tokens

Released visitors get a cryptographically signed token with configurable TTL. One call to verify.

Full REST API

Create queues, check status, verify tokens — all via API. Perfect for automation and agents.

Built for any surge.

Flash sales

Ticket drops

Product launches

Registration waves

Stop crashing. Start queuing.

Free to set up. Ready before your next launch.