Documentation: Event Check-In for Box Office - Understand how to set up and use our excellent plugin.
Door/admin check-in interface for WooCommerce Box Office ticketed events. Provides a single on-page check-in desk (event selector + attendee table), supports multi-event check-in (combine multiple events into one attendee list), and includes an optional per-order Notes field for staff.
1) Overview
Event Check-In for Box Office is built for the “at the door” workflow:
- Staff selects one or more events (WooCommerce products).
- The plugin displays an attendee list based on WooCommerce orders and Box Office tickets.
- Staff checks attendees in with one click.
It also adds a per-order admin field Event Check-In Notes (saved in order meta key notes) so staff can record and display operational details like room number, VIP flags, special instructions, etc.
The attendee table is powered by DataTables, which adds fast search, sorting, and pagination.

2) Requirements
- WordPress 6.7+
- WooCommerce 6.0+
- PHP 7.4+
- WooCommerce Box Office (or a compatible ticket system that creates ticket posts of post type
event_ticketand uses_attendedmeta)
The plugin is HPOS compatible (WooCommerce custom order tables).
3) Installation
- In WordPress Admin, go to Plugins → Add New → Upload Plugin.
- Upload the plugin ZIP and click Install Now.
- Click Activate.
- Configure the plugin under WooCommerce → Settings → Event Check-In.
4) Quick start
- Create a page that will act as your check-in desk (example: “Event Check-In”).
- Add the shortcode:
[event_checkin]- Restrict the page to staff only (recommended). Options include:
- WordPress page password
- Membership / role restriction plugin
- Private page + staff accounts
- Visit the page as staff, select one or more events, and check in attendees.

5) Using the shortcode
Basic shortcode
[event_checkin]This renders:
- an event selector
- the attendee table for the selected event(s)
Optional shortcode attributes
Force a specific event product
[event_checkin event_id="123"]Force multiple event products
Provide a comma-separated list of product IDs:
[event_checkin event_ids="123,456,789"]When multiple events are selected/forced, attendees are combined into one table. The UI may show an Event column (or similar identifier) so staff can see which event each ticket belongs to.
Limit the event selector to specific categories (overrides settings)
Use product category slugs:
[event_checkin cats="concerts,vip"]Hide the selector when event selection is forced
[event_checkin event_id="123" hide_dropdown="1"](Also works with event_ids.)
6) Multi-event check-in
Multi-event check-in is designed for workflows like:
- A weekend pass holder list at one entrance
- Multiple sessions in one day (morning/afternoon)
- A venue page that covers several events without switching pages
How it works
- Select multiple events in the event selector (the UI will indicate multi-select support).
- The table loads attendees from all selected events.
- Check-in actions still operate per-ticket (you’re checking in a specific ticket for a specific event).
URL behavior
Depending on how your site is configured, event selection may be reflected in the URL as either:
?event_id=123(single event)?event_ids=123,456(multiple events)
This allows staff to bookmark a pre-filtered check-in page.

7) Using the Gutenberg block
The plugin includes a block named:
- “Event Check-In” (category: WooCommerce)
It renders the same output as the shortcode and supports the same core options:
- Event ID (optional)
- Event IDs (optional, comma-separated)
- Category slugs (optional)
- Hide event selector (optional)


8) Settings reference
Settings are located at:
WooCommerce → Settings → Event Check-In
The plugin uses WooCommerce Settings “sections”:
- General
- Table
- Styling
- License (only shown when not built for WooCommerce.com)

General
Event product categories
- Multi-select list of WooCommerce product categories.
- If empty, all products are eligible for the event selector.
Only show ticket products
- When enabled, the event selector is limited to products detected as ticket products.
- Ticket detection uses common Box Office patterns (including product meta
_ticket = yes) with fallbacks.
Allow guest view
- Allows the check-in page to render for logged-out visitors.
- Check-in actions still require staff login unless guest check-ins are enabled.
Allow guest check-ins
- Allows logged-out visitors to click “Check In.”
- This is risky on public pages (anyone with the link can check people in).
- Use only for controlled kiosks/tablets you physically manage.
Remove data on uninstall
- If enabled, plugin settings + license status are removed when the plugin is uninstalled.

Table
Choose which attendee table columns are visible:
- User avatar
- Username / display name
- Email address
- First name
- Last name
- Order notes (custom
notesmeta)
The table also always includes:
- Ticket #
- Checked In?
- Action
In multi-event mode, the table may also include an Event column (or event name label) so staff can differentiate tickets.

