Documentation: Event Check-In for Box Office

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.

Documentation: Event Check-In for Box Office

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_ticket and uses _attended meta)

The plugin is HPOS compatible (WooCommerce custom order tables).


3) Installation

  1. In WordPress Admin, go to Plugins → Add New → Upload Plugin.
  2. Upload the plugin ZIP and click Install Now.
  3. Click Activate.
  4. Configure the plugin under WooCommerce → Settings → Event Check-In.

4) Quick start

  1. Create a page that will act as your check-in desk (example: “Event Check-In”).
  2. Add the shortcode:
   [event_checkin]
  1. Restrict the page to staff only (recommended). Options include:
  • WordPress page password
  • Membership / role restriction plugin
  • Private page + staff accounts
  1. 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 notes meta)

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:

  1. WooCommerce orders that include the selected event product (or its variations)
  2. 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:

  1. Order billing fields (email, first name, last name)
  2. Ticket post meta (several common meta keys)
  3. 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 _attended is set to yes.
  • 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_ticket posts 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.php via 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 _attended to no (or delete the meta)