Product Q&A

Product questions and answers for Magento 2 (Luma and Hyvä): moderation, helpful votes, email notifications and optional FAQ structured data.

  • Magento 2.4.7 – 2.4.9
  • PHP 8.2 – 8.5
  • Hyvä and Luma
  • Version 1.2.1
$159

One-off payment, with 12 months of updates.

What is included

  • 12 months of new versions and fixes; the versions released in that time stay yours
  • Install with Composer, or download a zip from your account
  • Licence for one production domain, staging and development copies included
  • 30-day money-back guarantee, refund policy

No subscription or automatic renewal. Keep using the versions included in your update period. Update and licence details

Key features

  • Questions & Answers section on product pages
  • Search, filter, sort and helpful votes
  • Moderation grid with mass actions
See all features

Composer package softaware/module-product-qa

  • Answers where shoppers decide

    Questions and answers sit on the product page, so the next shopper with the same doubt finds the answer without contacting you.

  • Nothing goes live unchecked

    New questions wait for your review. A honeypot, an hourly limit per IP address and optional reCAPTCHA keep spam out.

  • Fast on every page

    One database query per product on a cache miss, its own cache type and full page cache tags, so the product page stays cacheable.

All features

What is included

Product page

  • Tab on Luma, full-width section on Hyvä
  • Search, answered and FAQ filters, sorting
  • "Show more questions" without extra requests
  • Helpful votes, one per customer or visitor
  • "Answered by" with your store name

Questions and answers

  • Guests may ask, or signed-in customers only
  • Signed-in customers can answer questions
  • Optional auto-publishing for signed-in customers
  • Posts with web addresses always held for review
  • Honeypot, hourly IP limit, optional reCAPTCHA

Admin

  • Product Questions grid with mass actions
  • Customer Answers grid with mass moderation
  • Add Question for your own FAQ entries
  • Visibility per store view
  • Separate ACL permissions to view, edit and delete

Customers, SEO and listings

  • Emails when a question is answered
  • Staff emails for new questions and answers
  • My Questions in My Account
  • Optional FAQPage JSON-LD from store answers
  • "N answered questions" in category listings and a CMS widget

Feature tour

Everything your shoppers and your team see

01 / 06

A Questions & Answers tab with the count

Approved questions with the store answer and customer answers, FAQ questions first. Shoppers search, filter and sort in the browser without extra requests.

02 / 06

Native Hyvä section

Alpine.js and Tailwind templates for Hyvä, shown as a full-width section with the count in the heading. Picked automatically.

03 / 06

A short form, guests welcome

Name, email (never published), the question and "Email me when my question is answered". You decide whether guests may ask.

04 / 06

Readable on a phone

Search, filters and answers stack into one column on small screens.

05 / 06

All questions in one grid

Filter by status, product, author or store view, then approve, reject, set to pending, mark as FAQ or delete in bulk.

06 / 06

Answer in the rich text editor

Set the status, the store views the question appears in and the FAQ mark, write the store answer and email the customer.

Live demo

Try it before you install it

A full Magento store with the module installed, on Luma and on Hyvä. The admin demo signs you in with one click.

Compatibility

Requirements and compatibility

Compatibility of Product Q&A
Magento2.4.7 – 2.4.9
Storefront themes Luma Blank Hyvä
PHP8.2 – 8.5
Latest version 1.2.1
composer.json requires php ~8.2.0||~8.3.0||~8.4.0||~8.5.0 magento/framework ~103.0.7 softaware/module-core ^1.0 magento/module-backend * magento/module-catalog * magento/module-cms * magento/module-customer * magento/module-email * magento/module-page-cache * magento/module-store * magento/module-ui * magento/module-url-rewrite * magento/module-widget *

Installation

Up and running in minutes

After you buy, create a Composer key in your account. Then, in the root of your Magento project:

  1. 01Add the repository and your key (once per project)

    composer config repositories.softaware composer https://repo.softawarecommerce.com
    composer config --auth http-basic.repo.softawarecommerce.com PUBLIC_KEY PRIVATE_KEY
  2. 02Install the module

    composer require softaware/module-product-qa
  3. 03Enable it

    bin/magento setup:upgrade
    bin/magento setup:di:compile
    bin/magento setup:static-content:deploy
    bin/magento cache:flush

    The last three are only needed in production mode.

