AI Ticketing Starter — Documentation (WordPress)
AI Ticketing Starter for WordPress is a self-hosted helpdesk foundation. It adds a spam-protected public ticket form, ticket records stored inside WordPress, a customer-facing ticket history, an admin triage screen and a searchable Knowledge Base content type. It is aimed at site owners who want to receive, organise and answer customer requests without sending support data to an external SaaS — everything stays on your own installation.
Scope note: this is the focused WordPress starter edition. It intentionally does not include the advanced SLA automation, multichannel intake, RAG knowledge retrieval or AI-generated replies found in the Joomla AI Ticketing suite. What is documented here matches the code you receive.
Requirements
- A supported WordPress installation.
- PHP 8.1 or newer.
Installation
- Download the purchased ZIP (for example
wp-aiticketing-1.6.50.zip) from your order. - In the WordPress admin, go to Plugins > Add New > Upload Plugin.
- Choose the ZIP, click Install Now, then click Activate.
Activation registers the ticket post type and the Knowledge Base content type. No content is created automatically — you add the front-end pages yourself in the next steps.
Note on uninstall: the uninstall routine deliberately preserves tickets and Knowledge Base articles, so removing the plugin does not delete your business records.
Configuration
- Open the plugin's settings screen in the WordPress admin and review the options for the public workflow (how the public ticket form behaves and how submissions are accepted).
- Create a public page for ticket submission and place the supplied ticket form shortcode on it. The form ships with nonce validation, a honeypot field and rate limiting — these anti-spam checks run before any ticket is stored, and need no external service.
- Create a second, protected page (visible to logged-in users) and place the customer ticket-list shortcode on it. Signed-in customers use this page to review the requests associated with their account.
- If you plan to use the Knowledge Base, start adding articles under the dedicated Knowledge Base content type and publish a listing page so visitors can browse and search them.
Using the plugin
Receiving tickets from the public form
Visitors submit requests through the page carrying the ticket form shortcode. Each submission passes the nonce, honeypot and rate-limit checks; only valid submissions become ticket records. Because tickets are a native WordPress post type, they live in your own database — nothing leaves your site.
Triaging tickets in the admin
Tickets appear in a dedicated admin listing based on the ticket post type. From there you can open each ticket, review the request and manage it like any other WordPress content item. Use this screen as your day-to-day triage queue: work through new tickets, update them and keep the history for your records.
Customer ticket history
The customer ticket-list shortcode gives each signed-in user a self-service view of their own tickets. Keep this page behind a login requirement so users only see requests tied to their account. This reduces "what happened to my request?" follow-up emails.
Knowledge Base
Knowledge Base articles use their own WordPress content type, separate from posts and pages. Articles can be listed and searched from the front end, so you can build a self-service help section that answers common questions before a ticket is opened. Write one article per recurring question and link the Knowledge Base from your support page.
REST foundation
The plugin includes a basic REST foundation for controlled integrations. This is a starting point for connecting external tooling to your ticket data; it is intentionally minimal in this starter edition.
Updates & licence
- AI Ticketing Starter is a paid product (one-time purchase, EUR 119). After purchase, enter your Download Key in the plugin's settings panel. With a valid key, updates are delivered automatically through the standard WordPress Dashboard > Updates screen from the GMC / FuerteventuraTV update server.
- One licence covers one site. For additional sites, purchase additional licences.
- The code is licensed under the GPL: you may inspect and modify it on your own installation. The Download Key gates update delivery and support, not the code itself.
Support
- WhatsApp: +34 633 168 995 — the fastest channel.
- Email: reply to your purchase/order email and include your site URL and the plugin version (see Plugins in your WordPress admin).
- Support is available in English, Italian and Spanish.
- Refunds: paid products come with a 14-day refund window from the date of purchase.
Everything included
The complete capability map of the AI Ticketing family, grouped by area. Groups marked (Joomla) ship in the Joomla flagship; the WordPress Starter edition covers the classic helpdesk subset — see Joomla & WordPress below for exactly what each platform includes.
Ticketing core (helpdesk engine)
- Create tickets from anywhere — customers submit from the public site, agents open them from the backend.
- Threaded conversations — every customer message and agent reply is kept in chronological order on the ticket.
- Internal notes — staff-only private notes on a ticket that the customer never sees.
- Rich status workflow — 8 seeded statuses (New → Open → … → Closed) plus Escalated and Reopened, all editable.
- Five priority levels — Low, Medium, High, Urgent, Critical to triage what matters first.
- Categories — organize tickets by topic (general, billing, technical, account seeded), fully editable.
- Teams & members — route work to Support / Billing / Technical teams with per-user roles.
- Public ticket IDs — every ticket gets a shareable TKT-XXXXXXXX reference safe to send to customers.
- Agent assignment — hand a ticket to a specific agent, who then "owns" it.
- Quick status change — flip a ticket's status in one click from the workspace.
- Configurable workflow transitions — define which status changes are allowed.
- Tags — label tickets for reporting and filtering.
- Customer-reply reopen — a reply on a closed ticket automatically reopens it (Reopened status, clears the closed timestamp) so nothing gets lost.
Customer portal (frontend)
- Public submission form — a clean intake form customers can reach without training.
- Guest tickets (optional) — let visitors raise tickets without creating an account.
- Guest token access — guests get an unguessable "view or reply to your ticket" link to follow up without an account.
- Honeypot spam trap — silently blocks bots without annoying real users.
- IP rate limiting — caps submissions per IP over a configurable window to stop abuse.
- Optional CAPTCHA — adds the site's own CAPTCHA to the guest form when you want it, degrading gracefully if none is installed.
- "My tickets" list — logged-in customers see all their own requests in one place.
- Ticket detail + reply — customers read the full conversation and answer inline.
- File attachments — customers attach files on submit and on every reply.
- Knowledge Base search — customers self-serve answers before opening a ticket.
- One-click satisfaction rating — a no-login CSAT page after resolution.
Admin workspace & operations
- Dashboard KPIs — open/closed volumes and average CSAT at a glance.
- Filterable ticket list — filter by status, priority, category, assignee, SLA state and free-text search.
- Single-ticket workspace — conversation, reply, internal note, assign and status change on one screen.
- AI panel — classify or draft a reply for the open ticket on demand (when AI is on).
- Similar-tickets panel — surfaces related past tickets (reranked, then cosine, then keyword) to reuse solutions.
- Sentiment & extracted-entities badges — see customer mood and key entities pulled from the ticket.
- One-click apply classification — push an AI category/priority/team suggestion onto the ticket in one action.
- Full admin CRUD — manage categories, priorities, statuses, teams, team members, SLA policies, workflow transitions and KB articles.
- Secure attachment review — an Attachments panel with guarded downloads on the ticket edit screen.
Optional AI — triage, auto-reply & escalation (Joomla)
- Master AI switch — the whole helpdesk runs fully with AI off; turn it on when ready.
- Provider choice — NVIDIA NIM, a private AI Gateway (FastAPI/enterprise), or none — behind one interface.
- Auto-classification — incoming tickets get category, priority, team, detected language, sentiment score and a "wants a human" signal.
- Grounded auto-reply — when confident and backed by the KB, the AI posts a public reply, emails the customer and moves the ticket to a pending status.
- Automatic human escalation — hands off to a human on wants-human, negative sentiment, low confidence, no KB match, or model uncertainty — so AI never guesses.
- Confidence threshold — set how sure the AI must be before it answers instead of escalating.
- Sentiment escalation threshold — unhappy customers route straight to a person.
- KB-match threshold — replies only go out when a real KB article grounds them.
- Manual AI-draft tool — agents generate a draft that always requires human approval before sending.
- Async queue processing — AI runs in the background on the scheduler, never blocking the page.
- Duplicate-safe & self-healing queue — atomic job claim stops double-replies; stale jobs requeue; failed jobs retry with back-off.
- Prompt-injection containment — untrusted ticket/KB text is delimited and treated as data, never as instructions; drafts can't promise refunds or legal outcomes.
- Custom classifier endpoint — plug in NeMo/TAO/your own ML model to classify before the LLM path.
- AI cost telemetry — token counts and configurable input/output cost-per-1k recorded per call.
- Bring-your-own key, env-first — your NVIDIA key can live in a server environment variable and is never written to the database.
- Holding message — optionally post a reassuring public note to the customer the moment a ticket escalates.
- Reply-language matching — answers come back in the ticket's own language.
- Escalation routing — escalated tickets auto-assign to a chosen agent with an internal note and staff notification.
Knowledge Base & RAG (RAG: Joomla)
- KB article management — create and maintain help articles in the admin.
- Automatic embedding/indexing — articles are chunked and vectorized for semantic search.
- RAG-grounded answers — AI replies cite real KB articles instead of hallucinating.
- Optional rerank stage — an NVIDIA cross-encoder refines the shortlist for sharper answers.
- Frontend KB search — customers search the same knowledge base directly.
- Pluggable vector backend — in-database SQL/cosine by default, PostgreSQL pgvector, or a managed vector DB (Milvus/managed) through the gateway, each with safe fallback.
- KB reindex API — re-embed the whole knowledge base via a REST endpoint.
SLA management (Joomla)
- SLA policies — define first-response and resolution targets (in minutes) per policy.
- Automatic due-date backfill — tickets get first-response/resolution deadlines from the default policy.
- Live SLA state — every open ticket is tracked as ok / near-breach / breached.
- Breach events — a breach fires an event on transition for notifications or downstream automation.
CSAT (customer satisfaction)
- One-click 1–5 rating — a tokenized, no-login rating link after resolution.
- Optional email invite — automatically email the rating request on resolve/close.
- Write-once integrity — a rating and its comment can't be gamed or overwritten.
- Average CSAT on the dashboard — track satisfaction trend at a glance.
Omnichannel intake (Joomla)
- Email-to-ticket — turn inbound email into tickets via IMAP fetch, a spool folder, or an inbound email webhook.
- OAuth2 mailboxes — connect Gmail/Microsoft-style mailboxes with XOAUTH2 (or classic password IMAP).
- Email threading & dedupe — replies attach to the right ticket and duplicates are ignored.
- WhatsApp two-way — receive and send WhatsApp messages via the Meta Graph API, with webhook verification.
- Telegram two-way — receive and send Telegram bot messages, with secret-token verification.
- Voice / ASR ingest — ingest voice-call transcripts as tickets via a voice webhook.
- Seven channels tracked — web, backend, email, WhatsApp, Telegram, voice and API, each with per-event dedupe.
Multi-tenant / SaaS & billing (Joomla)
- Optional multi-tenant mode — isolate data by tenant across all operational tables.
- SaaS tenant registry — plans, tenants, subscriptions and provider-credential metadata (never secret values).
- Stripe billing webhook — signature-verified, with an optional write mode to apply subscription state.
- Stripe Customer Portal — generate a self-serve billing-management session for tenants.
- Plan-change to ticket — subscription changes can surface as tickets for follow-up.
- Affiliate sale reporting — capture a
?ref=referral cookie and credit a referring affiliate on a paid sale, fully isolated from the billing response. - Tenant account view — a front-end account surface for tenant/billing.
- Configurable billing timeouts & return URLs — tune the portal integration to your setup.
Developer, API & integrations
- REST tickets API (JSON:API) — full tickets CRUD over Joomla Web Services (
/api/v1/aitickets/tickets). - Custom REST routes — add a thread message, generate an AI draft, or reindex the KB via dedicated endpoints.
- Filtered & paginated list — the list endpoint honors status, priority, category, assignee, SLA state and search filters with proper pagination metadata.
- Token-authenticated & ACL-gated — API access uses Joomla API tokens and the component's own permissions.
- Plugin events for extension —
onAITicketAfterCreate / AfterReply / StatusChange / SlaBreach / AiSuggestionCreated(WordPress exposes matching action hooks) for CRM, notifications or omnichannel add-ons. - Inbound webhooks — email, WhatsApp, Telegram, voice and billing endpoints, each protected by a token or signature.
- Scheduler task plugin — three headless routines (process AI queue, SLA monitor, retention cleanup) run under Joomla Scheduled Tasks.
- WordPress REST foundation — logged-in ticket creation plus editor/admin ticket listing.
Security, privacy & GDPR
- Granular ACL — per-capability permissions (reply, assign, close, KB manage, SLA manage, AI configure, export, audit view, tenant manage).
- CSRF on every mutation — every state-changing action is token-checked.
- Hardened SQL — parameterized queries throughout; no PHP superglobals, no string-concatenated SQL.
- PII redaction in logs — emails, IBANs, phone numbers and long digit runs are masked in audit/error logs.
- IP coarsening — stored IPs drop their last octet for privacy.
- Append-only audit log — a tamper-resistant record of who did what, that never breaks the user action.
- Configurable retention — auto-purge closed tickets after N days, deleting the physical attachment files too.
- Subject-access export — export a person's data as JSON from the Privacy (DSR) page.
- Anonymize by email — scrub identifying data while keeping operational history.
- Native privacy integration — Joomla privacy-plugin bridge; WordPress Tools → Export/Erase Personal Data exporter & eraser (incl. attachment metadata-only export).
- Optional AI-consent gate — require a consent checkbox on the form before any AI processing runs.
- Secure attachments — extension allowlist, size cap, real MIME sniff (fail-closed), randomized stored names, deny files, and downloads served only to the owner / guest-token holder / agent, always forced as a download (no inline XSS).
- Optional antivirus scan hook — run an AV command against uploads before they're accepted.
- Human-in-the-loop by contract — nothing auto-sends unless you configure it; manual drafts are always review-gated.
Internationalization & compatibility
- Ships EN / IT / ES — English, Italian and Spanish out of the box.
- Multilingual-aware — respects the site's multilingual setup.
- Joomla 5.x & 6.x — native package for both major lines.
- PHP 8.1+ — 8.3+ recommended (required path for Joomla 6).
- MySQL 8 / MariaDB 10.6+ — primary supported databases.
- PostgreSQL-portable — full PostgreSQL install path (with optional pgvector), no hard foreign keys by design.
Trust & licensing
- GNU GPLv2 or later — open-source licensed.
- Self-hosted — tickets and customer data stay on your own site.
- No external service required — the classic helpdesk makes zero outbound AI calls until you add a provider and your own key.
- Licensed one-click updates — automatic update checks (~every 24h) from the GMC / FuerteventuraTV gateway while your licence is active.
- Download Key via email — enter your key on the GMC Licenses screen to unlock updates.
- One-site licence, Solo/Agency tiers — install the single pkg_*.zip package (never the inner zips); only the package version triggers licensed updates.
Joomla & WordPress
- Joomla — the flagship, full suite — SLA engine, RAG-grounded auto-reply + escalation, omnichannel intake (email/WhatsApp/Telegram/voice), multi-tenant/SaaS billing, REST API and scheduler tasks, delivered as one package of four extensions (component + task, web-services and privacy plugins).
- WordPress — the "essential" starter edition — spam-protected ticket intake, per-customer ticket list, per-ticket view/reply (with closed-ticket reopen), guest-token access, secure attachments, a Knowledge Base custom post type with search, admin triage, GDPR export/erase, a REST foundation and self-hosted updates. AI auto-reply, SLA automation, RAG and multichannel intake are on the WordPress roadmap, not yet shipped. Shortcodes: [aiticketing_submit], [aiticketing_my_tickets], [aiticketing_ticket], [aiticketing_kb].