Styling
The plugin outputs styling as CSS variables on the shortcode wrapper, plus optional custom CSS.
Color options include:
- Primary color
- Button background
- Button text
- Table header background
- Table header text
- Table row background
- Table row text
- Checked-in badge color
- Not-checked-in badge color
Custom CSS
- Appended after the built-in styles.
- Only affects the check-in output.
Recent versions include additional front-end styling refinements (spacing, button/table polish, and small UX improvements). If you want very specific control, use the Custom CSS box.
License
If your build uses the included licensing/updater system, you’ll see a License section.
- Enter your license key to enable updates.
- If your build requires licensing, the check-in UI may not render until activated.
WooCommerce.com build mode
- If you distribute a WooCommerce.com build, set the constant below to disable the custom licensing system:
define( 'SA_ECIBO_WCCOM', true );9) Order notes (meta key: notes)

The plugin adds a staff-only order field:
- WooCommerce → Orders → Edit Order → “Event Check-In Notes”
This saves to order meta:
notes
If the Order notes column is enabled in settings, the value will display in the attendee table.
Common uses:
- Room number / seating assignment
- VIP note
- Accessibility note
- Staff instruction
10) How attendee data is determined
The plugin builds the attendee list from:
- WooCommerce orders that include the selected event product (or its variations)
- Box Office ticket posts (post type
event_ticket) attached to those orders
In multi-event mode, this same process runs across all selected events, and the results are combined.
For each ticket row, attendee info is resolved in this order:
- Order billing fields (email, first name, last name)
- Ticket post meta (several common meta keys)
- User account (if the order is linked to a customer)
This helps keep the table useful even when:
- the order is a guest order,
- the ticket system stores attendee fields on the ticket post,
- the customer profile has better data than the order.
11) Check-in behavior (what changes in WordPress)
When you click Check In for a ticket:
- The ticket post meta
_attendedis set toyes. - The plugin also records:
_attended_at(timestamp)_attended_by(current user ID)
The UI updates the row immediately to show:
- “Checked In? → Yes”
- Button label changes to “Checked In”
Tickets already marked attended remain attended; the button is disabled.
12) Access control and security
Default access
By default, the shortcode is visible only to logged-in users who have:
manage_woocommerce
Guest viewing / guest check-ins
You can allow:
- Guest view (renders the table UI)
- Guest check-ins (allows clicking “Check In” while logged out)
These are controlled in WooCommerce → Settings → Event Check-In → General.
Guest check-ins should only be used for controlled kiosks or environments where the device is physically supervised.

13) Developer hooks and filters
This plugin provides filters for common customization.
Change required capability
add_filter( 'sa_ecibo_required_capability', function() {
return 'edit_shop_orders';
});Require license to run (optional)
add_filter( 'sa_ecibo_require_license', '__return_true' );Provide the licensing product/variation IDs
add_filter( 'sa_ecibo_license_product_ids', function() {
return [ 123, 456 ];
});Customize which order statuses count
add_filter( 'sa_ecibo_statuses', function( $statuses ) {
// Example: include on-hold
$statuses[] = 'wc-on-hold';
$statuses[] = 'on-hold';
return $statuses;
});Adjust order lookup caching (seconds)
add_filter( 'sa_ecibo_order_lookup_cache_ttl', function() {
return 60; // default is 300
});Ticket meta key fallbacks for attendee fields
add_filter( 'sa_ecibo_ticket_email_meta_keys', function( $keys ) {
$keys[] = '_my_custom_email_key';
return $keys;
});(Similarly available: sa_ecibo_ticket_first_name_meta_keys, sa_ecibo_ticket_last_name_meta_keys.)
14) Troubleshooting
The event selector is empty
- Check General → Event product categories.
- If you selected categories, confirm the event products are assigned to those categories.
- If Only show ticket products is enabled:
- Confirm your event products are detected as ticket products (commonly meta
_ticket = yes). - Temporarily disable ticket-only mode to test.
The attendee list is empty for an event
- Confirm there are paid orders containing the product(s).
- Confirm the order status is one of the allowed statuses.
- Defaults include processing/completed and a few common custom statuses.
- Confirm your ticket system creates
event_ticketposts tied to the order.
The attendee list is unexpectedly missing attendees in multi-event mode
- Verify each selected event has orders/tickets (test each event individually).
- Confirm all selected events are eligible under your category and ticket-only settings.
Check-in button says “Staff access required”
- You are either logged out or missing the required capability.
- By default, you must have
manage_woocommerce.
Check-in clicks don’t work
- Ensure you are not blocking
admin-ajax.phpvia security plugins/CDN rules. - Check for JS console errors.
- Confirm the page is not heavily cached for logged-in users.
I want to “undo” a check-in
This plugin intentionally provides a one-way check-in button.
If you need to undo a check-in, edit the ticket post meta:
- Find the ticket post (post type
event_ticket, ID shown in the table) - Set
_attendedtono(or delete the meta)