Prefer a zip? Every version you are entitled to can be downloaded from My modules. More about Composer access

User guide

How to set up and use Product Q&A

For version 1.2.1. The same guide comes with the module, in docs/user-guide.md.

Let shoppers ask questions on your product pages and answer them from the admin. Approved questions and answers appear in a "Questions & Answers" section on the product page, with search, helpful votes and optional FAQ structured data. This guide covers installation, every setting and day-to-day use.

Questions & Answers tab on a Luma product page
Questions & Answers tab on a Luma product page

1. Requirements

MagentoMagento Open Source or Adobe Commerce 2.4.7 to 2.4.9
PHP8.2 to 8.5
ThemesLuma, Blank and themes based on them; Hyvä 1.3 or later (tested with Hyvä 1.5)
Othersoftaware/module-core (installed automatically)
OptionalMagento's reCAPTCHA modules (Magento_ReCaptchaUi), for Google reCAPTCHA on the question form

2. Installation

Install with Composer from repo.softawarecommerce.com. Your access keys and the full set-up are described at https://softawarecommerce.com/shop/composer-access/.

composer config repositories.softaware composer https://repo.softawarecommerce.com
composer config --auth http-basic.repo.softawarecommerce.com PUBLIC_KEY PRIVATE_KEY
composer require softaware/module-product-qa
bin/magento setup:upgrade
bin/magento setup:di:compile            # production mode only
bin/magento setup:static-content:deploy # production mode only
bin/magento cache:flush

The installer adds and enables the "Softaware Product Q&A" cache type. On Hyvä, run your usual Tailwind build after installing so the module's classes are included (the module registers itself for Hyvä's Tailwind source scanning).

To update later: composer update softaware/module-product-qa, then the same bin/magento commands.

3. Quick start

  1. Go to Stores > Configuration > Softaware > Product Q&A (also under Softaware > Product Q&A > Configuration). The module is enabled by default.
  2. Check Email Notifications > Staff Email Address(es). When empty, staff emails go to the General Contact address.
  3. Open a product page on the storefront. The "Questions & Answers" section is there, with an "Ask a question" button.
  4. Ask a test question, then open Softaware > Product Q&A > Questions in the admin, open the question, write the store answer, set Status to Approved and save. The question and the answer now appear on the product page.

4. Settings

All settings are under Stores > Configuration > Softaware > Product Q&A and can be set per website and store view (the reCAPTCHA type per website). Every field shows its default in the comment and has "Use system value".

Product Q&A settings
Product Q&A settings

General

SettingWhat it does
EnabledWhen No, nothing is shown on the storefront and the question forms are closed. Default: Yes.
Questions Shown Before "Show More"Questions listed before the "Show more questions" button, 1 to 50. Default: 5.
Maximum Questions per Product PageThe newest questions (FAQ first) rendered into the page and searched in the browser, 10 to 500. Default: 100.
Show Search, Filter and SortingA search box, a filter (all, answered, FAQ) and sorting (most recent, most helpful) above the questions. Default: Yes.
Helpful Votes"Helpful" buttons on answered questions and customer answers. One vote per customer, or per visitor and IP address for guests. Default: Yes.

Questions

SettingWhat it does
Allow Guests to AskNo: guests see a sign-in link instead of the form. Default: Yes.
Publish Questions from Signed-in Customers Without ReviewGuest questions are always reviewed first. Default: No.
Show New Questions InOnly the store view the question was asked in, or all store views. Can be changed per question. Default: the store view it was asked in.
Minimum Question Length (Characters)Shorter questions are rejected. Default: 10.
Maximum Question and Answer Length (Characters)20 to 5000. Default: 1000.
Messages per IP Address per HourPer visitor, counted separately for questions and answers; 0 means no limit. Default: 5.
Google reCAPTCHA on the Question FormThe reCAPTCHA type for the question form. Uses Magento's reCAPTCHA modules and their keys (Security > Google reCAPTCHA Storefront); ignored when the modules are not installed. Default: No.

Answers

