Polanger Ticket System for WooCommerce

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 ends
  • PGTS_after_ticket_category_priority – After category/priority fields block
  • PGTS_after_ticket_created – After ticket row and first message are stored (AJAX create); args: ticket_id, message_id, data array
  • PGTS_after_ticket_message_field – After message textarea (new ticket form)
  • PGTS_after_ticket_notification – After new-ticket notification is sent; args: ticket_id, user_id
  • PGTS_after_ticket_product_selection – After product/order selection block
  • PGTS_after_ticket_submit – After submit button row (still inside form)
  • PGTS_after_ticket_subject_field – After subject input
  • PGTS_admin_composer_tools – Admin reply composer toolbar area; arg: ticket object
  • PGTS_admin_message_after_content – After each message body in admin ticket view; args: message object, ticket object
  • PGTS_admin_ticket_detail_modals – End of admin ticket detail (e.g. modals); arg: ticket object
  • PGTS_admin_ticket_header_after_title – After title in admin ticket header; arg: ticket object
  • PGTS_admin_ticket_sidebar_product_order – Sidebar product/order card area; args: ticket object, order object or null
  • PGTS_before_new_ticket_form – Before new-ticket template output
  • PGTS_before_render_new_ticket_form – Before rendering new-ticket form (PHP); arg: user_id
  • PGTS_before_ticket_category_priority – Before category/priority fields
  • PGTS_before_ticket_message_field – Before message field
  • PGTS_before_ticket_product_selection – Before product selection block
  • PGTS_before_ticket_submit – Before submit/actions row
  • PGTS_before_ticket_subject_field – Before subject field
  • PGTS_before_ticket_validation – Before server-side validation (AJAX create); arg: sanitized POST array
  • PGTS_message_added – After a ticket message row is stored; args: message_id, ticket_id, message text, is_admin_reply bool, user_id
  • PGTS_message_after_content – After each message body on customer ticket view; args: message object, ticket object
  • PGTS_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 title
  • PGTS_reply_form_actions – Customer reply form actions area; arg: ticket object
  • PGTS_reply_form_before_textarea – Before customer reply textarea; arg: ticket object
  • PGTS_ticket_category_priority_fields – Inside category/priority row (extra fields)
  • PGTS_ticket_created – When ticket row is inserted; args: ticket_id, data array
  • PGTS_ticket_created_before_message – After ticket row, before first message insert; args: ticket_id, data array
  • PGTS_ticket_closed – When status changes to closed or resolved (fires with ticket_closed action); args: ticket_id, ticket object
  • PGTS_ticket_deleted – After permanent admin delete; args: ticket_id, ticket object
  • PGTS_ticket_detail_after_category – Admin sidebar after category block; arg: ticket object
  • PGTS_ticket_detail_after_messages – Customer view after messages list; arg: ticket object
  • PGTS_ticket_detail_sidebar_after_customer – Admin sidebar after customer card; args: user_id, ticket object
  • PGTS_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 object
  • PGTS_tickets_list_header_columns – Extra <th> cells in admin tickets table header
  • PGTS_tickets_list_row_columns – Extra <td> cells per row; arg: ticket object
  • PGTS_settings_tab_content_{$tab} – Settings page tab body (dynamic hook name; $tab is the tab slug)

Filters (apply_filters)

  • PGTS_new_ticket_categories – Categories array passed to new-ticket template; args: array, user_id
  • PGTS_new_ticket_form_title – New ticket page <h2> text
  • PGTS_new_ticket_orders – Orders-with-products for selection; args: array, user_id
  • PGTS_new_ticket_priorities – Priorities array for new-ticket template; args: array, user_id
  • PGTS_new_ticket_purchased_products – Purchased products for selection; args: array, user_id
  • PGTS_new_ticket_template_data – Extra template variables; args: array, user_id
  • PGTS_prevent_new_ticket_form – Return true to block rendering new-ticket form; args: false, user_id
  • PGTS_settings_tabs – Admin settings tabs array
  • PGTS_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 created
  • PGTS_ticket_custom_fields_data – Custom field values merged into ticket creation; args: array, sanitized POST
  • PGTS_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 placeholder
  • PGTS_ticket_message_rows – Textarea rows attribute
  • PGTS_ticket_priorities – Global priorities list
  • PGTS_ticket_statuses – Status slug => label map
  • PGTS_ticket_subject_maxlength – Subject max length attribute
  • PGTS_ticket_subject_minlength – Min subject length (validation + HTML attribute)
  • PGTS_ticket_subject_placeholder – Subject input placeholder
  • PGTS_ticket_submit_button_text – New ticket submit button label
  • PGTS_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

  1. Go to Plugins > Add New in your WordPress admin
  2. Search for “Polanger Ticket System”
  3. Click Install Now and then Activate
  4. Go to Tickets in the admin menu to configure settings

Manual Installation

  1. Download the plugin zip file
  2. Go to Plugins > Add New > Upload Plugin
  3. Upload the zip file and click Install Now
  4. Activate the plugin
  5. Go to Tickets in the admin menu to configure settings

After Activation

  1. Navigate to Tickets > Settings to configure general options
  2. Go to Tickets > Settings > Categories & Priorities to customize categories and priorities
  3. 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 /languages folder. 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 ticket

You 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.

Contributors

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