RosterDockEveryone aboard
YOUR ROSTERDOCK GUIDE

How to

Start here to set up a class, share it with students, and keep your roster organized.

1. Get started

  1. Select Create an account and enter your name, email, and password.
  2. Open the verification email from RosterDock. Follow its link, verify your email, then sign in.
  3. Read the EULA and Service Terms. Check the agreement box and select Accept and continue. You will see this again if the agreement changes. Read the agreement anytime.
  4. Create an organization, meaning your school, training business, or department. If someone invited you to their team, use that invitation instead.
  5. If you are an administrator, open Settings → Setup checklist. Check your organization name, timezone, contact email, teaching locations, and team.

An administrator manages the organization and its settings. An instructor works with assigned classes. If a button is missing, ask your administrator whether you have permission to use it.

Use All organizations to switch between organizations. Each has its own classes, students, settings, and billing.

2. Create a class

RosterDock calls a scheduled class an event.

  1. Open Events, then select Create event. Choose a template if you have one.
  2. Enter the class name and description. Include what students need to know or bring.
  3. Select the date on the calendar. Enter the start and end times. Times use the organization's timezone.
  4. Choose the location, instructor, and number of seats. Set payment options if the class has a price.
  5. Choose Public to show the class on your organization's registration page. Choose Unlisted if you will share the class link directly.
  6. Select Save Event. The class is now open for registration.

If you select several dates in the calendar, RosterDock creates a separate class and roster for each date. The start and end times apply to every selected date. Some events created through the API can contain several required sessions; their registration page lists those sessions.

Save a class you teach often

A template saves class details so you do not have to type them again. Administrators can use Templates or check Save as Template when creating a class. Changing a template affects future classes; it does not change classes already scheduled.

Find your classes

The Events list starts with the earliest date. Use the search box, filters, or sort menu to find a class. Open its name to view the details and roster.

3. Share the registration link

  1. Open the saved class.
  2. Find Registration and sharing.
  3. Select Copy link.
  4. Paste the link into an email, message, or your website.

Students open that link, enter their details, and reserve seats. They do not need a RosterDock account. A class shows whether seats are available or it is full.

To share all your public upcoming classes, use View registration page for your organization. To share only one course type, find its Course registration link under Templates. Create those classes from that template so they appear on the course page.

Unlisted means the class is shared by link. Anyone with that link can open it; it is not password protected.

4. Manage students and rosters

Open a class and find Roster preview. This is the current student list used for roster reports.

Add a student yourself

  1. Use the new-student row in the roster preview.
  2. Enter the student's name and email. Add a phone number if needed.
  3. For a paid class, select Payment already received separately only if you already have the money. Select Invoice later if you still need to send an invoice. Choose one, or leave both unchecked if payment is still due.
  4. Save the student.

These payment choices do not charge a card. Invoice later does not create or send an invoice. Send it yourself through your billing system.

Mark attendance or send a confirmation

Check Present for students who attended, then select Save attendance for that session. For an event with several sessions, save each session's attendance separately. Use Send confirmation email when needed; it goes to the reservation's contact person.

Remove a student

Select Remove student in their row, then confirm. This removes them from the active roster and releases one seat. Payment history stays saved. It does not send a cancellation email or refund money. Handle any refund separately in Square.

Download a roster

  1. Open Rosters.
  2. Select the class and choose View roster.
  3. Choose CSV for a spreadsheet file or PDF for a printable report. You can also use the download links on the class page.

Use Students to find a student and see their class history. A group reservation can have one contact person and several students.

The Activity log at the bottom of the class page shows reservation activity. Students can manage their reservation using the link in their email. If the link expires or is missing, direct them to My reservations on the public website to request another.

5. Change or cancel a class

Open the class to change its details. For a date, time, or location change, use Change schedule / location. Review the old and new details and the people who will be notified, then confirm.

To cancel, review the confirmation page and choose whether to notify the reservation contacts. Remove from calendar also hides the class while keeping its records. Use Include removed events to find it later.