SettingWhat it does
Store Answers Signed AsShown as "Answered by ...". Default: empty, which uses the store name from General > Store Information.
Signed-in Customers Can AnswerLets signed-in customers answer other customers' questions. Default: Yes.
Publish Customer Answers Without ReviewNo: customer answers wait under Customer Answers. Default: No.

Email Notifications

SettingWhat it does
Email Store Staff About New Questions and AnswersAn email for each new question and each new customer answer, with a link to the admin. Default: Yes.
Staff Email Address(es)Separate several addresses with commas. Default: empty, which uses the General Contact address.
Staff Email TemplateThe template for staff emails.
Email Customers When Their Question Is AnsweredOnly when the customer ticked "Email me when my question is answered"; sent once for the store answer and once per published customer answer. Default: Yes.
Customer Email TemplateThe template for customer emails.
Email SenderThe store email identity the notifications are sent from. Default: General Contact.

Both templates can be copied and edited under Marketing > Communications > Email Templates.

Structured Data

SettingWhat it does
Output FAQPage JSON-LDOptional FAQPage structured data for FAQ questions with a store answer (never customer answers). Google no longer shows FAQ rich results (since 7 May 2026), so this is off by default. Leave it off if your SEO extension outputs the FAQ itself. Default: No.

Product Listings

SettingWhat it does
Show "N answered questions"A link under products in category and search listings to the product's Q&A, only for products with an answered question. Default: Yes.

5. On the storefront

The Questions & Answers section. On Luma it is a tab next to Details and Reviews, titled "Questions & Answers (3)" with the number of published questions. On Hyvä it is a full-width section below the product information with the count in the heading. Each question shows who asked it and when, the store answer ("Answered by" your store name) and the approved customer answers. Questions marked as FAQ are listed first.

HyväMobile
Hyvä product pageMobile product page

Search, filter and sort. Shoppers search the questions and answers, show all, answered or FAQ questions, sort by most recent or most helpful, and load more with "Show more questions". All of this runs in the browser over the questions in the page, so there are no extra requests. A product with more questions than "Maximum Questions per Product Page" shows a note with the total.

Helpful votes. Shoppers mark answered questions and customer answers as helpful. Each customer votes once; a guest is recognised by a cookie (sw_qa_visitor, set only when a guest votes) and their IP address for 24 hours. Duplicate votes are rejected.

Asking a question. "Ask a question" opens a form with name (shown with the question), email (not published), the question and "Email me when my question is answered". Signed-in customers get their name and email filled in. After sending, the shopper sees that the question will be published once it has been reviewed.

Ask a question form
Ask a question form

Answering a question. With "Signed-in Customers Can Answer" on, every question has an "Answer this question" link. Guests are sent to the sign-in page first.

My Questions. Signed-in customers find their questions under My Account > My Questions, with the status (waiting for review, published or not published) and the published answers.

Links to the Q&A. Add #softaware-product-qa to a product URL to open the Questions & Answers tab (Luma) or jump to the section (Hyvä), for example https://example.com/joust-duffle-bag.html#softaware-product-qa. Add #question-<id> to open one question: it is shown even when it is behind "Show more questions", highlighted and scrolled into view. A question that is not published in that store view opens the Q&A section instead. The listing badge, the widget, the customer emails and the admin "View on storefront" link use these links.

Listings and widget. Products with an answered question show "N answered questions" under the product in category and search listings, linking to the Q&A section. For CMS pages and blocks there is the widget Softaware: Latest Product Questions (Content > Widgets, or Insert Widget) with a title, the number of questions and an "Answered Questions Only" option.

6. In the admin

Product Questions

Softaware > Product Q&A > Questions lists all questions with ID, question, SKU, product, status (Pending, Approved, Rejected), answered, FAQ, pending customer answers, asked by, visible in, helpful votes and date. The asker's email is available under Columns. Filter by any of them or use the keyword search.

Product Questions grid
Product Questions grid

Mass actions: Approve, Reject, Set to Pending, Mark as FAQ, Remove FAQ Mark and Delete.

Add Question creates a question yourself, for example a common question you want to answer in advance.

Answering a question

