Paddles Up Docs
Core Concepts

Registrations

The lifecycle of a registration, where registrants see it, and how confirmations and receipts work.

A registration records that a user has signed up for a specific option on a listing.

Registrations are always created against a single option. A user can hold multiple registrations across different options on the same listing.

Lifecycle

Pending → Confirmed → Cancelled (soft delete)
                   ↘ Refunded (in part or full)
StateMeaning
PendingThe registration was created but payment (for paid options) hasn't completed
ConfirmedRegistration is live; for paid options the payment intent succeeded
RefundedA staff member or the org's Stripe Dashboard issued a refund. Refunds may be partial or full and do not automatically cancel the registration.
CancelledRegistration was cancelled. Cancellation is a soft delete — the row is preserved with a cancelled_at timestamp so it remains visible to the registrant and to staff with a "Cancelled" badge.

Cancelled rows are excluded from capacity, dedup, waitlist, and check-in queries but still appear in the registrant's "Registrations" list and the staff listings table.

Where registrants see their registration

  • https://register.paddlesup.io/registrations — the registrant's full list of registrations, sorted by event date.
  • The listing landing page — the registrant's current registration is highlighted with a green "You are registered" indicator on the option detail, a "You" badge on their row in the registrations list, and aria-current="true" on the row.
  • Confirmation view — every listing page supports a ?view=confirmation state with a top-level View Confirmation CTA. This view shows registration status, payment status, the last error (if any), and a View receipt link when one is available. Clicking a row in /registrations routes directly to /l/<org>/<event>?view=confirmation.

Receipts

For paid registrations:

  • The registrant's email and a readable description (<event> – <option>) are sent to Stripe with the PaymentIntent so Stripe sends a native receipt email.
  • The Stripe-hosted receipt_url is persisted from the charge.succeeded webhook and surfaced as View receipt in the confirmation view.

Compete membership side effect

Registering for a listing automatically creates (idempotently upserts) a compete membership for the registrant. This connects the registrant to the organization that owns the event without requiring a separate join step.

Confirmation, refund, and cancel actions

  • Registrants confirm and pay through the public /l/... flow.
  • Staff manage refunds and cancellations from the staff registrations detail view — see Refunds and cancellations.

On this page