To change several classes, check their boxes in the Events list and select Edit Selected. You can change seats, visibility, payment options, or the price for all selected classes. Choose no payment, online only, online or cash/check, or cash/check only. Leave payment options at Keep current payment options to keep each class’s settings. Leave the price blank to keep each class’s current price. If any selected class has no price, enter a price before choosing a paid option. Online payments require a connected Square account and payment location. Check the confirmation box, then select Apply changes. Existing charges are not changed or refunded.

Canceling a class or reservation does not refund payments. Issue any refund in Square. RosterDock updates payment status after Square confirms the refund.

6. Team members and emails

Invite an instructor

  1. As an administrator, open Settings → Team.
  2. Enter the person's email and choose their role.
  3. Send the invitation. They open it using their own account.
  4. Assign instructors to the classes they teach.

Change the emails students receive

  1. Open Settings → Email & notifications.
  2. Choose the type of message you want to change.
  3. Edit the message, check the preview, and save.

A variable is a small placeholder that RosterDock fills in for you. For example, {{ class_date }} becomes the class date. Separate variables are available for class_date, class_time, class_location, and class_description. The class_details variable puts the main class information together. Copy variables from the list shown on the page.

Keep useful class information and reservation links in student messages. If an email is missing, check the address and ask the recipient to check spam. Email can be delayed, so follow up yourself on urgent class changes. Text messages are not available yet.

7. Payments and plans

PlanMonthly priceRosterDock fee on online paymentsIncluded
Free$02%Classes, registration, students, rosters, attendance, emails, and Square payments.
Pro$12 per organization1%Everything in Free, plus API access and webhooks.

The Free plan is free to use, with no monthly subscription charge. You can use all features included in Free without a subscription. The 2% platform fee applies only when you process an online payment through RosterDock. Square also charges its processing fees. The organization pays the RosterDock fee from its payment proceeds; students pay the listed class price. For example, the RosterDock fee on a $75 payment is $1.50 on Free or $0.75 on Pro, before Square's fees. Free registrations and cash/check payments have no RosterDock platform fee.

Connect Square

  1. As an administrator, open Settings → Payments.
  2. Select Connect Square, sign in to your Square business, and approve the requested permissions.
  3. Choose the Square payment location and save it.
  4. If the page asks you to reconnect, select Reconnect Square to approve the updated permissions.

Your Payments page shows your current fee and whether the connection is ready. You do not need to copy Square API keys.

Charge for a class

  1. Create or edit the class and turn on payment collection.
  2. Enter the price in dollars, such as 75.00.
  3. Choose online payment, cash/check options, or Collect cash or check only.
  4. Save the class and share its link.

Online checkout holds seats for about 15 minutes. The reservation is confirmed after RosterDock verifies payment with Square. Cash/check reservations hold seats while payment is still due; mark the payment received when you collect it. If a late online payment says Needs review, check it in Square and contact the student before promising a seat.

Process refunds in Square. Removing a student, canceling a class, or changing a roster does not issue a refund. The Payments page shows the original platform fee before any fee refunds.

Upgrade or cancel Pro

Administrators use Settings → Billing. Review the price and start date before authorizing monthly charges. Pro benefits start after subscription payment is verified. Reading or accepting the EULA does not start billing.

Cancel automatic billing in Billing to stop future renewals. After the paid period ends, Square payments continue on Free at 2%; API access and webhooks stop. Your saved records remain available. An existing checkout keeps the fee quoted when it was created. Contact support if you need help restarting a canceled subscription.

Connect using the API

An API lets another computer program read your class list or rosters, or create classes for you. It is an optional Pro feature. You do not need it to run classes or use RosterDock's normal screens.

If another software company asks for an API key, ask your administrator or IT helper to set it up. A key acts like a password for that connection.

  1. As an administrator with Pro, open Settings → API & integrations → API.
  2. Name the connection and choose only the permissions it needs.
  3. Select Create API key.
  4. Save the key securely. It is shown only once. Give it only to the trusted system you are connecting.