Open a question to edit it:

  • Details: the product, when and where the question was asked, whether the customer asked for an email, and the helpful votes. The product name links to the product in Catalog > Products when your role may open products (otherwise it is plain text). View on storefront opens the product page with the question highlighted, in the store view the question was asked in, or another store view where the product is enabled and visible and the question is shown. For a question that is not published yet it opens the Q&A section. When the product is not on the storefront in any store view, the form says so instead.
  • Status: Pending, Approved or Rejected. Only approved questions appear on the storefront.
  • Product SKU, Question and Asked By (Public Name). Leave the name empty for your own questions; "Store" is used.
  • Email of the asker (never shown on the storefront).
  • Visible In: the store views the question appears in.
  • FAQ: lists the question first and, with a store answer, adds it to the FAQPage structured data when that is switched on.
  • Store Answer: rich text editor. The answer is reduced to safe HTML tags before it is shown.
  • Email the Customer: when the question is approved and has a store answer, saving sends the "question answered" email (once, and only if the customer asked for it).
  • Customer answers to this question are listed below.
Answering a question
Answering a question

Customer Answers

Softaware > Product Q&A > Customer Answers lists the answers from customers, with mass actions Approve, Reject, Set to Pending and Delete. Approving an answer emails the asker if they asked to be told.

Permissions (ACL)

Under System > Permissions > User Roles > Role Resources > Softaware > Product Q&A:

ResourceAllows
QuestionsViewing the Product Questions grid
Questions > Edit, Answer and ModerateEditing, answering, approving and rejecting questions, Add Question
Questions > DeleteDeleting questions
Customer AnswersViewing the Customer Answers grid
Customer Answers > ModerateApproving, rejecting and setting customer answers to pending
Customer Answers > DeleteDeleting customer answers
Stores > Configuration > Softaware Product Q&AThe settings

7. SEO and developers

When "Output FAQPage JSON-LD" is set to Yes, FAQ questions that are approved, visible in the store view and have a store answer are printed on the product page as FAQPage JSON-LD (<script type="application/ld+json"> at the end of the page). Customer answers are never included. The setting is off by default: this is optional structured data, and Google no longer uses it for FAQ rich results (they stopped appearing in Google Search on 7 May 2026).

SEO extensions can use Softaware\ProductQa\Api\FaqProviderInterface:

  • getFaqItems($productId, $storeId): the question and answer pairs;
  • getFaqPageData($productId, $storeId, $pageUrl): a FAQPage node without @context, for an @graph;
  • suppressStandaloneOutput(): stops this module printing its own script.

The event softaware_productqa_faq_jsonld (with transport, data, render and product) lets you change or drop the node.

8. Command line

bin/magento softaware:product-qa:seed-demo [--sku=24-MB01] [--stores=0] [--file=qa.json] [--remove]
bin/magento softaware:product-qa:email-preview --question=<id> [--answer=<id>] [--type=asker|admin] [-o file.html]
bin/magento softaware:product-qa:recount
  • seed-demo adds three answered example questions to one product (for demo stores), or removes them with --remove. --file takes a JSON list of question, author, answer and faq.
  • email-preview renders a notification email to a file or the screen without sending it.
  • recount recalculates the answer and vote counters (for example after importing data with SQL) and refreshes the caches.

9. Performance and caching

The Q&A section is part of the full page cache. On a cache miss the questions and customer answers of the product are read with one query and stored in the "Softaware Product Q&A" cache type (System > Cache Management). Publishing, changing, unpublishing or deleting a published question or answer cleans the product's cache tag (built-in cache and Varnish). New questions waiting for review do not touch the page cache, so posting the form cannot be used to flush it. Helpful votes do not clean the page cache either: the voter sees the new count at once, everyone else after the next refresh of that product page.

10. Troubleshooting

ProblemSolution
The section does not appearCheck General > Enabled for the store view, and that the product page uses a Luma-based or Hyvä theme. Flush the cache.
A question does not appear after approvalCheck Visible In on the question includes the store view you are looking at, and that the cache was refreshed.
Shoppers see "You have sent several messages in a short time"The hourly limit per IP address was reached. Behind Cloudflare, Varnish or a load balancer, make sure Magento sees the real visitor IP (web server real-IP set-up), otherwise all visitors share one address.
No emails arriveCheck Email Notifications, the sender identity and that Magento can send email. Customers only get emails when they ticked the box on the form. Use email-preview to check the content.
Hyvä styles look wrongRebuild the Hyvä theme CSS after installing or updating.
reCAPTCHA does not showMagento's reCAPTCHA modules must be installed with keys under Security > Google reCAPTCHA Storefront. On Luma, the v2 checkbox type is the most reliable choice with this form.

