JoomFAQs includes a built-in voting system that lets your site visitors tell you whether an FAQ answer was helpful. This guide covers how the voting system works, how to configure it, and how to use the collected data to improve your FAQ content.
How the Voting System Works
Every published FAQ question can display a small poll below its answer asking "Was this information useful?" Visitors respond by clicking one of two buttons:
- Thumbs up (Yes) -- The answer was helpful.
- Thumbs down (No) -- The answer was not helpful. When a visitor clicks "No," a comment modal opens so they can explain why the answer did not help.
This two-part design serves a dual purpose: it gives you a quick quantitative measure of answer quality (yes/no counts) and a qualitative channel (written feedback) for understanding what needs improvement.
What Happens When a Visitor Votes "Yes"
- The visitor clicks the thumbs-up icon.
- An AJAX request sends the vote to the server.
- The
vote_yescounter for that question is incremented by one in the database. - The voting form is replaced with a "Thank you for your vote" success message that fades out after a few seconds.
What Happens When a Visitor Votes "No"
- The visitor clicks the thumbs-down icon.
- A modal dialog opens with the title "Your Message," prompting the visitor to explain why the answer was not helpful.
- The visitor writes their feedback and clicks Save (or clicks Close to cancel without submitting).
- If saved, the comment is stored in the database and the
vote_nocounter is incremented. - The voting form is replaced with a "Thank you! Your feedback will help us improve our Help Center" success message.
This means every "No" vote is accompanied by a written comment, giving you actionable context rather than just a number.
Enabling and Disabling Voting
Voting can be controlled at two levels: per-category and per-menu-item. The setting is called Poll in the JoomFAQs configuration.
Category-Level Setting
Each FAQ category has its own Poll toggle. This is the primary way to control voting visibility.
- Go to Components > JoomFAQs > Categories.
- Open the category you want to configure.
- Switch to the Questions Options tab.
- Find the Poll option.
- Set it to Show or Hide.
- Click Save & Close.
| Setting | Value | Effect |
|---|---|---|
| Poll | Show | Voting buttons appear below each answer in this category. |
| Poll | Hide | Voting buttons are hidden; visitors cannot vote. |
Default value: Show (enabled).
Menu-Item-Level Override
If you have created a menu item that links to a JoomFAQs category, you can override the category-level Poll setting for that specific menu item.
- Go to Menus > [Your Menu] > [Your FAQ Menu Item].
- Switch to the Questions Options tab.
- Change the Poll setting as needed.
- Click Save & Close.
The menu-item setting takes precedence over the category setting when the FAQ page is accessed through that particular menu item.
Quick Reference: Poll Configuration
| Level | Location | Tab | Field Name | Default |
|---|---|---|---|---|
| Category | Components > JoomFAQs > Categories > [Category] | Questions Options | Poll | Show |
| Menu Item | Menus > [Menu] > [Item] | Questions Options | Poll | Show |
Where Voting Buttons Appear
Voting buttons are rendered in two places on the frontend, as long as the Poll setting is enabled:
-
Category view -- Inside each accordion item, below the answer text. When a visitor expands a question in the accordion, the voting form appears at the bottom of the answer panel.
-
Single question view -- Below the answer text on the dedicated question page (accessed via the "Permalink" link).
In both views, the voting form is styled as a light-background card with a blue informational message ("Was this information useful?") followed by inline radio buttons with thumbs-up and thumbs-down icons.
Vote Tracking in the Admin Panel
JoomFAQs gives you several places to review voting data.
Dashboard Statistics
The admin dashboard (Components > JoomFAQs > Dashboard) displays vote totals in the statistics cards at the top of the page:
| Card | What It Shows |
|---|---|
| Like | Total number of "Yes" (thumbs-up) votes across all FAQs. |
| Dislike | Total number of "No" (thumbs-down) votes across all FAQs. |
| Total Votes | Combined total of all Yes and No votes. |
Each card also shows a month-over-month percentage comparison, so you can see whether engagement is trending up or down.
Question List View
In the question manager (Components > JoomFAQs > Questions), each row in the question list displays vote badges:
- A green badge with a thumbs-up icon showing the
vote_yescount. - A red badge with a thumbs-down icon showing the
vote_nocount. - A grey badge with a comment icon showing the number of feedback comments.
If a question has no votes yet, a dash (-) is displayed instead.
This makes it easy to scan your question list and quickly spot which answers are performing well and which ones need attention.
Question Edit Screen
When you open an individual question for editing (Components > JoomFAQs > Questions > [Question]), the Details sidebar includes a "Status survey for a response" field that displays:
- The current Yes vote count (with a green thumbs-up icon).
- The current No vote count (with a red thumbs-down icon).
- A Reset poll results button (see Resetting Votes below).
Frontend Editor View
If a logged-in user has Edit permission for the component, the category and question views display an additional informational bar showing: Status survey: Yes - [count] No - [count] review: [comment count]. This is visible only to editors and administrators, not to regular visitors.
How Votes Are Stored
Votes are stored in the #__joomfaqs_votes database table. Each question has a single row in this table that acts as a running counter.
| Column | Type | Description |
|---|---|---|
question_id |
INT unsigned | The ID of the FAQ question this vote record belongs to. |
vote_yes |
INT | Running count of "Yes" (helpful) votes. |
vote_no |
INT | Running count of "No" (not helpful) votes. |
lastip |
VARCHAR(20) | Reserved for IP-based tracking (see note below). |
created |
DATETIME | Timestamp of the last vote recorded. |
Key points about vote storage:
- There is one row per question, not one row per vote. The
vote_yesandvote_nofields are incremented each time someone votes. - The first time someone votes on a question, a new row is inserted. Subsequent votes update the existing row.
- The
lastipcolumn exists in the database schema but is not currently populated by the voting logic. It is reserved for potential future use with IP-based duplicate prevention.
Duplicate Vote Prevention
The current voting mechanism uses session-based prevention on the frontend. The JavaScript voting handler (JoomFaqs.Vote in joomfaqs.js) tracks whether a vote has already been cast during the current page session using an internal voted property. Once a visitor votes on any question during a page session, the vote handler short-circuits and does not send another AJAX request for that question.
Additionally, when a "No" vote triggers the comment modal and the comment is saved, the voting form for that question is removed from the DOM entirely, preventing any further interaction.
It is worth noting that this is lightweight, client-side prevention. A determined user could vote again by refreshing the page. If you need stronger duplicate prevention, consider this a known limitation and focus on the overall trend of your vote data rather than precise counts.
Resetting Votes
You can reset the vote counts for any individual question back to zero from the admin question editor.
Steps to Reset Votes
- Go to Components > JoomFAQs > Questions.
- Click on the question whose votes you want to reset.
- In the Details sidebar on the right, locate the "Status survey for a response" field.
- Click the Reset poll results button.
- The system sends an AJAX request that deletes the vote record for that question from the database.
- A confirmation message ("The survey results have successfully cleared") appears in place of the vote counts.
- Click Save & Close to return to the question list.
What resetting does: It deletes the entire row from the #__joomfaqs_votes table for that question. Both the Yes and No counts are removed. There is no way to undo this action.
What resetting does NOT do: It does not delete any feedback comments that were submitted alongside "No" votes. Comments are stored separately in the #__joomfaqs_comments table and must be managed independently from the Comments tab in the question editor.
Tip: Consider resetting votes after you have substantially rewritten an answer. The old votes reflected the quality of the previous version and may no longer be relevant.
Feedback Comments
Feedback comments are tightly connected to the voting system. They are collected whenever a visitor votes "No" and provides a written explanation.
Viewing Comments
Comments for a specific question are visible in two places:
- Question list -- A grey badge with a comment icon shows the count.
- Question editor -- Open a question and switch to the Feedback to answer tab. All comments for that question are listed there with their submission date.
Deleting Comments
From the Feedback to answer tab in the question editor, you can delete individual comments by clicking the delete icon next to each one. A confirmation prompt appears before the comment is removed.
Comment Captcha
To protect against spam in comment submissions, JoomFAQs supports Joomla's captcha plugin system. You can configure this under Components > JoomFAQs > Options > Comments.
| Setting | Description |
|---|---|
| Captcha | Select a captcha plugin (e.g., reCAPTCHA) or choose "Do not use." |
Using Vote Data to Improve Your FAQ Content
Vote data is most valuable when you use it as a signal to prioritize content improvements. Here are some practical approaches.
Identify Underperforming Answers
Go to Components > JoomFAQs > Questions and look for questions with a high number of red (thumbs-down) badges relative to green (thumbs-up) badges. These are the answers that visitors are telling you need work.
Read the Feedback Comments
Do not just look at the numbers. Open questions with "No" votes and check the Feedback to answer tab. Visitors often explain exactly what was missing or confusing. Common patterns you might find include:
- The answer was too vague or generic.
- The answer was outdated and no longer accurate.
- The answer did not address the specific scenario the visitor had in mind.
- The answer was technically correct but hard to follow.
Track Trends Over Time
The dashboard's month-over-month comparison cards for Likes, Dislikes, and Total Votes help you understand whether your FAQ quality is improving over time. After making a round of content improvements, monitor the dashboard for the following month to see if the Like/Dislike ratio shifts in a positive direction.
Reset and Measure After Rewrites
When you substantially rewrite an answer based on feedback:
- Open the question in the editor.
- Reset the votes (see Resetting Votes).
- Optionally delete old comments that are no longer relevant.
- Save and publish the updated answer.
- Monitor the fresh vote data over the next few weeks to see if the rewrite was effective.
Prioritize High-Traffic Questions
A question with 50 "No" votes and 200 "Yes" votes (80% approval) is likely a higher priority to fix than one with 2 "No" votes and 3 "Yes" votes (60% approval), because far more visitors are affected. Use the absolute numbers alongside the ratios to make prioritization decisions.
Configuration Options Reference
The table below summarizes all settings related to the voting and feedback system.
| Setting | Location | Tab | Values | Default | Description |
|---|---|---|---|---|---|
| Poll | Category Options | Questions Options | Show / Hide | Show | Controls whether the voting form appears below answers in this category. |
| Poll | Menu Item Options | Questions Options | Show / Hide | Show | Overrides the category-level Poll setting for a specific menu item. |
| Captcha | Component Options | Comments | Plugin list | Global | Selects the captcha plugin used for comment forms (or "Do not use" to disable). |
Troubleshooting
Voting buttons do not appear
- Verify that the Poll setting is set to Show in the category options and/or the menu item options. The menu-item setting overrides the category setting.
- Make sure the JoomFAQs System Plugin (
plg_system_joomfaqs) is enabled. It handles loading jQuery, which the voting JavaScript depends on. - Check your browser console for JavaScript errors. The voting functionality relies on the
JoomFaqs.Votefunction injoomfaqs.js.
"Session expired" error when voting
This can occur if the visitor's Joomla session has timed out before they click the vote button. The voting system validates the Joomla form token with each request. If the token is stale, the vote is rejected with a session error. Increasing the session lifetime in System > Global Configuration > System > Session Lifetime can reduce how often this happens.
Vote counts do not update in the admin
Vote counts in the question list and editor are loaded directly from the database. If you just voted on the frontend and do not see the update in the admin, simply refresh the admin page. There is no real-time push mechanism.
The "Reset poll results" button does nothing
The reset function uses an AJAX request to the admin backend. Make sure you are logged in as an administrator and that your session has not expired. Check the browser console for network errors if the button appears unresponsive.