Never post a key on a public website or put it in a support screenshot. If it is lost or exposed, revoke it and create a replacement.

Technical API instructions for your IT helper

Make your first request

Replace YOUR_API_KEY with your saved key. The following command only reads events:

curl --request GET 'https://rosterdock.net/api/v1/events/?offset=0' \
  --header 'Authorization: Bearer YOUR_API_KEY'
RequestResult
GET /api/v1/events/Events in results, plus next_offset.
GET /api/v1/events/EVENT_UUID/roster/The event, its attendees, and next_offset. Replace EVENT_UUID with the event's API ID.
POST /api/v1/events/Creates an event; returns HTTP 201 and the new event object.

Lists return up to 100 records. Request ?offset=NEXT_OFFSET using the returned value until next_offset is null. The limit is 120 requests per key per minute.

Create an event: request body and options

Send this JSON to POST /api/v1/events/ with your Bearer authorization and Content-Type: application/json. Replace the sample date with a future date. This creates a real event.

{
  "title": "Basic Life Support",
  "description": "Instructor-led class.",
  "capacity": 16,
  "first_start": "2027-01-15T09:00:00-06:00",
  "duration_minutes": 120,
  "visibility": "unlisted",
  "status": "published"
}

Required fields are first_start, visibility (public or unlisted), status (draft or published), and either title or template. Optional related IDs include template, location, and an instructors array of user IDs, all from the same organization.

Use an explicit UTC offset for first_start. Additional sessions use additional_sessions, a string with one local start per line in the organization's timezone, such as 2027-01-16 09:00. All sessions share the duration; at most 30 non-overlapping sessions are supported.

To charge online, send "requires_payment": true, "price": "12.99" with a valid Square connection and payment location. Legacy price_cents is also accepted. Cash/check-only events additionally use "cash_check_only": true.

Event creation has no API idempotency key. If a request times out, check the event list before retrying to avoid creating duplicates. The API currently does not offer event editing, cancellation, or student registration endpoints.

Read roster data correctly

The roster includes booking IDs, booking status, payment method/status, contacts, answers, and attendance entries. Canceled reservations remain in the response for reconciliation; exclude them from active attendance lists. Empty names can represent unnamed reserved seats. Missing attendance means it has not been recorded. Rosters can change while you retrieve multiple pages; they are not a frozen snapshot.

Receive changes with webhooks

A webhook tells another program when something changes, such as a new registration. This can help an automation update your other records. Webhooks are an optional Pro feature; you do not need them for ordinary class management.

Your IT helper or software provider needs to give you a receiving web address and set up its security checks. Administrators add it under Settings → API & integrations → Webhooks. Keep its signing secret private, like a password.

If Pro ends, these connections pause. Old messages may not be resent after you upgrade again, so ask your IT helper to check that the other system's records are current.

Technical webhook instructions for your IT helper

Add a receiving URL

  1. Create a receiving endpoint in your system or automation tool, such as an n8n production webhook. It must accept HTTPS POST requests at a public internet address on port 443.
  2. As an administrator with active Pro access, open Settings → API & integrations → Webhooks.
  3. Paste the HTTPS destination and select Add webhook.
  4. Copy the signing secret when shown and store it in your receiving system. It is separate from your API key.

Each active destination receives the supported notifications; there is currently no event-type selector. Private/LAN URLs, URL credentials, redirects, and non-HTTPS destinations are not supported. If you lose the secret, disable that destination and add it again.

Notification typeChange
event.created
event.updated
event.canceled
An event is created, changed, removed from the calendar, or canceled. Removal can arrive as event.updated with archived set to true.
registration.created
registration.updated
registration.canceled
A reservation is created, changed, transferred, or canceled.
registration.paidA Square payment is received for a reservation.

2. Read the notification