11. Privacy (GDPR)

  • Questions store the public name, the email address, the question and the store view. The email address is never shown on the storefront.
  • IP addresses are only stored as keyed hashes (for the hourly limit and the guest vote check).
  • Questions are deleted with their product. When a customer account is deleted, the link to the customer is removed but the name and email stay on the question; delete the question too if a customer asks to be forgotten.

12. Uninstall

bin/magento module:disable Softaware_ProductQa
composer remove softaware/module-product-qa
bin/magento setup:upgrade

The tables softaware_product_qa_question, softaware_product_qa_question_store, softaware_product_qa_answer, softaware_product_qa_question_vote and softaware_product_qa_answer_vote stay in the database until you drop them.

Changelog

Release notes

1.2.1

Latest

1.2.1 (2026-10-10)

Fixed

  • Admin edit page: the Save and Save and Continue Edit buttons had no click action of their own, so Magento also gave them a link to the current admin route's index page. Depending on timing, a click opened that page (404) instead of saving. The buttons now only save.

1.2.0

  • Question page in the admin: "View on storefront" next to the product. It opens the product page in the store view the question was asked in (or another store view where the product is enabled and visible and the question is shown) with the question opened and highlighted. When the product is not on the storefront in any store view, the page says so instead.
  • Product page links #question-<id> now highlight the question on Luma and Hyvä, and a link to a question that is not shown (waiting for review, another store view) opens the Q&A tab or section instead of doing nothing. The links also work when the fragment changes on an open page.
  • The product name on the question page links to Catalog > Products only for admin roles that may open products; other roles see the name as text instead of a link to "page not found".
  • Customer Answers grid: the question links to the question page only for roles with access to Questions.
  • Saving a question in the admin rejects an unknown status value.

1.1.3

  • "Output FAQPage JSON-LD" (Structured Data) is now off by default. Google stopped showing FAQ rich results on 7 May 2026, so the markup is optional structured data that Google no longer uses for FAQ rich results. Stores that saved the setting keep their saved value; stores that never saved it stop printing the markup after the upgrade (set it to Yes to keep it).
  • Admin comment, README and docs no longer suggest FAQ rich results.

1.1.2

  • Product listing, FAQ and user guide (docs/)

1.1.1

  • Admin polish. Product Questions and Customer Answers grids: one-line introduction, status as a coloured badge (Pending, Approved, Rejected), and an empty state with the next step instead of an empty table. The questions grid hides the asker's email by default (still available under Columns); dates are shown without seconds and keep the date on one line.
  • Question form: questions added in the admin (or imported) now say "Added on ... in the admin." instead of 'Asked ... in store view "unknown" by a guest'.
  • Settings: every field says its default, "Use system value" is available on all fields, shorter comments (FAQ structured data, reCAPTCHA), and the staff notification recipients are validated as email addresses.

1.1.0

  • Requires softaware/module-core instead of softaware/module-base. The admin menu and ACL now sit under Softaware_Core::core ("Softaware"); roles that had access keep it (migrated by module-core). After updating all SoftAware modules, softaware/module-base can be removed.

1.0.1

  • Posting a question or answer that waits for review no longer cleans the full page cache. Before, every submission (anyone can post one, guests included) flushed the product page, its category pages (listing badge) and pages with the "Latest questions" widget, which could be used to keep the cache cold. The cache is now cleaned only when published content changes.
  • Questions and answers containing a web address are always held for review, also when auto-publishing is on.

