Description
Polanger Ticket System is a support ticket plugin for WooCommerce. It provides a ticket-based support system integrated with WooCommerce.
Key Features
Polanger Ticket System includes the following features:
- Chat-style messaging interface
- Real-time collision detection (Agent Lock)
- Automatic email notifications
- Customizable categories & priorities
- WooCommerce order & product linking
- Customer ticket closing option
- Maximum active tickets limit
- Auto-close inactive tickets
- HPOS compatible
- Fully translatable (i18n ready)
Ticket Management
- Create Tickets – Customers can easily create support tickets from their My Account page
- Track Status – Monitor tickets through Open, In Progress, Waiting, Resolved, and Closed statuses
- Priority Levels – Organize tickets by urgency with customizable priority levels (Low, Normal, High, Urgent)
- Categories – Categorize tickets for better organization and routing
- Order Association – Link tickets to specific WooCommerce orders for context
- Product Association – Connect tickets to purchased products
Chat Interface
- Real-time Updates – Automatic polling for new messages without page refresh
- Chat-style Design – Familiar messaging interface like popular chat apps
- Admin & Customer Badges – Clear distinction between support team and customer messages
- Time Stamps – Human-readable “X minutes ago” format
- User Avatars – Visual identification for all participants
Security & Control
- Agent Lock / Collision Detection – Prevents multiple admins from working on the same ticket simultaneously with real-time warnings
- Heartbeat System – 30-second presence checks to track active viewers
- Auto-Leave Detection – Automatically removes inactive agents using sendBeacon API
- 2-Minute Timeout – Inactive admins are automatically removed from viewer list
- Max Active Tickets – Limit how many open tickets a customer can have at once
- Nonce Verification – All AJAX requests are secured with WordPress nonces
- Capability Checks – Role-based access control for all operations
Settings
- Enable/Disable System – Turn the entire ticket system on or off
- Require Product Purchase – Only allow customers who purchased products to create tickets
- Custom No-Purchase Message – WYSIWYG editor for custom messages with links
- Tickets Per Page – Control pagination for ticket lists
- Customer Ticket Closing – Allow or prevent customers from closing their own tickets
- Auto-Close Days – Automatically close tickets after X days of inactivity
- Max Active Tickets – Set maximum number of active tickets per customer
Email Notifications
- New Ticket Alerts – Admin receives email when a new ticket is created
- Reply Notifications – Customers receive email when admin replies
- Custom Admin Email – Set a specific email address for notifications
- Enable/Disable – Full control over email notifications
Interface
- Admin Dashboard – Gradient headers, card-based layout
- Status Color Coding – Each status has a distinct color for quick identification
- Priority Indicators – Visual priority badges with customizable colors
- Row Highlighting – Ticket list rows colored by status
- Hover Effects – Smooth animations and transitions
- Fully Responsive – Works perfectly on all devices
- Unread Badge – Shows unread ticket count in My Account menu
WooCommerce Integration
- My Account Integration – Seamless “Support Tickets” tab in customer account
- Order Linking – Associate tickets with specific orders
- Product Linking – Connect tickets to purchased products
- Purchase Verification – Optionally require product purchase for ticket creation
- HPOS Compatible – Full support for High-Performance Order Storage
Developer Friendly
- Hook System – Extensive action and filter hooks for customization
- Clean Code – WordPress Coding Standards compliant (PHPCS)
- Custom Database Tables – Optimized performance with dedicated tables
- i18n Ready – Complete translation support with .pot file
- Debug Logging – Built-in logging when WP_DEBUG is enabled
Available Hooks for Developers
The free plugin registers the actions and filters below. Pro addons use many of the same extension points (for example file uploads hook into PGTS_ticket_attachments_field).
Actions (do_action)
PGTS_after_new_ticket_form– After the new-ticket template wrapper endsPGTS_after_ticket_category_priority– After category/priority fields blockPGTS_after_ticket_created– After ticket row and first message are stored (AJAX create); args: ticket_id, message_id, data arrayPGTS_after_ticket_message_field– After message textarea (new ticket form)PGTS_after_ticket_notification– After new-ticket notification is sent; args: ticket_id, user_idPGTS_after_ticket_product_selection– After product/order selection blockPGTS_after_ticket_submit– After submit button row (still inside form)PGTS_after_ticket_subject_field– After subject inputPGTS_admin_composer_tools– Admin reply composer toolbar area; arg: ticket objectPGTS_admin_message_after_content– After each message body in admin ticket view; args: message object, ticket objectPGTS_admin_ticket_detail_modals– End of admin ticket detail (e.g. modals); arg: ticket objectPGTS_admin_ticket_header_after_title– After title in admin ticket header; arg: ticket objectPGTS_admin_ticket_sidebar_product_order– Sidebar product/order card area; args: ticket object, order object or nullPGTS_before_new_ticket_form– Before new-ticket template outputPGTS_before_render_new_ticket_form– Before rendering new-ticket form (PHP); arg: user_idPGTS_before_ticket_category_priority– Before category/priority fieldsPGTS_before_ticket_message_field– Before message fieldPGTS_before_ticket_product_selection– Before product selection blockPGTS_before_ticket_submit– Before submit/actions rowPGTS_before_ticket_subject_field– Before subject fieldPGTS_before_ticket_validation– Before server-side validation (AJAX create); arg: sanitized POST arrayPGTS_message_added– After a ticket message row is stored; args: message_id, ticket_id, message text, is_admin_reply bool, user_idPGTS_message_after_content– After each message body on customer ticket view; args: message object, ticket objectPGTS_new_ticket_form_end– End of form (before closing template section)PGTS_new_ticket_form_start– Start of<form>(new ticket)PGTS_new_ticket_header– Inside form header next to titlePGTS_reply_form_actions– Customer reply form actions area; arg: ticket objectPGTS_reply_form_before_textarea– Before customer reply textarea; arg: ticket objectPGTS_ticket_category_priority_fields– Inside category/priority row (extra fields)PGTS_ticket_created– When ticket row is inserted; args: ticket_id, data arrayPGTS_ticket_created_before_message– After ticket row, before first message insert; args: ticket_id, data arrayPGTS_ticket_closed– When status changes to closed or resolved (fires with ticket_closed action); args: ticket_id, ticket objectPGTS_ticket_deleted– After permanent admin delete; args: ticket_id, ticket objectPGTS_ticket_detail_after_category– Admin sidebar after category block; arg: ticket objectPGTS_ticket_detail_after_messages– Customer view after messages list; arg: ticket objectPGTS_ticket_detail_sidebar_after_customer– Admin sidebar after customer card; args: user_id, ticket objectPGTS_ticket_form_actions_end– End of submit/actions row (new ticket)PGTS_ticket_form_actions_start– Start of submit/actions row (new ticket)PGTS_ticket_attachments_field– Extension point for attachment UI (free outputs nothing here; Pro uses it)PGTS_ticket_status_changed– After status update; args: ticket_id, new status, old status, ticket objectPGTS_tickets_list_header_columns– Extra<th>cells in admin tickets table headerPGTS_tickets_list_row_columns– Extra<td>cells per row; arg: ticket objectPGTS_settings_tab_content_{$tab}– Settings page tab body (dynamic hook name;$tabis the tab slug)
Filters (apply_filters)
PGTS_new_ticket_categories– Categories array passed to new-ticket template; args: array, user_idPGTS_new_ticket_form_title– New ticket page<h2>textPGTS_new_ticket_orders– Orders-with-products for selection; args: array, user_idPGTS_new_ticket_priorities– Priorities array for new-ticket template; args: array, user_idPGTS_new_ticket_purchased_products– Purchased products for selection; args: array, user_idPGTS_new_ticket_template_data– Extra template variables; args: array, user_idPGTS_prevent_new_ticket_form– Return true to block rendering new-ticket form; args: false, user_idPGTS_settings_tabs– Admin settings tabs arrayPGTS_template_path– Subfolder under your theme for template overrides (default:polanger-ticket-system-for-woocommerce/)PGTS_ticket_categories– Global categories list (from options/DB)PGTS_ticket_created_response– AJAX JSON after ticket createdPGTS_ticket_custom_fields_data– Custom field values merged into ticket creation; args: array, sanitized POSTPGTS_ticket_default_priority– Default selected priority slug (default:normal)PGTS_ticket_message_minlength– Min message length (validation + HTML attribute)PGTS_ticket_message_placeholder– Message textarea placeholderPGTS_ticket_message_rows– Textarea rows attributePGTS_ticket_priorities– Global priorities listPGTS_ticket_statuses– Status slug => label mapPGTS_ticket_subject_maxlength– Subject max length attributePGTS_ticket_subject_minlength– Min subject length (validation + HTML attribute)PGTS_ticket_subject_placeholder– Subject input placeholderPGTS_ticket_submit_button_text– New ticket submit button labelPGTS_ticket_validation_error– Return WP_Error or string to fail validation; args: null, sanitized POST
Pro Version
The Pro version extends the plugin with 10 modular addons that can be enabled or disabled independently.
Support Panel
A complete frontend support interface for agents. Manage tickets without WordPress admin access. Includes ticket claiming system, internal notes, agent assignment, live messaging with real-time updates, and customer search functionality.
File Attachments addon
The File Attachments addon allows customers and agents to attach files to new tickets and replies. In Pro settings, you can enable or disable uploads, set the maximum file size (MB), and restrict allowed file types. It supports drag-and-drop uploads, secure storage, and nonce-protected download links, and integrates seamlessly with the Support Panel and ticket messages.
Canned Responses
Create and use pre-written responses for common questions. Features include keyboard shortcuts, categories, dynamic placeholders ({customer_name}, {ticket_id}, etc.), personal and global responses, and usage tracking.
Auto Assignment
Automatically assign unassigned tickets to agents after a configurable time period. Supports “Least Active” and “Round Robin” strategies, agent capacity limits, and race condition protection.
SLA Management
Track response and resolution times with Service Level Agreements. Features priority-based SLA policies, working hours support, automatic pause/resume when waiting for customer, breach detection, and visual SLA indicators.
Analytics Dashboard
Real-time analytics for support operations. Monitor live ticket status, SLA health, daily performance, agent metrics, breach rates, and reopen rates. Includes smart caching and AJAX refresh.
Customer Priority
Automatic customer scoring based on order history and spending. Priority customers are sorted to the top of ticket lists. Includes customer insights panel with order history, ticket history, and manual priority override.
Agent Notifications
Real-time notifications for support agents when new tickets arrive or customers reply.
Merge/Split Tickets
Merge related tickets into one or split complex tickets into multiple separate tickets.
Ticket Rating
Collect customer satisfaction ratings after ticket closure to measure support quality.
More information:
Installation
Automatic Installation
- Go to Plugins > Add New in your WordPress admin
- Search for “Polanger Ticket System”
- Click Install Now and then Activate
- Go to Tickets in the admin menu to configure settings
Manual Installation
- Download the plugin zip file
- Go to Plugins > Add New > Upload Plugin
- Upload the zip file and click Install Now
- Activate the plugin
- Go to Tickets in the admin menu to configure settings
After Activation
- Navigate to Tickets > Settings to configure general options
- Go to Tickets > Settings > Categories & Priorities to customize categories and priorities
- Customers can now access tickets from their My Account > Support Tickets page
FAQ
-
Does this plugin require WooCommerce?
-
Yes, WooCommerce 5.0 or higher is required. The plugin integrates directly with WooCommerce’s My Account page.
-
Where do customers access their tickets?
-
Customers can access their tickets from the “Support Tickets” tab in their WooCommerce My Account page.
-
Can I customize ticket categories and priorities?
-
Yes! Navigate to Tickets > Settings and click on the Categories & Priorities tab. You can add, edit, delete, and reorder both categories and priorities. Each can have a custom name, color, and default status.
-
How does collision detection work?
-
When an admin opens a ticket, the system registers them as a “viewer” using a heartbeat system. If another admin opens the same ticket, both will see a warning message showing who else is viewing the ticket. This prevents duplicate responses and confusion.
-
Can customers close their own tickets?
-
Yes, this is enabled by default. You can disable it in Tickets > Settings by unchecking “Allow Customers to Close Tickets”.
-
How do I limit the number of tickets a customer can create?
-
Go to Tickets > Settings and set the “Max Active Tickets Per Customer” option. Set to 0 for unlimited tickets.
-
Is the plugin compatible with HPOS?
-
Yes! Polanger Ticket System is fully compatible with WooCommerce’s High-Performance Order Storage (HPOS).
-
Can I translate the plugin?
-
Yes, the plugin is fully translatable. A .pot file is included in the
/languagesfolder. You can use tools like Poedit or Loco Translate to create translations. -
How do email notifications work?
-
When enabled, the plugin sends:
– Email to admin when a new ticket is created
– Email to customer when admin replies to their ticketYou can configure the admin email address and enable/disable notifications in Tickets > Settings.
-
Are there additional extensions?
-
Yes, additional features are available through separate extensions. See the Extensions section above for details.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Polanger Ticket System for WooCommerce” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Polanger Ticket System for WooCommerce” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.2.1
- Added: Permanent ticket deletion from the admin ticket list and ticket detail screen.
- Improved: Ticket deletion now requires confirmation before execution.
- Security: Deletion is restricted to closed tickets only; server-side validation prevents removal of open or in-progress tickets, even for tampered requests.
- Security: Added nonce-protected AJAX and capability checks (
manage_woocommerce) to control deletion permissions. - Developer: Expanded “Available Hooks for Developers” documentation in the readme with a complete list of
PGTS_actions and filters, including descriptions and parameter notes.
1.2.0
- Performance: Improved My Account ticket list polling with debouncing and reduced unnecessary reflows during background updates.
- Performance: Optimized admin ticket detail scripts with more efficient event handling and faster AJAX reply processing.
- Performance: Reduced redundant option and settings reads when rendering ticket badges on the frontend.
- Performance: Optimized ticket list queries with more efficient column selection for large datasets.
- Mobile: Improved tap targets, spacing, and readability on ticket forms and chat threads for small screens (~480px and below).
- Mobile: Enhanced reply composer behavior when the on-screen keyboard opens (better scroll positioning and iOS safe-area support).
1.0.0
- Initial release
- Complete ticket management system
- Customer frontend integration with WooCommerce My Account
- Admin dashboard with gradient design
- Real-time chat-style messaging
- Agent lock / collision detection system
- Email notifications for new tickets and replies
- Customizable categories with colors
- Customizable priorities with colors
- Order and product association
- Customer ticket closing option
- Maximum active tickets per customer limit
- Auto-close inactive tickets setting
- Require product purchase option
- Custom no-purchase message with WYSIWYG editor
- Status-based row coloring in ticket lists
- Unread ticket badge in My Account menu
- Full HPOS compatibility
- Complete i18n support
- WordPress Coding Standards compliant
- Extensive hook system for developers