{
  "id": "notification-uuid",
  "type": "registration.created",
  "created_at": "2027-01-01T18:00:00+00:00",
  "organization": "your-organization",
  "data": {
    "booking_id": "booking-uuid",
    "event_id": "event-uuid",
    "seats": 1
  }
}

The data fields vary by notification. Notifications contain IDs and change details, not full rosters. Use an API key with rosters:read to fetch current data using the event ID. If an update only supplies a booking ID, use your saved booking-to-event mapping or reconcile against your event rosters.

3. Verify, record, and process

  1. Verify the signature using the signing secret and the original request bytes before processing the JSON.
  2. Reject timestamps more than five minutes from the current time.
  3. Durably record the notification and deduplicate its id.
  4. Return a 2xx response promptly, then process your queued work.
Signature verification example (Python)

The headers are X-RosterDock-Timestamp, X-RosterDock-Signature, and X-RosterDock-Event-ID. The signature is HMAC-SHA256 over timestamp + "." + raw_request_body, prefixed with sha256=. Do not parse and reserialize the body before checking it.

import hashlib
import hmac
import time

def valid_signature(secret, raw_body, headers):
    stamp = headers.get("X-RosterDock-Timestamp", "")
    signature = headers.get("X-RosterDock-Signature", "")
    try:
        if abs(time.time() - int(stamp)) > 300:
            return False
        message = stamp.encode("ascii") + b"." + raw_body
        expected = "sha256=" + hmac.new(
            secret.encode(), message, hashlib.sha256
        ).hexdigest()
        return hmac.compare_digest(expected, signature)
    except (ValueError, TypeError, UnicodeError):
        return False

This verifies the signature only. Your endpoint must also save the notification durably, handle duplicate IDs, and decide how to process each type.

Delivery is at least once and can arrive out of order. Failed requests are automatically retried with increasing delays capped at one hour. Retries keep the same notification ID and body but receive a new timestamp and signature. Fetch the latest roster rather than assuming notifications arrive in sequence.

Test your connection

Create an unlisted test event and a test reservation using contact information you control. Check your receiver for the notification and verify its signature. There is currently no dedicated “Send test webhook” button. The Webhooks tab shows worker health, queued items, and errors awaiting retry.

If Pro access ends, existing keys and destinations remain saved but API requests are blocked and webhook delivery stops. Skipped notifications are not automatically replayed; reconcile your data through the API after access resumes.

Need help?

ProblemTry this
I cannot find a classCheck the organization at the top of the page, clear filters, and check Include removed events. Ask your administrator if you are assigned to the class.
A student did not get an emailCheck the address, ask them to check spam, and resend the confirmation if needed.
A student's reservation link expiredAsk them to use My reservations on the public website to request a new link.
Square says reconnect requiredOpen Settings → Payments and select Reconnect Square. Use the same Square business, then check the payment location.
A student paid, but the seat is not confirmedCheck Payments and refresh the payment status. For Needs review, check Square and contact the student. Do not assume the seat is reserved.
I cannot create an API key or webhookAsk an administrator to check the organization's Pro status in Billing.
I do not agree to the updated EULASign out. Email support to request billing cancellation or your authorized records; declining alone does not cancel a subscription.

Email [email protected]. Tell us your organization name, what you tried, and the error message. Do not include passwords, API keys, signing secrets, card numbers, or private student details. Feature suggestions are welcome.

If a payment page does not open

Use the payment link shown on screen, or try again shortly. RosterDock keeps an existing checkout while its result is being checked. If Square rejects the attempt, its seat hold is released so the student can retry after the issue is corrected. A payment completed before class starts can still be confirmed when verification is delayed and the reservation remains active. If Square shows a payment but the reservation is not confirmed, contact the organizer before paying again. Canceled reservations require organizer review.

When connecting or reconnecting your account, select Continue to Square on the connection page. Price changes apply to new registrations; existing students keep their original payment requirement. Class transfers must match the original reservation price. Contact the organizer if the price differs or an older price is unavailable.