1.0.0

  • Product page "Questions & Answers" section for Luma (tab with count) and Hyvä (Alpine.js section).
  • Search, filter, sort and "show more" over the rendered questions; helpful votes (one per visitor).
  • Ask-a-question form with guest option, honeypot, per-IP hourly limit and optional Magento reCAPTCHA.
  • Moderation: questions grid with mass approve / reject / pending / FAQ / delete, edit page with rich text store answer and per-store visibility; customer answers grid with mass moderation.
  • Customer answers from signed-in customers (moderated or auto-approved).
  • Emails: staff on new questions and answers; customers when their question is answered.
  • My account "My Questions".
  • FAQPage JSON-LD for FAQ questions with a store answer; FaqProviderInterface for SEO extensions.
  • "N answered questions" on category and search listings; "Latest Product Questions" CMS widget.
  • Own cache type, full-page-cache tags, softaware-productqa customer-data section.
  • CLI: softaware:product-qa:seed-demo, softaware:product-qa:email-preview, softaware:product-qa:recount.

FAQ

Questions, answered

Something else on your mind? The developers who wrote the module answer before and after you buy.

Ask a question →

Already installed it? Open a support ticket

Does it work with Hyvä?

Yes. Hyvä templates (Alpine.js and Tailwind) are included and picked automatically; it was tested with Hyvä 1.5. The module registers itself for Tailwind scanning, so rebuild your theme CSS after installing. Luma, Blank and themes based on them use the Luma templates.

Are new questions published straight away?

No. Questions from guests always wait for your review. Questions from signed-in customers wait too, unless you switch on "Publish Questions from Signed-in Customers Without Review". Questions and answers that contain a web address are always held for review, whatever the setting.

Can guests ask questions?

Yes, by default. Set "Allow Guests to Ask" to No and guests see a sign-in link instead of the form. The email address on the form is never published; it is used for the "Email me when my question is answered" notification.

Can customers answer each other's questions?

Yes, signed-in customers can, when "Signed-in Customers Can Answer" is on (the default). Their answers are moderated in the Customer Answers grid unless you publish them without review. Customer answers are plain text; the store answer is rich text.

How is spam kept out?

The form has a hidden honeypot field and an hourly limit of messages per IP address (5 by default), and Google reCAPTCHA can be added to the question form when Magento's reCAPTCHA modules are installed. Everything a guest posts is reviewed before it appears.

Who is told about new questions?

Store staff get an email for each new question and each new customer answer, sent to the addresses you enter or to the General Contact address. The customer gets an email when the store answers their question or when a customer answer is approved, but only if they ticked "Email me when my question is answered".

What is the FAQ mark for?

Questions marked as FAQ are listed first on the product page and can be filtered. If you switch on "Output FAQPage JSON-LD" (off by default), FAQ questions that are approved, visible in the store view and have a store answer are also added to the page as FAQPage structured data (JSON-LD). Customer answers are never included.

Will FAQ structured data give me rich results in Google?

No. Google stopped showing FAQ rich results on 7 May 2026. The FAQPage markup is optional, valid schema.org structured data that Google no longer uses for FAQ rich results, so "Output FAQPage JSON-LD" is off by default. Switch it on only if you want the markup for another reason. If your SEO extension outputs the FAQ itself, leave it off, or let the extension use FaqProviderInterface.

Does it slow down the product page?

The section is part of the full page cache. On a cache miss the questions and customer answers of a product are read with one database query and kept in the "Softaware Product Q&A" cache type. Visitor data (signed in or not, earlier votes) comes from a customer-data section, so nothing private ends up in cached pages.

Can I show questions in only one store view?

Yes. Each question has a "Visible In" setting with one or more store views. New questions are shown in the store view they were asked in, or in all store views if you change "Show New Questions In".

Can customers see their own questions?

Yes, under My Account > My Questions, with the status of each question (waiting for review, published or not published) and the published answers.

Can I add questions myself?

Yes. "Add Question" in the Product Questions grid creates a question for any product SKU, for example common questions you want to answer before anyone asks.

What happens to the data when a product or a customer is deleted?

Questions are deleted with their product. When a customer account is deleted, the link to the customer is removed but the name and email stay on the question, so delete the question as well if a customer asks to be forgotten. IP addresses are only stored as keyed hashes.

Can I link straight to the questions?

Yes. Add #softaware-product-qa to the product URL to open the Questions & Answers tab (Luma) or section (Hyvä), or #question-<id> to open and highlight one question. In the admin, "View on storefront" on the question page builds this link for you.

Support

Help from the developers who wrote it

From the blog

Guides and articles