Resources · Feature guides
Managing attendees: resending tickets, clearing check-ins, and refunds
The Attendees screen is where you'll spend most of your support time on event week. Customers misplace ticket emails, door staff accidentally scan the same QR twice, and occasionally someone needs a refund. This guide is the day-of-event support playbook for every attendee-management action Site Calendar Pro provides.
- You'll need: Site Calendar Pro 1.1.4.4 or later active, at least one event with attendees
- Estimated time: 5 minutes to read; reference whenever a support situation comes up
- Difficulty: Beginner — point-and-click admin actions, no code
The two attendee admin screens
Site Calendar Pro provides two related-but-distinct admin screens for managing attendees. Understanding which one to use when saves time on event night.
1. The Attendees screen — for support work
Where: WordPress admin → Site Calendar → Events → [the event] → Attendees
What it shows: A full table of every registered attendee with name, email, phone, ticket type, order number, payment status, unique code, and registration timestamp. Capacity gauge across the top. Per-ticket breakdown of registered vs remaining slots.
What it's for: Pre-event and post-event support. Resending tickets to customers who can't find theirs, removing attendees (with optional refund), undoing accidental check-ins, exporting the attendance list to CSV.
2. The Check-in screen — for event-night door staff
Where: WordPress admin → Site Calendar → Events → hover over the event title → Check-in
What it shows: Live attendance counters (Admitted / Waiting / Refunded), sortable attendee table with status badges, search box, manual Admit and Undo buttons per row, and an Export attendance CSV button.
What it's for: The door-staff dashboard during the event itself. Optimised for fast scanning and live monitoring rather than CRUD operations on attendee records.
Resending a confirmation email
This is the most common support request: "I bought a ticket but I can't find the confirmation email." Site Calendar Pro 1.1.4 added a one-click Resend tool so you can resolve the situation in under a minute.
How to resend
- Go to Site Calendar → Events → [the event] → Attendees
- Find the customer's row (use Ctrl/Cmd + F in your browser to search by name or email)
- Click the Resend email button on their row
- A green admin notice appears: "Confirmation email resent successfully"
The customer receives an identical copy of the original branded confirmation email: same QR code, same backup confirmation code, same ICS calendar attachment, same ticket details. The QR they already had (if any) remains valid — the resend is about delivery, not security rotation.
The 30-second cooldown
To prevent accidental double-clicks from spamming the customer's inbox, Pro enforces a 30-second cooldown per attendee. If you click Resend a second time within that window, you'll see an amber notice: "This attendee was emailed less than 30 seconds ago. Wait a moment before resending again." Just wait 30 seconds and click again if you genuinely need to resend.
The audit trail
Every resend writes three meta fields against the attendee record:
_pcal_last_resent_at— timestamp of the most recent resend_pcal_last_resent_by— WordPress user ID of the admin who triggered it_pcal_resend_count— total number of resends
The Resend button shows a small count badge after the first resend (e.g. a "2" if the email has been resent twice) so a multi-staff team can see at a glance whether a colleague has already tried. Hover the button for a tooltip showing the last-resent timestamp.
Undoing a check-in
Door staff sometimes scan the same QR twice in a busy queue, scan a friend's phone for the wrong attendee, or you need to re-test the scanner after setup. Site Calendar Pro 1.1.4.4 added a non-destructive Undo check-in action available on both admin screens. It clears the check-in timestamp so the attendee can be scanned again — without issuing a refund, without removing the registration, without any other side effects.
From the Check-in screen (event-night use)
- Go to Site Calendar → Events → [the event] → Check-in
- Find the attendee row showing 🟢 ADMITTED status
- Click Undo on that row
- The row immediately returns to ⚪ WAITING and the attendee can be scanned again
From the Attendees screen (support use)
- Go to Site Calendar → Events → [the event] → Attendees
- Find the attendee row — the Undo check-in button only appears on rows that have been admitted
- Click Undo check-in
- A confirmation dialog spells out what the action does and doesn't do: "Undo this check-in? This clears the check-in timestamp so the attendee can be scanned again. It does NOT issue a refund and does NOT remove the attendee record."
- Click OK — an amber notice confirms: "Check-in cleared. The attendee is now marked as Waiting and can be scanned again."
The audit trail
Like Resend, every undo writes three meta fields:
_pcal_last_checkin_undone_at— timestamp of the most recent undo_pcal_last_checkin_undone_by— WordPress user ID of the admin who triggered it_pcal_checkin_undo_count— total number of undos
This audit trail is invaluable if a post-event dispute arises ("you said I was checked in, but the system shows me as a no-show"). The original check-in timestamp is cleared, but the undo metadata records that the clear happened and who did it.
Removing an attendee (and issuing a refund)
Sometimes a customer cancels and wants a refund, or you need to remove a duplicate registration. The Remove action is the destructive option — it deletes the attendee record entirely, frees up the ticket slot, and optionally triggers a refund via Stripe or WooCommerce.
For paid attendees (Stripe / WooCommerce)
The button is labelled Remove & refund in red. Clicking it opens a confirmation dialog spelling out both consequences:
"REMOVE this attendee AND refund £X.XX via the original payment gateway? This action is permanent and cannot be undone from this screen. If you only want to clear a check-in, click Cancel and use 'Undo check-in' instead. Click OK to remove AND refund. Hold Shift while clicking to remove WITHOUT refund."
- Click OK — Site Calendar Pro deletes the attendee record AND calls the payment gateway's refund API. The customer's card is credited within 5–10 business days.
- Hold Shift while clicking — the URL drops the
refund=1parameter and a second confirmation dialog asks: "Remove this attendee WITHOUT issuing a refund? This permanently deletes the record." Useful when the refund has already been processed manually outside the plugin. - Click Cancel — nothing happens. Use this if you reached this dialog by accident or actually wanted to Undo check-in instead.
For free RSVP attendees
The button is simply labelled Remove in red. The confirmation dialog reminds you of the alternative: "Permanently REMOVE this attendee? This deletes the registration record. If you only want to clear a check-in, click Cancel and use 'Undo check-in' instead." There's no refund to worry about for free tickets.
What happens after a removal with refund
- The attendee record is deleted from the
pcal_attendeecustom post type - The ticket slot returns to the available pool (capacity remaining increases by 1)
- The payment gateway (Stripe or WooCommerce) issues a refund to the original payment method
- Stripe sends its own refund-confirmation email to the customer; WooCommerce sends its standard refund notification
- Site Calendar Pro does NOT send a separate cancellation email from your side — the gateway notification is considered sufficient. If you want to send a personal note, do so manually from your mail client.
- If the attendee had been checked in before removal, the check-in record is also deleted (no separate Undo needed)
Exporting attendee data to CSV
Both the Attendees screen and the Check-in screen offer an Export CSV button at the top. The two exports contain slightly different data:
Attendees export
Columns: Name, Email, Phone, Ticket type, Order number, Payment status, Amount, Currency, Unique code, Registered at, Checked in at. One row per attendee.
Use it for: Pre-event mailings (Mailchimp, your CRM, a printed door list), post-event reporting, accounting reconciliation, GDPR data subject access requests.
Check-in (attendance) export
Columns: Name, Email, Ticket type, Status (admitted / no-show / refunded), Checked in at, Checked in by (admin username), Unique code. One row per attendee, ordered by check-in time.
Use it for: Post-event no-show analysis, follow-up emails to no-shows ("we missed you"), audit trail if a dispute arises, accreditation reports for licensed venues.
Both exports use UTF-8 encoding with a BOM so Excel renders names with accented characters correctly. They open cleanly in Numbers, Google Sheets, LibreOffice Calc, and Excel without any encoding fiddling.
Common support scenarios — the playbook
"I bought a ticket but can't find the email"
Attendees screen → find their row → Resend email → done. Ask them to check spam/junk if it still doesn't arrive within 2 minutes.
"My QR was scanned twice at the door — someone used my ticket"
Check-in screen → find their row (or use search) → if the timestamp shows admission at an unusual time, click Undo so they can be admitted properly when they arrive. The audit log keeps the unauthorised admission trail for investigation.
"Door staff accidentally scanned my QR before I arrived"
Same as above — Check-in screen → Undo on the row → they can rescan when they actually arrive.
"I can't make the event after all, please refund me"
Attendees screen → find their row → Remove & refund → confirm. The ticket slot returns to availability and the customer's card is credited within 5–10 business days. If your refund window has passed, Shift+click to remove without refund.
"I'm running an internal test of the scanner — how do I reset the test attendee?"
Attendees screen → find the test attendee → Undo check-in. The record stays intact, just the admission flag is cleared. Rescan to verify the green ADMITTED panel renders correctly on the first scan.
"A customer wants to transfer their ticket to a friend"
Site Calendar Pro doesn't currently have a dedicated transfer action, but the workaround is simple. Edit the attendee record (Attendees screen → click the attendee name to open the post editor), change the Name and Email fields to the new person's details, save. The Unique code and QR stay the same — perfect for ticket transfers between friends or family. The original buyer remains visible in the Stripe/WooCommerce order; only the registered attendee changes.
After saving, click Resend email on the attendee row to send the QR to the new email address.
Troubleshooting
"Resend email button shows red 'could not be sent' but the customer received the email"
This was a false-positive bug in Pro 1.1.4 that misinterpreted the send function's return value. Fixed in Pro 1.1.4.1 and later. Update Pro via Dashboard → Updates (or Site Calendar → Settings → Licence → Check for plugin update to force an immediate check). The resend handler now correctly reports success on send and writes the audit-trail metadata.
"Resend email button does nothing visible — no notice appears"
Check the browser console (F12 → Console tab) for any JavaScript errors. If a caching plugin or CDN is interfering with the WordPress admin redirect, the success notice may be lost in transit. Clear your site cache and try again. The email is almost certainly being sent regardless — check the customer's inbox.
"Undo check-in button is missing on an admitted attendee"
Two possible causes:
- You're on Pro 1.1.4.3 or earlier. The Undo check-in button on the Attendees screen was added in Pro 1.1.4.4. Earlier versions only have the Undo button on the Check-in admin screen. Update Pro to 1.1.4.4 or later.
- The attendee was never checked in. The Undo button only appears on rows where
_pcal_checked_in_atis set. Check the row's status badge — if it shows ⚪ WAITING, there's nothing to undo.
"Remove & refund button greyed out / not appearing"
The "Remove & refund" label only appears for attendees whose payment status is paid. Free RSVP attendees see plain "Remove" instead (no refund to issue). If a paid attendee shows plain "Remove" without the refund language, the payment status meta key may be missing — check the attendee record's meta in WordPress admin or via WP-CLI.
"Refund didn't process — Stripe / WooCommerce didn't credit the card"
Check Stripe Dashboard → Payments (or WooCommerce → Orders) for the refund request. If the refund shows as "Failed" or doesn't appear at all, the gateway-side issue is one of:
- The original charge is too old (Stripe's 180-day window has elapsed)
- The payment method has been cancelled by the customer
- The API key in Site Calendar settings doesn't have refund permissions (rare — check Stripe → Developers → API keys → ensure restricted keys aren't being used)
- The currency mismatch (very rare) between charge and refund
Process the refund manually from the gateway dashboard and Shift+click Remove on the Attendees screen to delete the record without re-attempting the refund.
"Removed attendee but ticket slot didn't come back"
Refresh the Attendees screen — the capacity gauge updates on page load, not in real time. The slot is freed correctly on the server; the UI just needs a reload to reflect it. If after refresh the slot still appears taken, check that the attendee row has genuinely disappeared from the table (deletion may have been blocked by another plugin's filter).
What's next
- Door check-in with QR codes — the live scanner setup and event-night workflow
- Branded confirmation emails — what the customer receives, and how to fix deliverability problems
- Setting up Stripe payments — the gateway that powers the Remove & refund action
- Setting up WooCommerce ticketing — the alternative gateway with the same refund integration
