Athenian Tickets & Admission
Overview
Product overview
Athenian Tickets & Admission Manager turns WooCommerce products and orders into a complete ticketing and admission operations layer. Instead of treating a ticket sale as only a WooCommerce order, the plugin generates individual admission records, assigns secure ticket codes, renders printable and digital tickets, exposes staff-facing redemption tools, and tracks ticket lifecycle status from sale through redemption or voiding.
The plugin is built for businesses that need more than a PDF attachment after checkout. It supports product-level event metadata, one-ticket-per-quantity issuance, My Account ticket access, secure guest downloads, barcode and QR display, staff check-in tools, kiosk-style redemption workflows, REST API endpoints, signed webhook events, admin reporting, CSV export, and POS-origin order tagging.
In the Athenian platform stack, WooCommerce remains the commerce engine while Athenian Tickets & Admission Manager becomes the operational runtime for admission validity, customer delivery, gate validation, POS continuity, and post-event reporting.
---
Use cases
- Event tickets
- Admission check-in
- Ticket PDFs
- WooCommerce event sales
Developer
Developer starting point
This baseline is generated from the reviewed local technical reference and source folder. Deployed-version parity and external-provider effects remain separate verification steps.
5. Customer-Facing Workflow
Purchase Flow
- A merchant marks a WooCommerce product as a Ticket / Admission Product.
- The product is enriched with optional event metadata such as event name, schedule, venue, ticket label, terms, and customer email notes.
- A customer purchases the product like any other WooCommerce item.
- When the order reaches one of the configured generation statuses, the plugin creates one ticket record per purchased quantity.
- The customer receives ticket details in WooCommerce email content and, when enabled, attached ticket PDFs.
- The customer can later access tickets through the WooCommerce My Account ticket wallet or secure download links.
Customer Ticket Wallet
The plugin registers a WooCommerce My Account endpoint:
/ath-tickets/It adds a Tickets menu item after the standard WooCommerce Orders menu item. The wallet searches tickets by the logged-in user’s account email and displays ticket cards with:
- Ticket status.
- Event name.
- Event schedule.
- Venue.
- Attendee or customer name.
- Ticket code.
- Barcode/QR display grid.
- PDF download button.
Secure Download Flow
Ticket PDF download links are generated through frontend query arguments:
?ath_ticket_download=1&ticket_id={ticket_id}&key={access_key}Downloads are allowed for:
- WooCommerce managers or users who can edit shop orders.
- Logged-in customers whose account email matches the ticket customer email.
- Guests with a valid ticket-specific access key, when guest downloads are enabled.
---
6. Staff, Kiosk, and POS Workflows
Staff Check-In Console
Shortcode:
[ath_ticket_checkin]This renders a staff-facing lookup and redemption console for users with manage_woocommerce or edit_shop_orders. It includes same-day issued and redeemed KPI tiles, manual ticket code entry, lookup, and redeem actions.
Kiosk Redemption Station
Shortcode:
[ath_ticket_kiosk]This renders a scanner-first entry station for logged-in staff. It supports:
- Manual ticket code entry.
- Hardware scanner input.
- Optional auto-redeem behavior.
- Camera scanning when the browser supports
BarcodeDetectorandgetUserMedia. - QR-focused or hybrid scanner modes.
The kiosk can operate in auto-redeem mode when enabled in settings, allowing a scan or Enter key action to redeem instead of only lookup.
POS Ticketing Hub
Shortcode:
[ath_ticket_pos]This shortcode creates a POS ticketing hub. It can link to a configured POS page, display ticket operations guidance, open ticket reporting, and embed the Athenian POS shortcode when [athenian_pos] is active and POS embedding is enabled.
Direct Download Shortcode
[ath_ticket_download code="XXXXX-XXXXX-XXXXX-XXXXX"]This shortcode resolves a ticket by code and redirects to the secure PDF download URL.
---
7. Ticket Product Configuration
The plugin adds ticket-specific fields to the WooCommerce product editor general product data panel.
| Product Meta Key | Admin Label | Purpose | |---|---|---| | _ath_ticket_enabled | Ticket / Admission Product | Enables ticket generation and redemption behavior for the product. | | _ath_ticket_event_name | Event name | Optional event name shown on tickets and reports. | | _ath_ticket_ticket_label | Ticket label | Optional ticket type badge, such as General Admission or VIP. | | _ath_ticket_event_start | Event start | Structured start date/time used for tickets, kiosk screens, and reports. | | _ath_ticket_event_end | Event end | Optional structured end date/time. | | _ath_ticket_event_date | Event schedule summary | Plain-language schedule fallback such as “Doors at 6 PM, show at 7 PM.” | | _ath_ticket_venue | Venue | Venue or location line. | | _ath_ticket_terms | Ticket terms | Short terms line such as “Non-refundable.” | | _ath_ticket_email_note | Email note | Optional note included in ticket emails and PDF body. |
When a ticket is generated, these product-level values are copied onto the individual ticket record so the ticket retains the event context even if the product is edited later.
---
8. Ticket Record Model
The plugin registers a private admin-visible custom post type:
ath_ticketTickets are shown under the WooCommerce admin menu and support title-only editing. The ticket title is the generated ticket code.
Ticket Statuses
| Status | Label | Meaning | |---|---|---| | ath_unredeemed | Unredeemed | Ticket has been issued and is valid for entry. | | ath_redeemed | Redeemed | Ticket has already been used. | | ath_voided | Voided | Ticket has been cancelled or invalidated. |
Core Ticket Metadata
| Ticket Meta Key | Purpose | |---|---| | _ath_ticket_code | Human-readable unique ticket code. | | _ath_ticket_access_key | Secure per-ticket download key. | | _ath_ticket_order_id | Origin WooCommerce order ID. | | _ath_ticket_order_item_id | Origin WooCommerce line item ID. | | _ath_ticket_product_id | Origin product ID. | | _ath_ticket_product_name | Captured line item/product name. | | _ath_ticket_price | Unit ticket price derived from the order line total divided by quantity. | | _ath_ticket_customer_email | Billing/customer email at time of issue. | | _ath_ticket_customer_name | Billing/customer name at time of issue. | | _ath_ticket_attendee_name | Optional attendee name captured from add-ons or line item metadata. | | _ath_ticket_channel | Order channel, typically web or pos. | | _ath_ticket_issued_at | Issuance timestamp. | | _ath_ticket_redeemed_at | Redemption timestamp when redeemed. | | _ath_ticket_redeemed_by | User ID of the staff user who redeemed the ticket. | | _ath_ticket_redemption_channel | Redemption channel such as checkin, kiosk, or api. | | _ath_ticket_redemption_note | Optional redemption note. | | _ath_ticket_voided_at | Void timestamp when voided. | | _ath_ticket_voided_note | Optional void note. | | _ath_ticket_voided_channel | Void source/channel. | | _ath_ticket_ean13 | Generated EAN-13 numeric barcode value. | | _ath_ticket_upca | Generated UPC-A numeric barcode value. | | _ath_ticket_pdf417_text | Text payload for PDF417-style barcode output. | | _ath_ticket_order_total | Captured order total when the ticket is created. |
Ticket Code Format
Ticket codes are generated from a Crockford-style Base32 alphabet that avoids visually confusing characters. The generated format is:
XXXXX-XXXXX-XXXXX-XXXXXThe sanitizer allows uppercase letters, numbers, and hyphens. Lookup also supports the generated EAN-13 and UPC-A numeric values.
---
11. Operational Settings
Settings are stored in the WordPress option:
ath_tickets_settingsDefault Settings
| Setting | Default | Purpose | |---|---:|---| | generate_statuses | processing, completed | Order statuses that trigger ticket generation. | | email_pdf_attachments | yes | Attach generated ticket PDFs to customer processing/completed emails. | | allow_guest_downloads | yes | Allow access-key-based guest downloads. | | kiosk_auto_redeem | no | Let kiosk scans or Enter actions redeem automatically. | | pos_embed_enabled | yes | Allow [ath_ticket_pos] to embed [athenian_pos] when available. | | pos_page_url | empty | Optional URL for opening a POS page. | | report_window_days | 30 | Default dashboard report window. | | scanner_mode | hybrid | Scanner mode: hybrid, manual, or qr. | | digital_qr_enabled | yes | Flag exposed to frontend scripts for digital QR behavior. | | qr_payload_mode | code | QR payload can be ticket code or scan URL. | | api_enabled | yes | Enables token-based REST access for non-privileged external callers. | | api_access_token | generated | Token for REST API access. | | webhook_enabled | no | Enables outgoing webhook dispatch. | | webhook_secret | generated | HMAC signing secret for webhooks. | | webhook_urls | empty | Destination URLs for webhook delivery. | | webhook_events | created, redeemed, voided, generated | Enabled webhook event names. | | webhook_timeout | 10 | Webhook request timeout in seconds. |
The activation flow creates defaults, generates missing API and webhook secrets, registers the ticket CPT, and flushes rewrite rules.
---
13. REST API
The plugin registers a REST namespace:
ath-tickets/v1Authentication
REST routes are available to users with WooCommerce management capabilities. External callers can authenticate with the generated API token when the API is enabled.
Supported token formats:
Authorization: Bearer {API_TOKEN}or:
X-Ath-Tickets-Token: {API_TOKEN}Endpoints
| Method | Endpoint | Purpose | |---|---|---| | GET | /wp-json/ath-tickets/v1/health | Health and configuration check. | | GET | /wp-json/ath-tickets/v1/tickets | List tickets by page, status, channel, order, product, email, or code. | | POST | /wp-json/ath-tickets/v1/tickets/lookup | Lookup a ticket from a posted code. | | GET | /wp-json/ath-tickets/v1/tickets/{id} | Fetch a single ticket payload by ticket ID. | | POST | /wp-json/ath-tickets/v1/tickets/{id}/redeem | Redeem a ticket by ID. | | POST | /wp-json/ath-tickets/v1/tickets/code/{code}/redeem | Redeem directly from a scanned ticket code. | | POST | /wp-json/ath-tickets/v1/tickets/{id}/void | Void a ticket. | | GET | /wp-json/ath-tickets/v1/orders/{id}/tickets | Retrieve all tickets attached to an order. | | POST | /wp-json/ath-tickets/v1/orders/{id}/generate | Force ticket generation for an order. | | GET | /wp-json/ath-tickets/v1/reports/summary | Return summary metrics and event breakdown. |
Ticket List Filters
The ticket list endpoint supports these query-style filters:
codepageper_pageorder_idproduct_idcustomer_emailstatuschannel
Ticket responses include pagination metadata and set X-WP-Total / X-WP-TotalPages headers.
---
14. AJAX Interface
Frontend staff tools use WordPress AJAX actions:
| AJAX Action | Purpose | Access | |---|---|---| | ath_tickets_lookup | Lookup a ticket by code. | Logged-in staff with manage_woocommerce or edit_shop_orders. | | ath_tickets_redeem | Redeem a ticket by code. | Logged-in staff with manage_woocommerce or edit_shop_orders. | | ath_tickets_summary | Fetch same-day summary metrics. | Logged-in staff with manage_woocommerce or edit_shop_orders. |
All AJAX requests require the ath_tickets_frontend nonce. The inspected implementation does not expose nopriv AJAX actions, which keeps lookup and redemption actions restricted to authenticated staff workflows.
---
15. Webhooks
The webhook dispatcher listens to internal ticket lifecycle actions and sends signed JSON payloads to configured URLs.
Supported Events
| Event | Trigger | |---|---| | ticket.created | A ticket record is created. | | ticket.redeemed | A ticket is redeemed. | | ticket.voided | A ticket is voided. | | order.tickets_generated | One or more tickets are generated for an order. |
Webhook Payload Envelope
Webhook bodies include:
delivery_ideventsent_at_gmtsite.namesite.urldata
Webhook Headers
The dispatcher sends:
Content-Type: application/json
User-Agent: AthenianTicketsWebhook/{version}
X-Ath-Tickets-Event: {event}
X-Ath-Tickets-Delivery: {delivery_id}
X-Ath-Tickets-Time: {timestamp}
X-Ath-Tickets-Signature: {signature}The signature is calculated as an HMAC-SHA256 hash over:
{timestamp}.{rawBody}using the configured webhook signing secret.
Delivery Result Hook
After a webhook attempt completes, the plugin fires:
do_action('ath_tickets/webhook_delivery_result', $event, $url, $data, $response, $delivery_id);This provides a useful integration point for logging, retry queues, observability, or admin delivery history in a future release.
---
16. Athenian POS Integration
The plugin includes an integration class for the Athenian POS workflow.
POS Hook
add_action('athpos/order_created', [POS::class, 'capture_pos_order'], 20, 2);When a POS order is created, the plugin:
- Tags the order with
_ath_ticket_channel = pos. - Stores
_ath_ticket_pos_registerfrom the POS payload when available. - Checks whether the order includes ticket-enabled products.
- Runs ticket generation for POS-origin orders when applicable.
Reporting Impact
The ticket summary counts tickets whose channel is pos, allowing operators to compare web-issued and POS-issued ticket volume within the WooCommerce Ticketing dashboard.
---
17. WooCommerce Email Integration
The plugin integrates with WooCommerce customer emails through:
woocommerce_email_attachments
woocommerce_email_after_order_tableEmail Attachments
When enabled, ticket PDFs are attached to:
customer_processing_ordercustomer_completed_order
Before attaching PDFs, the plugin calls ticket generation for the order to ensure missing tickets are created.
Email Body Details
The customer email body includes a Your Tickets section with each ticket’s event name, ticket code, download link, and optional email note.
---
Install
- Reviewed source folder: athenian-tickets-admission
- Plugin version reviewed: 0.5.0
- Local source inventory: 32 files (vendor, temporary, test, and Git metadata excluded).
- GitHub baseline: https://github.com/Athenian-Brands/athenian-tickets-admission at baseline/devdocs-0.5.0-20261006 / e045042357bfe919832db247c1670317d63b01f2.
- WordPress and WooCommerce.
- PDF generation, QR/check-in, webhooks, and order effects require target-environment verification.
Configuration
- 1. Executive Summary — see the linked technical reference excerpt.
- 2. Marketing Positioning — see the linked technical reference excerpt.
- 3. Core Value Proposition — see the linked technical reference excerpt.
- 4. Best-Fit Use Cases — see the linked technical reference excerpt.
- 5. Customer-Facing Workflow — see the linked technical reference excerpt.
- 6. Staff, Kiosk, and POS Workflows — see the linked technical reference excerpt.
- 7. Ticket Product Configuration — see the linked technical reference excerpt.
- 8. Ticket Record Model — see the linked technical reference excerpt.
- 9. Ticket Generation Lifecycle — see the linked technical reference excerpt.
- 10. Admin Dashboard and Reporting — see the linked technical reference excerpt.
- 11. Operational Settings — see the linked technical reference excerpt.
- 12. PDF and Barcode Output — see the linked technical reference excerpt.
- 13. REST API — see the linked technical reference excerpt.
- 14. AJAX Interface — see the linked technical reference excerpt.
Usage
- Shortcodes detected in local PHP source: 4
- Static action/filter hooks detected in local PHP source: 34
- REST route registrations detected in local PHP source: 10
Shortcodes
- ath_ticket_checkin — includes/Shortcodes/Checkin.php
- ath_ticket_download — includes/Shortcodes/Checkin.php
- ath_ticket_kiosk — includes/Shortcodes/Checkin.php
- ath_ticket_pos — includes/Shortcodes/Checkin.php
REST Endpoints
- /health — includes/API/Controller.php
- /orders/(?P<id>\d+)/generate — includes/API/Controller.php
- /orders/(?P<id>\d+)/tickets — includes/API/Controller.php
- /reports/summary — includes/API/Controller.php
- /tickets/(?P<id>\d+)/redeem — includes/API/Controller.php
- /tickets/(?P<id>\d+)/void — includes/API/Controller.php
- /tickets/(?P<id>\d+) — includes/API/Controller.php
- /tickets/code/(?P<code>[A-Za-z0-9\-]+)/redeem — includes/API/Controller.php
- /tickets/lookup — includes/API/Controller.php
- /tickets — includes/API/Controller.php
Hooks
- add_meta_boxes — includes/Tickets/CPT.php
- admin_enqueue_scripts — includes/Plugin.php
- admin_menu — includes/Plugin.php
- admin_notices — athenian-tickets-admission-manager.php
- admin_post_ath_tickets_export_csv — includes/Plugin.php
- athpos/order_created — includes/Integrations/POS.php
- ath_tickets/order_tickets_generated — includes/Webhooks/Dispatcher.php
- ath_tickets/ticket_created — includes/Webhooks/Dispatcher.php
- ath_tickets/ticket_redeemed — includes/Webhooks/Dispatcher.php
- ath_tickets/ticket_voided — includes/Webhooks/Dispatcher.php
- before_woocommerce_init — athenian-tickets-admission-manager.php
- init — includes/Plugin.php
- manage_edit- — includes/Tickets/CPT.php
- manage_ — includes/Tickets/CPT.php
- plugins_loaded — athenian-tickets-admission-manager.php
- plugins_loaded — includes/Plugin.php
- post_row_actions — includes/Tickets/CPT.php
- rest_api_init — includes/Plugin.php
- template_redirect — includes/Plugin.php
- woocommerce_account_ath-tickets_endpoint — includes/Plugin.php
- woocommerce_account_menu_items — includes/Plugin.php
- woocommerce_email_after_order_table — includes/Plugin.php
- woocommerce_email_attachments — includes/Plugin.php
- woocommerce_order_status_cancelled — includes/Plugin.php
- woocommerce_order_status_completed — includes/Plugin.php
- woocommerce_order_status_processing — includes/Plugin.php
- woocommerce_order_status_refunded — includes/Plugin.php
- woocommerce_payment_complete — includes/Plugin.php
- woocommerce_process_product_meta — includes/Plugin.php
- woocommerce_product_options_general_product_data — includes/Plugin.php
- wp_ajax_ath_tickets_lookup — includes/Ajax.php
- wp_ajax_ath_tickets_redeem — includes/Ajax.php
- wp_ajax_ath_tickets_summary — includes/Ajax.php
- wp_loaded — includes/MyAccount/Endpoints.php
Data Model
- 7. Ticket Product Configuration — described in the local technical reference.
- 8. Ticket Record Model — described in the local technical reference.
- 9. Ticket Generation Lifecycle — described in the local technical reference.
- 11. Operational Settings — described in the local technical reference.
- 16. Athenian POS Integration — described in the local technical reference.
- 17. WooCommerce Email Integration — described in the local technical reference.
- 18. Security and Access Model — described in the local technical reference.
API Reference
- Local source digest: 74c9fd071df3e2ab9a9fab42bf6ef494186246b924acf6eb9d3182553d6dd841
- Repository URL: https://github.com/Athenian-Brands/athenian-tickets-admission
- Repository reference: baseline/devdocs-0.5.0-20261006
- Repository commit: e045042357bfe919832db247c1670317d63b01f2
Source files include: .gitignore, API.md, assets/css/admin.css, assets/css/frontend.css, assets/js/frontend.js, ath-tickets-marketing-document.md, athenian-tickets-admission-manager-icon.png, athenian-tickets-admission-manager.php, athenian-tickets-admission-manager.zip, docs/athenian-platform-marketing.md, docs/athenian-platform-technical.md, docs/technical-marketing.md, includes/API/Controller.php, includes/Admin/Dashboard.php, includes/Admin/Product.php, includes/Ajax.php, includes/Assets.php, includes/Integrations/POS.php, includes/MyAccount/Endpoints.php, includes/Plugin.php, includes/Settings.php, includes/Shortcodes/Checkin.php, includes/Tickets/CPT.php, includes/Tickets/Generator.php, includes/Tickets/PDF.php, includes/Util.php, includes/Webhooks/Dispatcher.php, lib/fpdf/fpdf.php, …
Troubleshooting
- This baseline is generated from the reviewed local technical reference and source folder. Deployed-version parity and external-provider effects remain separate verification steps.
- Confirm the deployed plugin version, active dependencies, and current repository tree before using implementation details as a release contract.
- Treat payment, carrier, vendor, shipment, inventory, account, credential, and external-provider behavior as integration-dependent until exercised in the target environment.
FAQ
What is this page intended to establish?
A versioned, product-linked starting point for iterative developer documentation. It combines the local implementation reference with a compact detected-code inventory and a committed GitHub baseline.
Is the linked repository baseline verified?
Yes. The repository URL, ref, and commit recorded on this page were verified from the clean GitHub baseline prepared for this documentation pass. That does not by itself prove fleet deployment parity.
What remains for release-grade documentation?
Reconcile the recorded source baseline with the deployed plugin version, then exercise the relevant authenticated, store, provider, payment, carrier, or generated-artifact paths in the target environment.