
NiroHelp is an all-in-one help desk for WordPress. A public knowledge base, a client-facing ticket system, an embeddable AI chatbot, and a ticket auto responder, all in a single plugin under one “NiroHelp” admin menu and one settings option.
The base help-desk features (docs, tickets, emails, migration) work fully offline. The optional AI features (chatbot, auto responder, doc sync) connect to the NiroHelp RAG service and require a one-time site registration.
Modules
- Docs – public knowledge base (custom post type
nirohelp_doc). - Tickets – client support queue (custom post type
nirohelp_ticket). - AI Chatbot – embeddable JavaScript widget that answers visitor questions from your synced docs.
- AI Auto Responder – replies to tickets on a delay using the same knowledge base.
- Migration – one-click import from BetterDocs, weDocs, Echo Knowledge Base, BasePress, Awesome Support, SupportCandy, and JS Help Desk.
Either Docs or Tickets can be turned off under NiroHelp > Settings > General > Modules. At least one must remain active.
Docs
- Hierarchical Topics (
nirohelp_topic) and shared Products (nirohelp_product) taxonomies. - Configurable URL structure: plain, topic-based, product-based, or nested. Selectable under Settings > Docs > Permalink.
[nirohelp_docs]shortcode renders a grouped, searchable archive.- Upvote and downvote buttons on every doc.
- Fancybox image zoom and Prism.js syntax highlighting in the single-doc template.
- Display settings (Settings > Docs > Display) — toggles for sidebar, breadcrumbs, prev/next pagination, rating buttons, and comments. Configurable docs per page and topic card limits.
- Reader comments on doc pages (toggle under Settings > Docs > Display).
- Doc list caching via WP object cache (Redis/Memcached) or transients, with a configurable TTL. Automatically invalidated on every doc save or delete. Toggle and lifetime under Settings > Docs > Cache.
Tickets
- Eight custom statuses: Open, In Progress, Waiting, On Hold, Resolved, Reopened, Cancelled, Closed.
- Automatic status transitions: agent reply -> In Progress, client reply -> Waiting. Configurable globally under Settings > Tickets > Behaviour or per-ticket via
nirohelp_auto_status_transition_on_commentfilter. Skipped when the ticket is resolved, closed, or cancelled. - Three custom roles:
nirohelp_manager,nirohelp_agent,nirohelp_user. [nirohelp_tickets]shortcode shows the client’s ticket list with filters and pagination.[nirohelp_new_ticket]shortcode renders the submission form.- Manageable form fields – show/hide built-in fields, reorder them, mark any as required, and add unlimited custom fields (text, number, email, textarea, or select with admin-defined options) under Settings > Tickets > Form Fields.
- Agent assignment – three strategies: random (default), round-robin, or least-loaded. Set a per-agent maximum open-ticket limit. Auto-assignment can be disabled for manual-only workflows.
- Agents management page (NiroHelp > Agents) – lists all Agent-role users with their current open ticket count, total assigned, and an at-capacity badge.
- Three configurable client login methods under Settings > Tickets > Submission > Login method: (1) Verification code — client enters email, receives a 6-digit OTP, enters it to log in; (2) Magic link — client enters email, receives a one-click login link in their inbox; (3) Password — standard login form with a two-step sign-up flow (email verified via OTP before account is created).
- Optional guest ticket submission – let unauthenticated visitors submit tickets (name and email collected on the form).
- Reasons taxonomy (
nirohelp_reason) and four urgency levels (Low, Medium, High, Severe). - Notification emails on new ticket (to client and to agent), agent reply, client reply, ticket resolved, login verification code, and magic link login. Each one has a configurable Header, Subject, and Body.
- Email branding under Settings > Emails > Branding — upload logo and set footer text applied to all ticket emails.
- Placeholders supported in all email fields:
##site_name##,##client_name##,##agent_name##,##ticket_id##,##ticket_subject##,##ticket_link##,##ticket_product##,##ticket_priority##,##code##(OTP emails),##link##(magic link email). - Full REST API under
/wp-json/nirohelp/v1/.
AI Chatbot
A vanilla-JS chat widget you embed with a single <script> tag. Generated from Settings > AI > Configure once your site is registered.
- Branding: agent name, avatar, primary color, launcher position (bottom-left or bottom-right), launcher tooltip, and panel width / height.
- Conversation copy: custom welcome message, input placeholder, and clickable “suggested prompt” chips that disappear after the first user message.
- Auto-open triggers: open the panel automatically after a delay (seconds), at a scroll percentage, or on exit-intent. Fires at most once per browsing session.
- URL targeting:
data-show-onanddata-hide-onaccept comma-separated path patterns with*wildcards (e.g./docs/*,/checkout/*). Path-only matching, query strings ignored. Hide rules win. - Business hours: define windows like
mon-fri:9-17, sat:10-14in the visitor’s local time. Outside hours, swap in an offline greeting or hide the launcher entirely. - Conversation history persisted per-browser in
sessionStorage. - Preview button renders the widget in-place using the current settings (no save needed).
- View Code copies the embed snippet for any site, WordPress or not.
- Download Plugin packages the embed code into a tiny installable WordPress plugin you can hand to a customer.
AI Auto Responder
- Runs on WP-Cron. Each new ticket and each fresh client reply schedules a single bot-reply job after a configurable delay (minutes, hours, or days).
- The delay restarts every time the client posts again, so the bot only replies if a human agent has not.
- The reply is only posted when the RAG model’s relevance score clears a configurable threshold (0-100%). Below that, the ticket stays for a human.
- Any agent reply, or any move to Resolved / Closed / Cancelled, cancels the pending bot job before it fires.
- The bot reply is posted as a ticket comment by a configurable author name (e.g. “Support Bot”) and can optionally flip the ticket status to In Progress.
- Context sent to the AI: ticket title, client name, email, order meta, product terms, urgency, and the full client/agent transcript. The latest client message is the question.
Migration
One-click import from existing help-desk plugins, runs in batches in the background and is safe to re-run.
- BetterDocs – articles +
doc_category-> NiroHelp docs and topics. - weDocs – container pages become topics; leaf pages become docs.
- Echo Knowledge Base – articles and categories from every KB (multi-KB supported).
- BasePress – articles +
knowledgebase_cat-> NiroHelp docs and topics. - Awesome Support – tickets, replies, attachments, and product / department terms -> NiroHelp tickets.
- SupportCandy – tickets, threads, customers, agent assignments, categories, priorities, tags, custom fields, and attachments -> NiroHelp tickets and comments.
- JS Help Desk (js-support-ticket) – tickets, replies, departments, products, priorities, custom fields, and attachments -> NiroHelp tickets, comments, reasons, and products.
A “Clean” action removes NiroHelp content created by a previous migration of that source. The source plugin’s data is never modified for the doc importers; for the custom-table ticket sources (SupportCandy, JS Help Desk) the Clean action also drops the imported source rows so the migration can be re-run from scratch.
Settings, REST, hooks
- All settings live in a single
nirohelp_settingsoption, keyed[tab][section][field]. - Built on the native WordPress Settings API, extended with a repeater field type for multi-row configuration (used by Form Fields).
- Filterable schema via the
nirohelp_settings_menusfilter. - REST namespace:
nirohelp/v1(docs, tickets, comments, login, wp-login, wp-signup, taxonomies, urgencies, AI register / verify / sync). - Action hooks fire on the
nirohelp-tickets-*prefix (e.g.nirohelp-tickets-ticket_created,nirohelp-tickets-client_commented,nirohelp-tickets-ticket_status_changed). nirohelp_ticket_form_fields()returns the active form field registry;nirohelp_ticket_form_fields_default()returns the factory defaults.- Translation-ready (text domain
nirohelp,.pottemplate inlanguages/).
External Services
NiroHelp’s core features (docs, tickets, emails, migration) work entirely offline. The optional AI features connect to the NiroHelp RAG service hosted at https://nirohelp.com.
What the service is: A retrieval-augmented generation (RAG) API that powers the AI chatbot and auto responder by searching your synced documentation and generating replies.
When data is sent:
- Site registration – when you click “Connect” in NiroHelp > AI, your site URL, site title, your name, and email are sent to
https://nirohelp.com/wp-json/nirohelp-cloud/v1/sitesto create an account and receive asite_key. - Doc sync – when you click “Sync Docs”, your published documentation content is sent to
https://nirohelp.com/wp-json/nirohelp-cloud/v1/syncso it can be indexed for AI queries. - Chatbot queries – each visitor message sent to the chatbot is forwarded to
https://nirohelp.com/wp-json/nirohelp-cloud/v1/askalong with yoursite_key. - Auto responder – when a new ticket arrives, the ticket title, client name, email, order reference, product terms, urgency, and the client/agent conversation transcript are sent to
https://nirohelp.com/wp-json/nirohelp-cloud/v1/respondto generate a suggested reply. - Usage & logs – the plugin periodically fetches usage statistics and log entries from
https://nirohelp.com/wp-json/nirohelp-cloud/v1/usageandhttps://nirohelp.com/wp-json/nirohelp-cloud/v1/logsusing yoursite_key. - Disconnection – when you click “Disconnect”, your
site_keyis sent tohttps://nirohelp.com/wp-json/nirohelp-cloud/v1/unverifyto deregister the site.
No data is sent to the NiroHelp RAG service unless you explicitly enable the AI features and register your site.