# Appearance Settings
Source: https://docs.signupbreeze.com/account/appearance
Switch between light mode, dark mode, or system default.
SignUpBreeze supports light and dark themes so you can work in the environment that's most comfortable for you.
## Changing your theme
Go to **Settings > Appearance** to choose from three options:
* **Light** — a bright, white background
* **Dark** — a dark background that's easier on the eyes in low-light environments
* **System** — automatically follows your device's light/dark mode setting
Your theme preference is saved to your account and applies across all devices.
# Billing & Plans
Source: https://docs.signupbreeze.com/account/billing
Compare plans and manage your organization's subscription.
SignUpBreeze offers a free plan plus two paid plans for teams and larger organizations. Manage everything from **Settings > Billing**.
## Plans
| | Free | Starter | Pro |
| ------------------------------ | --------- | ------- | --------- |
| **Monthly price** | \$0 | \$9 | \$29 |
| **Active events** | 3 | 10 | Unlimited |
| **Organization members** | 1 | 3 | Unlimited |
| **Registrations per shift** | 100 | 1,000 | Unlimited |
| **Custom questions per event** | — | 3 | 10 |
| **Waitlist management** | — | ✓ | ✓ |
| **Configurable reminders** | — | ✓ | ✓ |
| **CSV export** | — | ✓ | ✓ |
| **Remove branding** | — | — | ✓ |
| **Custom event URLs** | — | — | ✓ |
| **Support** | Community | Email | Priority |
## Subscribing
On the free plan, open **Settings > Billing** and review the plan cards under **Upgrade your plan**. Click **Subscribe** on the plan you want, and you'll be taken to a secure checkout to enter payment details. Once checkout completes, your new features become available within a moment.
Paid plans start with a **30-day free trial**. You won't be charged until the trial ends, and you can cancel anytime before then to avoid a charge.
Only organization owners and admins can manage billing.
## Managing your subscription
Once subscribed, the **Billing** page shows your current plan and its status (**Active**, **Canceling**, or **Past due**). From here you can:
* **Change plan** — switch between paid plans.
* **Manage billing** — update your payment method, view invoices, and download receipts.
* **Cancel subscription** — cancel anytime. You keep access until the end of the current billing period.
## Payment issues
If a payment fails, your plan is marked **Past due** and you'll be prompted to update your payment method. Update it from the billing portal to avoid losing access to paid features.
# Notification Settings
Source: https://docs.signupbreeze.com/account/notifications
Control which email notifications you receive from SignUpBreeze.
Manage your email notification preferences from **Settings > Notifications**.
## Daily Digest
The **Daily Digest** sends you a morning email summarizing sign-up activity across all your events over the last 24 hours. It's enabled by default.
Each digest includes:
* **A running total** of new sign-ups and cancellations across your events.
* **A per-event breakdown**, with each shift's fill count (for example, "3/5") and a **+N today** marker for new sign-ups. Full shifts are flagged **FULL**.
* **Direct links** to each event and to your full dashboard.
Toggle the digest on or off from **Settings > Notifications** and click **Save** to update your preference. Every digest email also includes a link to change this setting.
# Organizations
Source: https://docs.signupbreeze.com/account/organizations
Collaborate with others by creating and managing organizations.
Organizations let you create shared workspaces where multiple people can manage events together.
## Switching organizations
Every account belongs to at least one organization. The organization switcher sits at the top of the sidebar and shows the name of the one you're currently working in.
Click the switcher to:
* **Switch organizations** — select any organization you belong to. A checkmark marks your current one. You'll land on a valid page for that organization.
* **Create a new organization** — click **New organization**, give it a name, and click **Create organization**. You'll be taken straight to the new organization's settings.
Each organization keeps its own events, shifts, and registrations separate. Switching changes which organization's data you see across the app.
## Renaming an organization
Go to **Settings > General**, update the **Organization name** field, and click **Save**. The name is displayed across the platform wherever your organization appears.
On a calendar-driven organization, this field reads **Team name** instead.
## Availability
Inviting others to collaborate is a paid feature. On the free plan, you'll see a prompt to join the waitlist when you visit **Settings > Organizations**.
Once available on your plan, you'll be able to invite members and manage them in one shared organization.
# Profile Settings
Source: https://docs.signupbreeze.com/account/profile
How to update your name, email, and timezone, and delete your account.
Your profile settings let you manage your personal information.
## Updating your profile
Go to **Settings > Profile** to update the following:
* **Name** — your display name across SignUpBreeze
* **Email** — the email address associated with your account
* **Timezone** — used as the default timezone when you create new events
Click **Save** to apply your changes.
Your organization's name lives with the organization, not your profile. To change it, go to **Settings > General**. See [Organizations](/account/organizations).
## Deleting your account
At the bottom of the Profile page, click the **Delete account** button to permanently delete your account and all of its resources. This action cannot be undone.
# Signing In & Security
Source: https://docs.signupbreeze.com/account/security
How to sign in to SignUpBreeze with a one-time email code or a social account.
SignUpBreeze is **passwordless** — there's no password to create, remember, or reset. You sign in with a one-time code sent to your email, or with a Google or Apple account.
## Signing in with an email code
1. Go to the sign-in page and enter your **email address**.
2. We email you a **6-digit code**. Open your inbox and copy it.
3. Enter the code to sign in.
If this is your first time, you'll be asked for your name (and, optionally, an organization name) to finish creating your account — all in the same flow.
Codes are single-use and expire after a short time. If yours doesn't arrive, check your spam folder or request a new one. Because there's no password, no one can sign in without access to your email.
## Signing in with Google or Apple
Prefer one tap? Choose **Continue with Google** or **Continue with Apple** on the sign-in page. You'll authenticate with that provider and land back in SignUpBreeze. If you don't have an account yet, one is created for you using the name and email from that provider.
You can use the email code and social sign-in interchangeably, as long as they share the same email address.
## Confirming your identity
When you open a sensitive part of your account, SignUpBreeze may ask you to confirm it's really you by entering a fresh code emailed to you. This keeps your account protected even if you step away from a signed-in device.
# Getting Help
Source: https://docs.signupbreeze.com/account/support
How to reach us, and what support is included on your plan.
Every plan includes the documentation and the **Support** page at
**Settings > Support**. What you can do from that page depends on your plan.
## Start with the documentation
Most questions are answered here, and it is the fastest route to an answer on any
plan. The Support page links straight to it.
## Support by plan
| Plan | What's included |
| ----------- | -------------------------------------------------- |
| **Free** | Community support |
| **Starter** | Email support through the in-app messenger |
| **Pro** | Priority support — your requests are triaged first |
### Free
Your plan includes community support. Our community portal is on the way; until
it opens, the documentation is the place to start.
If you need to reach us directly, direct support is included on Starter and Pro.
Owners and admins can compare plans from **Settings > Billing**.
### Starter and Pro
Open **Settings > Support** and choose **New message**. Pick a type — bug,
question, feature request, or other — give it a subject, and describe what
happened. We reply by email, and the conversation stays on the Support page so
you can follow it and reply there too.
Pro requests are triaged ahead of the queue. Priority is about the order we get
to things, not a guaranteed response time.
Only organization owners and admins can open and read support requests. Members
see the documentation and are pointed at an owner or admin who can open a
request on their behalf.
## Switching organizations
Support requests belong to an organization, not to you personally. If you belong
to more than one, switch to the right organization before opening a request — the
Support page only shows that organization's conversations.
# Authentication
Source: https://docs.signupbreeze.com/api-reference/authentication
How API tokens work, who they belong to, and when they expire.
Every request needs a bearer token:
```bash theme={null}
curl https://api.signupbreeze.com/v1/team \
--header "Authorization: Bearer YOUR_API_TOKEN"
```
There is no other way in. A browser session on signupbreeze.com does not authenticate an API request, even in the same browser.
## Creating a token
Go to **Settings > API**. You need to be an owner or an admin.
Grant only the [scopes](/api-reference/scopes) the integration needs. A token that only reads events cannot delete one.
Pick 30, 90, 180, or 365 days. The default is 365.
It is shown once, at creation, and never again. Store it somewhere your integration can read it and you cannot lose it.
## Tokens belong to the organization
A token is not tied to the person who created it. If that admin leaves and their account is removed, the token keeps working and the integration keeps running.
The practical consequence: anyone with admin access to the organization can see that a token exists and revoke it. Name your tokens after the integration that uses them, not after yourself.
## Every token expires
There is no permanent token. The longest life you can choose is a year, and that is also the default.
Plan for the renewal rather than discovering it. Create the replacement token, deploy it, then revoke the old one — nothing that uses the old token keeps working past its expiry date, which is shown in **Settings > API**.
An expired token is refused with `401`, exactly like a revoked one. Your integration cannot tell the difference, and does not need to: both mean "get a new token".
Expired tokens stay visible in settings for 90 days after they lapse, so there is a record to look at when someone asks why an integration stopped.
## Revoking a token
Revoke it in **Settings > API**. It stops working immediately.
Revoke a token the moment you suspect it has leaked — into a git history, a CI log, a screenshot, a pasted snippet. Creating a replacement takes a few seconds.
## Rate limits
Your limit depends on your plan, and applies per token:
| Plan | Rate limit |
| ------- | ---------------- |
| Free | 30 requests/min |
| Starter | 120 requests/min |
| Pro | 300 requests/min |
Over that, the API answers `429` with a `Retry-After` header telling you how many seconds to wait.
Give each integration its own token. Sharing one token across several tools means they share a rate limit, and a busy one can starve the others.
# Errors
Source: https://docs.signupbreeze.com/api-reference/errors
What each status code means and what to do about it.
Errors are JSON, and always carry a `message`:
```json theme={null}
{
"message": "Not found."
}
```
## Status codes
| Code | Meaning | What to do |
| ----- | ----------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
| `401` | The token is missing, revoked, or expired. | Get a new token. Retrying will not help. |
| `403` | The token is valid but lacks the required scope. | Create a token with the right [scopes](/api-reference/scopes). |
| `404` | No such record — or it belongs to another organization. | See below. |
| `422` | The request was understood but rejected. | Read `errors` for the specific fields, and fix the request. |
| `429` | You have exceeded your plan's [rate limit](/api-reference/authentication#rate-limits) for this token. | Wait the number of seconds in `Retry-After`, then retry. |
## A 404 may mean "not yours"
Everything a token can reach belongs to its organization. Asking for a record that belongs to a different organization returns `404`, not `403`.
This is deliberate. A `403` would confirm the record exists, which would let anyone with a token check whether a given ID is real. So treat `404` as "this ID is not available to this token" rather than "this ID does not exist anywhere".
In practice, a `404` on an ID you are sure about usually means the token belongs to a different organization than you thought.
## Validation errors
A `422` lists the problem per field:
```json theme={null}
{
"message": "The start date field is required.",
"errors": {
"start_date": ["The start date field is required."]
}
}
```
Fix the request before retrying. Retrying an unchanged `422` gives the same `422`, and — unlike a successful write — a failed request is never [replayed from an idempotency key](/api-reference/idempotency), so the retry runs for real once the input is right.
## Plan limits
Hitting a plan limit is an answer, not a fault. It comes back as `422` with an `error` field you can match on:
```json theme={null}
{
"message": "You have reached the maximum number of active events for your plan.",
"error": "plan_limit_reached",
"limit": {
"feature": "max_active_events",
"limit": 10
}
}
```
The distinction matters for anything acting on its own: `plan_limit_reached` means "the request was fine, the plan is the obstacle" and calls for upgrading or archiving an old event — not for rewriting the request and trying again.
## Retrying safely
`429` and `5xx` are worth retrying with backoff. `4xx` other than `429` will return the same answer until you change something.
Whenever you retry a write, send the same [`Idempotency-Key`](/api-reference/idempotency) you used the first time. That way a retry after a timeout — where the write may well have succeeded before the connection dropped — replays the original response instead of creating a duplicate.
# Create an event
Source: https://docs.signupbreeze.com/api-reference/events/create-an-event
https://api.signupbreeze.com/openapi.yaml post /v1/events
Creates an event and, optionally, all of its shifts in the same call — which is
usually what you want, since an event with no shifts has nothing to sign up for.
Send an `Idempotency-Key` header. Repeating a create with the same key replays the
original response instead of creating a second event.
Requires the `events:write` scope.
# Delete an event
Source: https://docs.signupbreeze.com/api-reference/events/delete-an-event
https://api.signupbreeze.com/openapi.yaml delete /v1/events/{id}
Deletes the event and its shifts. Everyone with a confirmed signup is emailed that
it was cancelled, so this is not a quiet operation — unpublish instead if you only
want it out of sight.
Requires the `events:write` scope.
# Duplicate an event
Source: https://docs.signupbreeze.com/api-reference/events/duplicate-an-event
https://api.signupbreeze.com/openapi.yaml post /v1/events/{event_id}/duplicate
Copies the event, its shifts, and its signup questions to a new start date. Shift
times shift along with it, keeping their time of day. Signups are **not** copied.
The copy is always created unpublished, so it does not count against your plan's
active-event limit until you publish it. This is the endpoint to use for "set up the
same signup for the next eight games".
Requires the `events:write` scope.
# Get an event
Source: https://docs.signupbreeze.com/api-reference/events/get-an-event
https://api.signupbreeze.com/openapi.yaml get /v1/events/{id}
Returns one event with its shifts and how full each one is. To ask only "what still
needs people?", use the coverage endpoint instead — it answers that in one call.
Requires the `events:read` scope.
# Get an event's coverage
Source: https://docs.signupbreeze.com/api-reference/events/get-an-events-coverage
https://api.signupbreeze.com/openapi.yaml get /v1/events/{event_id}/coverage
Answers "what still needs people?" in one call: how full every shift is, plus a
summary of the event as a whole.
Prefer this over listing shifts and signups separately. Working it out from those
takes several requests and some arithmetic; this gives you the answer, which matters
when the caller is an agent deciding what to do rather than a page rendering a table.
`hours_until_start` is negative once the event has begun, so `slots_unfilled > 0`
together with a small positive value is the "chase people now" signal.
Requires the `events:read` scope.
# List events
Source: https://docs.signupbreeze.com/api-reference/events/list-events
https://api.signupbreeze.com/openapi.yaml get /v1/events
Returns the organization's events, soonest-starting last. Cursor paginated: follow
`meta.next_cursor` rather than assuming page numbers.
Requires the `events:read` scope.
# Update an event
Source: https://docs.signupbreeze.com/api-reference/events/update-an-event
https://api.signupbreeze.com/openapi.yaml patch /v1/events/{id}
Send only the fields you are changing; anything omitted keeps its current value.
Publish an event by sending `is_published: true`.
Changing the title, location, or dates emails confirmed volunteers about a minute
later. Pass `notify_volunteers: false` to correct a typo without mailing everyone.
Requires the `events:write` scope.
# Idempotency
Source: https://docs.signupbreeze.com/api-reference/idempotency
Send an Idempotency-Key so a retried write happens once, not twice.
Retries happen. A request times out, a connection drops, or an agent decides it never got an answer — and the same call goes out again. Without protection, "create the snack signup for Saturday" run twice creates two events.
Send an `Idempotency-Key` header on every write and that stops being possible.
```bash theme={null}
curl --request POST https://api.signupbreeze.com/v1/events \
--header "Authorization: Bearer YOUR_API_TOKEN" \
--header "Idempotency-Key: a7f3c1e0-2b44-4f6e-9c1d-8e5b0a2d7f31" \
--header "Content-Type: application/json" \
--data '{"title": "Fall Festival", "start_date": "2026-09-12", "timezone": "America/Los_Angeles"}'
```
## How it works
The first request with a given key runs normally. If it succeeds, its response is stored for 24 hours.
Any later request with the same key gets that stored response replayed — the same status code, the same body — and nothing happens on the server. Replayed responses carry an `Idempotent-Replay: true` header, so you can tell the two apart if you care.
After 24 hours the key is forgotten and the same key would run for real again. That is far longer than any sensible retry window.
## Choosing keys
Use a UUID, one per logical operation. Generate it before the first attempt and reuse the same value for every retry of that same operation.
Do not reuse a key across different operations. Keys are matched together with the method and path, so `POST /v1/events` and `POST /v1/events/{id}/duplicate` with the same key do not collide — but two different events created with one key will, and the second will silently return the first one's response.
Keys are scoped to your token. Another organization using the same key never sees your response.
## Only successful writes are replayed
If a write fails — bad input, a missing scope, a plan limit — nothing is stored. Fix the problem and retry with the same key, and the request runs for real.
Reads ignore the header entirely. `GET` requests change nothing, so there is nothing to protect against.
## Should you always send one?
Yes, on writes. It costs a header, and it is the difference between a network blip being invisible and a duplicate event that someone has to find and delete. This matters most when the caller is an AI agent, which retries far more readily than a person clicking a button.
# API Introduction
Source: https://docs.signupbreeze.com/api-reference/introduction
Manage events, shifts, and signups programmatically — from your own scripts, an automation platform, or an AI agent.
The SignUpBreeze API lets other software do what you would otherwise do by hand: create an event, add shifts, check what still needs volunteers, and read who signed up.
```
https://api.signupbreeze.com/v1
```
API access is included on every plan — plans differ by [rate limit](/api-reference/authentication#rate-limits), not by access. Create a token under **Settings > API** in your organization.
## What you can do
Events and shifts are read-write. You can create an event, add and resize its shifts, duplicate it for next month, publish it, and delete it.
Signups are read-only. You can see who has registered for a shift, but you cannot add or cancel a registration through the API — volunteers sign up through the public event page, and that is deliberately the only way in.
The endpoint you probably want first is **coverage**. It answers "what still needs people?" for an entire event in one call, so you don't have to list shifts and registrations and do the arithmetic yourself.
## Before you start
Four rules apply to every endpoint. Each has its own page:
Every request carries a bearer token. Tokens belong to the organization and expire.
Each token grants a specific set of permissions, and no more.
Send an `Idempotency-Key` on writes so a retry doesn't create a second event.
Collections are cursor paginated. Follow `meta.next_cursor`.
## Your first request
```bash theme={null}
curl https://api.signupbreeze.com/v1/events \
--header "Authorization: Bearer YOUR_API_TOKEN" \
--header "Accept: application/json"
```
## The OpenAPI spec
The reference pages here are generated from a machine-readable spec, published at the root of the API host:
```
https://api.signupbreeze.com/openapi.yaml
https://api.signupbreeze.com/openapi.json
```
Point Postman, Insomnia, an SDK generator, or an AI agent at either URL. The spec is generated from the code that serves the API, so it describes what is actually deployed rather than what someone remembered to write down.
# Get the current organization
Source: https://docs.signupbreeze.com/api-reference/organization/get-the-current-organization
https://api.signupbreeze.com/openapi.yaml get /v1/team
Returns the organization the request's token was issued to. Tokens belong to an
organization rather than to a person, so there is no id to pass — a token can only
ever see its own.
Requires the `team:read` scope.
# Pagination
Source: https://docs.signupbreeze.com/api-reference/pagination
Collections are cursor paginated. Follow meta.next_cursor rather than counting pages.
Every endpoint that returns a list is paginated with a cursor. There are no page numbers, and asking for "page 3" is not something the API can answer.
## Reading a page
A collection response looks like this:
```json theme={null}
{
"data": [
{ "id": "019fdf11-4bb2-7039-92c3-9e7f1ee711a1", "title": "Fall Festival" }
],
"meta": {
"next_cursor": "eyJpZCI6IjAxOWZkZjExIn0"
}
}
```
`meta.next_cursor` is the whole mechanism. Pass it back as the `cursor` query parameter to get the next page:
```bash theme={null}
curl "https://api.signupbreeze.com/v1/events?cursor=eyJpZCI6IjAxOWZkZjExIn0" \
--header "Authorization: Bearer YOUR_API_TOKEN"
```
When `next_cursor` is `null`, you have reached the end. That is the only reliable stop condition — a short page is not one.
## Fetching everything
```javascript theme={null}
async function allEvents(token) {
const events = [];
let cursor = null;
do {
const url = new URL("https://api.signupbreeze.com/v1/events");
if (cursor) url.searchParams.set("cursor", cursor);
const response = await fetch(url, {
headers: { Authorization: `Bearer ${token}`, Accept: "application/json" },
});
const page = await response.json();
events.push(...page.data);
cursor = page.meta.next_cursor;
} while (cursor);
return events;
}
```
## Page size
Pages hold 25 records by default. Ask for fewer with `per_page`:
```
GET /v1/events?per_page=10
```
The maximum is 100. Ask for more and you get 100 — an integration that wants everything at once should follow cursors, not request a page large enough to time out.
## Why cursors
Cursor pagination stays correct while the data underneath is changing. With numbered pages, an event created while you are paging shifts every later record down one, and you either see something twice or miss it entirely. A cursor points at a position in the list rather than counting from the start, so that cannot happen.
The tradeoff is that you cannot jump to an arbitrary page or know the total count in advance. For the things this API returns, that has never been the useful question.
Treat a cursor as opaque. It is a token describing a position, not a record ID, and its format may change.
# Scopes
Source: https://docs.signupbreeze.com/api-reference/scopes
What each permission grants, and how to choose the smallest set an integration needs.
Every token carries a set of scopes. Each endpoint requires one, and a request whose token lacks it is refused with `403` — no matter who created the token or what plan the organization is on.
## Available scopes
| Scope | Grants |
| -------------------- | ------------------------------------------------------- |
| `team:read` | Read the organization name, slug, and settings. |
| `events:read` | List events and read their details, including coverage. |
| `events:write` | Create, update, duplicate, publish, and delete events. |
| `slots:read` | List shifts and read their capacity. |
| `slots:write` | Create, update, and delete shifts. |
| `registrations:read` | See who has signed up, including their name and email. |
Write scopes do not imply the matching read scope. An integration that creates an event and then reads it back needs both `events:write` and `events:read`.
There is no `registrations:write`. Signups are created through the public event page, and the API deliberately offers no way around that.
## Choosing scopes
Grant the least that works. Two cases cover most integrations:
**A dashboard or a reporting script** needs `events:read`, `slots:read`, and `registrations:read`. It can see everything and change nothing, so a leaked token is an information problem rather than a destructive one.
**An agent that manages events for you** needs the write scopes as well. Be deliberate here: `events:write` includes deleting an event, and deleting an event removes its shifts and signups with it.
`registrations:read` exposes volunteer names and email addresses. Grant it only to integrations that genuinely need to contact or count people, and treat the token as carrying personal data.
## Scopes are a stable contract
These exact strings are what your token carries and what your code checks. They will not be renamed or repurposed — a scope that changed meaning would silently change what an already-issued token is allowed to do. New scopes may be added as the API grows.
## When a request is refused
A `403` means the token is valid but lacks the scope the endpoint requires. Check which scopes the token was granted in **Settings > API**; you cannot add a scope to an existing token, so create a replacement with the right set.
A `404` on a record that you know exists means something different — see [errors](/api-reference/errors).
# Add a shift
Source: https://docs.signupbreeze.com/api-reference/shifts/add-a-shift
https://api.signupbreeze.com/openapi.yaml post /v1/events/{event_id}/slots
Adds a shift to an existing event. Times are wall-clock (`14:30`) and are read in
the event's own timezone — do not send an offset or a date.
Requires the `slots:write` scope.
# Delete a shift
Source: https://docs.signupbreeze.com/api-reference/shifts/delete-a-shift
https://api.signupbreeze.com/openapi.yaml delete /v1/slots/{id}
Deletes the shift. Anyone with a confirmed signup on it is emailed that it was
cancelled.
Requires the `slots:write` scope.
# List an event's shifts
Source: https://docs.signupbreeze.com/api-reference/shifts/list-an-events-shifts
https://api.signupbreeze.com/openapi.yaml get /v1/events/{event_id}/slots
Returns every shift on the event in running order, with how full each one is. Not
paginated: events have shifts, not thousands of them.
Requires the `slots:read` scope.
# Update a shift
Source: https://docs.signupbreeze.com/api-reference/shifts/update-a-shift
https://api.signupbreeze.com/openapi.yaml patch /v1/slots/{id}
Send only the fields you are changing. Changing the time or location emails the
volunteers already signed up; pass `notify_volunteers: false` to suppress that.
Lowering `capacity` below the number already signed up does not remove anyone — the
shift simply reports as over-full until someone cancels.
Requires the `slots:write` scope.
# List an event's signups
Source: https://docs.signupbreeze.com/api-reference/signups/list-an-events-signups
https://api.signupbreeze.com/openapi.yaml get /v1/events/{event_id}/registrations
Returns the event's signups oldest first, so paging through them follows the order
people actually signed up. Cursor paginated.
Includes cancelled signups by default — filter with `status` if you only want the
people who are still coming.
Requires the `registrations:read` scope.
# Changelog
Source: https://docs.signupbreeze.com/changelog
New features, improvements, and milestones for SignUpBreeze.
### Volunteers are told when an organization closes
When you delete an organization or a sports team, everyone signed up for its upcoming events now gets an email letting them know those events are cancelled and their spot has been released. People on a waitlist are included too, so nobody is left waiting for a spot that will never open.
Each person gets **one email** listing every event they were on, rather than a separate message per event. A volunteer signed up for a whole season of games hears about it once.
### An API for your organization
SignUpBreeze now has a public API, so other software can do what you would otherwise do by hand — create an event, add and resize its shifts, check what still needs volunteers, and read who signed up. Point your scripts, your automation platform, or an AI agent at it.
Create a token under **Settings > API**, granting only the scopes the integration needs, and start with the [API introduction](/api-reference/introduction).
### Get help without leaving the app
There's a new **Support** page at [Settings > Support](/account/support). On paid plans you can open a request, describe what happened, and follow the whole conversation in one place. We reply by email, and every reply shows up in the thread too.
### Support on every plan
Every plan now names what support it includes — **Community** on Free, **Email** on Starter, and **Priority** on Pro, where your requests are triaged first. The documentation and the Support page are open to everyone, whatever plan you're on. See the [plan comparison](/account/billing) or [how to get help](/account/support).
### Sharper organization logos
Logos are now resized and optimized when you upload them, so they load faster and look right everywhere. Uploads that used to fail on larger images now go through.
### Starter and Pro plans
SignUpBreeze now has paid plans for growing teams and organizations — **Starter** at \$9/mo and **Pro** at \$29/mo — each with a **30-day free trial**. See what's included and subscribe from [Settings > Billing](/account/billing).
### Team collaboration
On paid plans, invite teammates into your organization and manage their roles from **Settings > Members**, so more than one person can run your events.
### Custom questions
Collect exactly what you need at sign-up — t-shirt sizes, dietary needs, emergency contacts, and more. Build a [reusable question library](/organizers/custom-questions) and attach questions to any event.
### Waitlists
Let volunteers [join a waitlist](/organizers/managing-waitlists) when a shift is full. When a spot opens, the next person in line is offered it — automatically or by you.
### Configurable reminders
Fine-tune [when shift reminders send](/organizers/reminders) — set your own times, add or remove reminders, or turn them off — as a team-wide default or per event.
### Export registrations
Download your event's registrations as a CSV, including custom-question answers, from the **Shifts & Registrations** tab.
### Team calendars for sports
Coaches and team managers using **PlayMetrics** can connect their schedule so every game gets its own sign-up page for snacks and drinks — kept in sync automatically. [Reach out](mailto:hello@signupbreeze.com) to get set up.
### Welcome emails
New organizers now get a welcome email, plus friendly nudges when they publish their first event and receive their first sign-up.
### Refreshed look
An updated color palette across the app for a cleaner, brighter feel.
### Multiple organizations
Run separate workspaces from one account. Switch between your organizations from the sidebar, or create a new one in a couple of clicks.
### New email provider
Transactional emails now send through Resend for improved deliverability and reliability.
### Refreshed Event UI for mobile
The event management interface has been refactored for a cleaner, more responsive experience on small screens and touch devices.
### Earlier shift reminders
Reminder emails now go out 48 hours before a shift, giving volunteers more lead time.
### Documentation site
Comprehensive documentation is now live at [docs.signupbreeze.com](https://docs.signupbreeze.com). Covers getting started, organizer guides, volunteer guides, and account settings.
### FAQ page
A new [FAQ page](https://signupbreeze.com/faq) answers common questions about creating events, managing signups, and how SignUpBreeze works — right on the main site.
### QR codes for events
Every event now has an automatically generated QR code. Download it as a PNG for flyers, posters, and bulletins. Volunteers scan and sign up instantly.
### Notification settings
New settings page to control which email notifications you receive, including a daily digest of sign-up activity.
### Dark mode
Full dark mode support across the entire app. Set it in Settings > Appearance, or let it follow your system preference.
### Social login
Sign in with Google or Apple, alongside signing in with a one-time code sent to your email — no password required.
### Public event pages
Every event gets a clean, mobile-optimized public page with a shareable URL. Volunteers see shift availability and sign up without creating an account.
### Magic link registration
Volunteers sign up with just their name and email. A secure magic link is emailed for confirmation and future reference — no password needed.
### Event management
Create, edit, and organize events with shifts. Full dashboard for tracking volunteer signups across all your events.
### SignUpBreeze launch
Initial release of SignUpBreeze — a modern, mobile-first, ad-free alternative to SignUpGenius.
# What is SignUpBreeze?
Source: https://docs.signupbreeze.com/getting-started/introduction
A modern, mobile-first volunteer signup platform that's clean, fast, and ad-free.
SignUpBreeze is a modern alternative to legacy signup tools like SignUpGenius. It's built for organizers who want a clean, ad-free experience and volunteers who want to sign up in seconds from their phone.
## Who it's for
**Organizers** create events with time-based shifts and share a single link. No spreadsheets, no back-and-forth emails.
**Volunteers** tap a link, pick a shift, and they're signed up. No account required — magic links handle everything securely.
## What makes it different
* **Mobile-first** — designed for phones first, because that's where volunteers are when they sign up.
* **Ad-free** — no banner ads, no pop-ups, no distractions. Ever.
* **No account required for volunteers** — magic links let people sign up without creating a password or remembering yet another login.
* **QR codes** — every event gets a scannable QR code for flyers, bulletins, and handouts.
## How it works
1. An organizer creates an event and adds shifts (date, time, number of spots).
2. They share the public event link or QR code.
3. Volunteers visit the page, pick a shift, and confirm with their name and email.
4. Everyone gets a confirmation — the volunteer via magic link, the organizer on their dashboard.
That's it. No friction, no clutter.
# Key Concepts
Source: https://docs.signupbreeze.com/getting-started/key-concepts
The core building blocks of SignUpBreeze — organizations, events, slots, registrations, and magic links.
Understanding a few core concepts will help you get the most out of SignUpBreeze.
## Organizations
An organization is the workspace that owns everything else — its events, slots, registrations, members, and billing. Every account belongs to at least one, and you can belong to several: a PTA, a church group, a school committee, a club. Switching organizations changes which data you see across the app.
See [Organizations](/account/organizations) for switching, creating, and renaming.
## Events
An event is the thing you're organizing volunteers for — a bake sale, a park cleanup, a weekly tutoring session, a conference. Each event has a title, description, location, and one or more shifts.
Every event gets a unique public URL (like `signupbreeze.com/e/spring-cleanup`) and a QR code that volunteers can scan to sign up.
## Slots (Shifts)
Slots are the individual time blocks within an event that volunteers sign up for. Each slot has a date, start time, end time, and a maximum number of spots.
For example, a "Saturday Park Cleanup" event might have three slots: 8am-10am, 10am-12pm, and 12pm-2pm, each with 10 spots.
## Registrations
A registration is a volunteer's commitment to a specific slot. When someone signs up for a shift, a registration is created linking them to that slot.
Organizers can view, manage, and export registrations from their event dashboard.
## Magic Links
Magic links are secure, tokenized URLs sent to volunteers after they sign up. Instead of requiring an account with a username and password, volunteers use these links to view their confirmation, manage their registration, or return to the event.
This is what makes SignUpBreeze frictionless — volunteers never need to create an account or remember a password.
# Quickstart
Source: https://docs.signupbreeze.com/getting-started/quickstart
Create your first event in under 5 minutes.
This guide walks you through creating an account, setting up your first event, and sharing it with volunteers.
## Step 1: Create your account
Go to [signupbreeze.com](https://signupbreeze.com) and sign up. You can register with your email or use Google or Apple sign-in.
After verifying your email, you'll land on your dashboard.
## Step 2: Create an event
From your dashboard, click **Create Event**. Select from a predefined template to get started quickly, or click **Start from scratch** to build your event from a blank slate.
Fill in the basics:
* **Title** — what you're organizing (e.g., "Spring Bake Sale")
* **Description** — details volunteers need to know
* **Location** — where it's happening
* **Date and time** — when it starts and ends
## Step 3: Add shifts
If you selected a template, shifts are added automatically based on the template's structure — you can adjust them as needed. If you started from scratch, you'll need to add shifts manually. Each shift needs a date, start time, end time, and the number of volunteer spots available.
You can add as many shifts as you need — morning and afternoon slots, different days, different roles.
## Step 4: Publish and share your event
Before you can share your event, enable the **Publish immediately** toggle on the event page. Once published, your event gets a unique public URL and a QR code.
Share the link via email, text, social media, or print the QR code on a flyer. Volunteers visit the page, pick a shift, enter their name and email, and they're signed up. No account needed on their end.
## Step 5: Manage signups
As volunteers register, navigate to your event and select the **Shifts & Registrations** tab. From there you can view who signed up for each shift and manage registrations as needed.
That's it — you're up and running.
# Creating Events
Source: https://docs.signupbreeze.com/organizers/creating-events
How to create and configure events in SignUpBreeze using templates or from scratch.
Events are the core of SignUpBreeze. Each event represents something you need volunteers for — a bake sale, park cleanup, watch party, fundraiser, or anything else.
## Starting a new event
From your dashboard or the Events page, click the **+ Create Event** button. You'll see the template picker.
### Using a template
SignUpBreeze comes with a library of predefined templates organized by category:
* **School & Education** — field day, classroom volunteer, book fair
* **Sports & Recreation** — tournament, practice schedule, team events
* **Community & Church** — food drive, worship service, community cleanup
* **Family & Social** — watch party, engagement party, baby shower
* **Workplace & Business** — team building, office events
* **Events & Celebrations** — fundraiser gala, holiday party, graduation
Each template includes a cover image, description, pre-configured shifts, and an event badge. Click any template to create an event based on it — the title, description, shifts, cover image, and appearance settings are all pre-filled for you.
### Starting from scratch
Click the **Start from scratch** button in the top right to create a blank event. You'll fill in everything yourself.
## Event details
Whether you chose a template or started from scratch, you can edit all event details from the **Details** tab:
* **Title** (required) — the name of your event
* **Description** — what volunteers need to know (what to bring, expectations, parking, etc.)
* **Location** — a physical address or meeting URL (placeholder hint: "e.g. Centennial Park Main Fields or meeting URL")
* **Start Date** (required) — when the event begins
* **End Date** — when it ends (can be the same day for single-day events)
* **Timezone** — defaults to your local timezone, can be changed via dropdown
* **Published** — toggle to make the event visible on its public page
Click **Save** to apply your changes.
## Publishing your event
Events are unpublished by default. When you're ready to share your event with volunteers, go to the **Details** tab and turn on the **Published** toggle, then click **Save**.
Once published, a green "Published" badge appears on the event overview, and the public event page becomes accessible to anyone with the link.
# Custom Questions
Source: https://docs.signupbreeze.com/organizers/custom-questions
Build a reusable library of sign-up questions and attach them to your events.
Custom questions let you collect extra information when volunteers sign up — t-shirt sizes, dietary needs, emergency contacts, and more. You build a question once in your organization's library, then reuse it across as many events as you like.
## Availability
Custom questions are available on paid plans. The number you can add per event depends on your plan:
* **Free** — not available.
* **Starter** — up to 3 questions per event.
* **Pro** — up to 10 questions per event.
## Building your question library
Go to **Settings > Questions** to manage your organization's question library. Click **Add Question** and set:
* **Question** — the label volunteers see, such as "What is your t-shirt size?"
* **Type** — Text, Textarea, Select (single choice), Multi select (multiple choices), or Checkbox.
* **Options** — for Select and Multi select, add the choices volunteers can pick from.
* **Required** — whether volunteers must answer this question to sign up.
Drag questions by the handle to reorder them. To change a question later, click the **pencil** icon; to delete it, click the **trash** icon.
Deleting a question removes it from every event it's attached to. Editing a question updates it everywhere it's used.
## Adding questions to an event
Open an event and select the **Questions** tab. Your library questions are listed here.
1. **Select questions** — check the questions you want on this event, up to your plan's limit. A counter shows how many you've used (for example, "2 of 3 questions used").
2. **Set the order** — use the up and down arrows to arrange how questions appear on the sign-up form.
3. **Override required/optional** — toggle a question between **Required** and **Optional** for this event, regardless of its library default.
4. **Save** — click **Save** to apply.
Your library is empty? You'll be prompted to create questions in **Settings > Questions** first.
## How volunteers answer
Once attached, questions appear on the event's public sign-up form. Volunteers answer them as part of signing up, and again when accepting a spot from a waitlist. You'll see each volunteer's answers next to their registration on the **Shifts & Registrations** tab.
# Managing Shifts
Source: https://docs.signupbreeze.com/organizers/managing-shifts
How to add, edit, and organize shifts within your events.
Shifts are the individual roles or time blocks within an event that volunteers sign up for. Each shift has a name, a capacity, and a status.
## Viewing shifts
Navigate to your event and select the **Shifts & Registrations** tab. You'll see all shifts listed with their registrations.
Each shift shows:
* **Shift name** — e.g. "Food & Snacks", "Setup", "Cleanup Crew"
* **Status badge** — "Open" (accepting signups) or "Full"
* **Fill count** — e.g. "1/5 filled" with a progress bar
* **Registrations table** — volunteers who signed up, with their name, email, status, and registration date
## Adding a shift
Click the **+ Add Shift** button in the top right of the Shifts & Registrations page. Fill in the shift name and the number of volunteer spots available.
If you created your event from a template, shifts are already pre-configured based on the template. For example, a "Watch Party" template comes with "Food & Snacks" and "Setup" shifts already created.
## Editing a shift
Click the **Edit** button next to any shift to update its name or capacity. Changes are saved immediately.
## Deleting a shift
Click the **Delete** button next to a shift to remove it. This will also remove any registrations associated with that shift.
## Shift status
Shifts are automatically marked as **Open** when they have available spots and **Full** when all spots are taken. On the public event page, full shifts no longer show a "Sign Up" button.
## Filtering
Use the filter icon at the top of the Shifts & Registrations page to narrow down what you see.
# Managing Signups
Source: https://docs.signupbreeze.com/organizers/managing-signups
How to view and manage volunteer registrations for your events.
Once volunteers start signing up for your event, you can track and manage their registrations from the **Shifts & Registrations** tab.
## Viewing registrations
Navigate to your event and select the **Shifts & Registrations** tab. Registrations are grouped by shift. For each registration, you'll see:
* **Name** — the volunteer's name
* **Email** — their email address (clickable)
* **Status** — "Confirmed" or other status badges
* **Registered** — the date and time they signed up
## Removing a registration
Click the **X** button to the right of any registration to remove a volunteer from that shift. This frees up the spot for someone else.
## Exporting registrations (CSV)
On paid plans, you can download your event's registrations as a spreadsheet. From the **Shifts & Registrations** tab, open the actions menu and choose **Export CSV**. The file includes each volunteer's status, name, email, shift, sign-up time, and their answers to any custom questions on the event.
CSV export is a paid feature. On the free plan, the option isn't available.
## Monitoring capacity
Each shift shows a fill count (e.g. "2/3 filled") with a visual progress bar. This gives you a quick sense of which shifts still need people and which are close to full.
## Event overview summary
For a high-level view, go to the **Overview** tab. The Summary section shows three cards:
* **Shifts** — total number of shifts in the event
* **Registrations** — total number of signups across all shifts
* **Capacity** — total spots available across all shifts
This gives you a snapshot without needing to dig into individual shifts.
# Managing Waitlists
Source: https://docs.signupbreeze.com/organizers/managing-waitlists
Let volunteers join a waitlist when shifts fill up, and manage who gets promoted.
Waitlists let volunteers line up for shifts that are already full. When a spot opens, the next person in line is offered the spot — automatically or by you.
## Availability
Waitlist management is a paid feature. On the free plan, the **Waitlist** tab shows a prompt to upgrade, and the settings are locked.
Once available on your plan, you can enable waitlists per event and manage the line from the **Shifts & Registrations** tab.
## Enabling a waitlist
Open your event and select the **Waitlist** tab. Turn on **Enable waitlist**, then configure:
* **Maximum waitlist size per shift** — how many volunteers can wait for each shift (1–50).
* **Auto-promote** — automatically offer an open spot to the next person in line. Leave this on for a hands-off waitlist, or turn it off to promote people yourself.
* **Acceptance window (hours)** — how long a promoted volunteer has to accept before the offer moves on (1–72).
Click **Save**. Once enabled, full shifts on your public event page show a **Join Waitlist** button instead of being closed off.
The **Waitlist** tab also shows a live count of how many volunteers are **Waiting** and how many have a **Pending** offer.
## Managing the waitlist
Waitlisters appear under each shift on the **Shifts & Registrations** tab, in line order. For each person you can:
* **Promote** — offer the open spot to that person. They're notified and have until the end of the acceptance window to accept.
* **Reorder** — use the up and down arrows to move someone earlier or later in line.
* **Remove** — take someone off the waitlist entirely.
A waitlister's status shows as **Waiting** or **Offered** (a promotion is pending their response).
With **Auto-promote** on, spots are offered automatically as they open. Manual **Promote** is there for when you want to choose who gets the next spot.
## If your plan changes
If your plan no longer includes waitlists, any existing waitlists stay visible so you can wind them down. You can still **remove** people, but **promoting** and **reordering** are disabled until you're on an active plan again.
# Reminders
Source: https://docs.signupbreeze.com/organizers/reminders
How volunteer shift reminders work and how to customize when they send.
SignUpBreeze automatically emails volunteers to remind them about the shifts they've signed up for, so fewer people forget to show up.
## Default reminders
On every plan, volunteers receive reminders on a recommended schedule: **1 week**, **48 hours**, and **2 hours** before each shift. You don't have to set anything up — reminders send on their own.
## Customizing your schedule
On paid plans, you can change when reminders send — add your own times, remove ones you don't want, or turn reminders off entirely.
### Set an organization-wide default
Go to **Settings > Reminders** to set the default schedule for all new events in your organization.
* Leave **Use the recommended schedule** on to keep the 1 week / 48 hours / 2 hours default.
* Turn it off to build your own schedule. Add a row for each reminder — choose a number and a unit (**minutes**, **hours**, **days**, or **weeks**) **before the shift** — then click **Save**.
Each reminder must fall between **30 minutes** and **8 weeks** before a shift. Your plan sets how many reminders you can add per schedule.
Remove every row to send **no** reminders by default. New events will inherit whatever you set here unless they define their own schedule.
### Override for a single event
Open an event and select the **Reminders** tab.
* Leave **Use organization default schedule** on to follow your organization's default.
* Turn it off to set a **custom schedule for this event**. This replaces the default reminders for that event only.
Click **Save** to apply. As with the organization default, an empty schedule means that event sends no reminders.
# Sharing Events
Source: https://docs.signupbreeze.com/organizers/sharing-events
How to share your event with volunteers using links, QR codes, and social sharing.
Getting your event in front of volunteers is easy. The event overview page has everything you need to share.
## Public event link
Every published event has a unique public URL displayed prominently on the **Overview** tab under "Public Link." Click the copy icon next to the URL to copy it to your clipboard.
The URL looks like: `signupbreeze.com/e/watch-party-m2EiqL`
Share this link via email, text message, social media, group chats, newsletters — anywhere you communicate with your volunteers.
## Social sharing buttons
Below the public link, you'll find one-click sharing buttons for:
* **Facebook** — share directly to Facebook
* **Twitter / X** — post to X (formerly Twitter)
* **Bluesky** — share on Bluesky
* **Email** — open a pre-filled email with the event link
## QR codes
Every event automatically gets a QR code, shown on the right side of the Overview tab under "QR Code for Print." The default size is 500x500 pixels — sized for flyers and posters.
Click the QR code to download it as a PNG image. Use it on printed materials like flyers, bulletin boards, church bulletins, or posters. When scanned, it takes the volunteer directly to your event's signup page.
## Event preview
Click the **View** button in the top right of the event overview to see exactly what volunteers will see on the public event page. This lets you verify the cover image, description, shift list, and overall appearance before sharing.
## Tips for sharing
* **Keep the event description concise** — volunteers are often reading on their phones
* **Include the key details upfront** — date, location, what they're volunteering for
* **Use QR codes on printed materials** — they make it effortless for people to sign up on the spot
* **Use the social sharing buttons** — one click and the link is posted
## Customizing appearance before sharing
Before sharing, visit the **Appearance** tab to customize how your event looks to volunteers:
* **Theme** — choose a color scheme for the public event page (e.g. "Ocean Blue")
* **Cover Image** — select from built-in illustrations that match your event type, or clear it to show a colored gradient instead
* **Event Category** — sets the event category (cover image, theme, and badge are managed separately)
* **Event Badge** — a text overlay displayed on the cover image (e.g. "WATCH PARTY")
A live preview on the right side of the Appearance tab shows exactly how the public page will look as you make changes. Click **Save** when you're happy with the result.
# Team Calendars
Source: https://docs.signupbreeze.com/organizers/team-calendars
Connect a PlayMetrics calendar so your team's games appear automatically, with parents signing up for drinks and snacks.
Team calendars are built for sports coaches and team managers. Connect your team's PlayMetrics calendar once, and SignUpBreeze keeps a sign-up page in sync for every game — so parents can claim drinks and snacks without you lifting a finger for the rest of the season.
You paste your calendar link, choose your team's look, and share a single page. New games appear on their own, schedule changes flow through automatically, and you never have to create an event by hand.
A team calendar replaces manual event creation. When you set up a calendar-driven team, your games are managed entirely by the feed — the usual "Create event" tools are hidden for that team.
## Getting started
Team calendars are built for sports teams and clubs that manage their schedule in **PlayMetrics**. To get set up, reach out to us at [hello@signupbreeze.com](mailto:hello@signupbreeze.com) and we'll enable a calendar-driven team for you.
Once your team is ready, you're taken straight to the **Calendar** settings to connect your feed — covered next.
## Connecting your PlayMetrics feed
Open your team's settings and select the **Calendar** tab. Fill in:
* **PlayMetrics calendar URL** — paste your team's calendar link. The dedicated games-only feed is recommended, but any of your team's PlayMetrics calendar links will work — SignUpBreeze always filters down to games.
* **Sport** — choose your sport.
* **Theme** — pick one of the preset color themes. It's applied to your public team page and to every game's sign-up page.
* **Team logo** — upload a logo to show at the top of your team page.
Click **Connect & sync**. SignUpBreeze immediately checks the feed and pulls in your games. If the link isn't a valid calendar URL, you'll see an error and nothing is saved — just fix the link and try again.
In PlayMetrics, open your team's schedule and look for the calendar subscription (`.ics`) link. Copying the games-only feed keeps practices out from the start, though SignUpBreeze ignores practices either way.
## How games appear
Each game in your feed becomes its own event:
* The title reads **vs Opponent** for home games and **@ Opponent** for away games.
* A **Game** badge marks it as a game.
* The date, time, location, and details (arrival time, uniform, venue) come straight from the feed.
* Two sign-up slots are added automatically — **Drinks** and **Snacks** — each for one person.
Practices and other non-game items on the feed are skipped, so your team page stays focused on games.
## Keeping games in sync
Your calendar stays current on its own:
* **Daily sync** — SignUpBreeze checks your feed every day and applies any changes.
* **Sync now** — need an update right away? Use the **Sync now** button on the Calendar settings tab.
When something changes in the feed, SignUpBreeze updates the matching game in place:
* **Reschedules** — if a game's time or location changes, the event is updated and any parents who already signed up are emailed about the change. Their sign-ups are kept.
* **Cancellations** — if a game drops off the feed, its page is taken down and signed-up parents are notified. If that game later returns to the feed, its page comes back automatically.
The **Calendar** tab shows when your feed last synced so you can confirm everything is up to date.
A feed that briefly returns no games won't wipe your schedule — SignUpBreeze leaves your games in place and flags the anomaly instead of cancelling everything.
## Sharing your team page
Your team has one public page that lists all upcoming games. Share its link at the start of the season and you're done — it always reflects the latest schedule.
The URL looks like: `signupbreeze.com/t/atlanta-fire-bu15`
Send it however you reach your team's families — group chat, email, a team app, or a season welcome message.
### What parents see
On the team page, families see your logo and team name, then every upcoming game with its date, time, opponent, and venue. Each game shows whether **Drinks** and **Snacks** are still open or who's already bringing them.
To sign up, a parent taps a game, which opens its sign-up page, and claims a slot — no account needed. They confirm with their name and email and get a magic link to manage their sign-up later, exactly like any other SignUpBreeze event.
Past games drop off the page automatically, so the list always shows what's coming up next.
# Magic Links
Source: https://docs.signupbreeze.com/volunteers/magic-links
How magic links work and how to use them to manage your signup.
Magic links are secure, one-time-use URLs that let you access your registration without needing a password or account.
## How they work
When you sign up for a shift, SignUpBreeze sends you an email containing a magic link. This link is unique to your registration and is cryptographically signed so it can't be guessed or tampered with.
Clicking the link takes you directly to your confirmation page — no login required.
## What you can do with a magic link
* **View your confirmation** — see which shift you signed up for, the event details, and the organizer's info.
* **Return anytime** — bookmark or save the email to come back to your confirmation whenever you need it.
## Security
Magic links are tied to your specific registration. They can't be used to access anyone else's signup or modify other people's registrations. The tokens are long, random, and cryptographically secure.
## Didn't receive your magic link?
Check your spam or junk folder first. The email comes from SignUpBreeze and may take a minute or two to arrive. If you still don't see it, contact the event organizer for help.
# Managing Your Registrations
Source: https://docs.signupbreeze.com/volunteers/managing-registrations
How to view and manage your volunteer signups.
After signing up for a shift, you can manage your registration using the magic link sent to your email.
## Viewing your registration
Click the magic link in your confirmation email to see your registration details, including the event name, shift time, and location.
## Confirmation page
The confirmation page shows everything about your signup:
* **Event details** — title, description, and location
* **Your shift** — the date and time you signed up for
* **Registration status** — confirmation that you're signed up
## Tips
* **Save the confirmation email** — it contains your magic link for easy access later.
* **Check the event details before your shift** — organizers may update the description with last-minute information like parking directions or what to bring.
# Signing Up for an Event
Source: https://docs.signupbreeze.com/volunteers/signing-up
How to sign up for a volunteer shift — no account needed.
Signing up for a volunteer shift on SignUpBreeze takes about 30 seconds. You don't need to create an account.
## How to sign up
1. **Open the event link** — you'll get this from the organizer via email, text, social media, or by scanning a QR code on a flyer.
2. **Browse available shifts** — the event page shows a cover image, event title, date, and description, followed by a list of available shifts.
3. **Check availability** — each shift shows its name, an "Open" or "Full" badge, and a fill count with a progress bar (e.g. "1 of 5 filled").
4. **Tap Sign Up** — click the blue **Sign Up** button on the shift you want.
5. **Enter your info** — provide your name and email address.
6. **Confirm** — you'll see a confirmation page and receive a magic link via email.
No password to create, no account to manage.
## What you'll see on the event page
The event page includes:
* The event title, date (with timezone), and description
* A list of shifts with availability and "Sign Up" buttons
Shifts that are full won't have a Sign Up button — you can only sign up for shifts that still have open spots.
## After signing up
You'll be taken to a confirmation page showing your registration details. You'll also receive an email with a magic link that you can use to return to your confirmation at any time.
# Joining a Waitlist
Source: https://docs.signupbreeze.com/volunteers/waitlists
How to join a waitlist for a full shift and what happens when a spot opens up.
When a shift is full, some organizers let you join a waitlist. If a spot opens up, you'll be offered the chance to claim it — no account needed.
## Joining the waitlist
1. **Open the event link** — the same public link you'd use to sign up.
2. **Find a full shift** — full shifts show a **FULL** badge. If the organizer enabled a waitlist, you'll see a **Join Waitlist** button with your would-be position (for example, "Join Waitlist · #2").
3. **Tap Join Waitlist** — enter your name and email.
4. **Confirm** — you'll see your spot on the waitlist and we'll email you if a spot opens up.
If you don't see a **Join Waitlist** button on a full shift, the organizer hasn't enabled a waitlist for that event, or the waitlist is already full.
## Your waitlist status
The link in your email takes you to your waitlist page, which shows one of:
* **You're on the waitlist** — your current position in line (for example, "#2 in line").
* **A spot opened up!** — you've been offered a spot and can claim it.
* **Waitlist offer closed** — the offer expired or is no longer available.
## When a spot opens up
If a spot becomes available, you'll get an email and your waitlist page will show **A spot opened up!**
* **Accept the spot** — click **Accept spot** to confirm your registration. If the organizer added sign-up questions, you'll answer them here first.
* **Decline** — click **Decline** to pass on the spot. It moves to the next person in line.
Offers don't last forever. Your page shows a "Respond by" time — if you don't accept before then, the spot is offered to the next person.
After you accept, you'll be taken to a confirmation page and receive a confirmation email, just like a regular sign-up.
## Leaving the waitlist
Changed your mind? Open your waitlist page and click **Leave waitlist**, then confirm. You'll be removed from the line and won't be offered a spot.