# DF Product Q&A — Product Questions & Answers for PrestaShop 8 & 9

> Overview DF Product Q&A adds a Questions & Answers block under your product pages. Visitors ask questions through a public form, you moderate them in the back office, you reply…

- Page: <https://www.datafirefly.com/en/documentation/dfproductqa/>
- Language: en
- Last updated: 2026-07-12
- Other languages: [fr](https://www.datafirefly.com/documentation/dfproductqa/index.md), [es](https://www.datafirefly.com/es/documentation/dfproductqa/index.md), [de](https://www.datafirefly.com/de/documentation/dfproductqa/index.md), [it](https://www.datafirefly.com/it/documentation/dfproductqa/index.md), [pl](https://www.datafirefly.com/pl/documentation/dfproductqa/index.md), [pt](https://www.datafirefly.com/pt/documentation/dfproductqa/index.md), [nl](https://www.datafirefly.com/nl/documentation/dfproductqa/index.md)
- Index: <https://www.datafirefly.com/en/documentation/llms.txt>

## Overview

DF Product Q&A adds a Questions & Answers block under your product pages. Visitors ask questions through a public form, you moderate them in the back office, you reply officially, and the community can contribute answers too. Everything is exposed as QAPage JSON-LD structured data so Google can display a question accordion under your search result.

The module has no external dependency: no Composer, no jQuery. CSS and JavaScript are only loaded on product pages.

## Installation

### From the back office

1. Go to **Modules > Module Manager**.
2. Click **Upload a module** and drop the `dfproductqa-1.0.0.zip` archive.
3. Click **Configure** once the installation is complete.

### Over FTP

1. Unzip the archive and upload the `dfproductqa` folder into your shop's `/modules/` directory.
2. In **Modules > Module Manager**, search for "DF Product Q&A" and click **Install**.

On installation, the module creates two dedicated tables, registers its hooks and adds a **Product Q&A** tab under the **Catalog** menu.

## Configuration

All options live on the module configuration page. A warning banner permanently shows how many questions and answers are waiting for moderation, with a direct link to the dedicated tab.

### Question moderation

- **Auto-approve new questions** — off by default. While it is off, no question appears on the storefront before you approve it.
- **Only logged-in customers can ask** — off by default. Guests can ask a question by providing a name and an e-mail address.

### Community answers

- **Allow community answers** — on by default. Visitors can reply to questions that are already approved.
- **Moderate community answers** — on by default. This setting is independent from question moderation. Merchant replies never go through moderation: they are published immediately.
- **Enable "Helpful" votes on answers** — on by default. The vote counter feeds the `upvoteCount` field in the structured data.

### Display and SEO

- **Questions shown per product** — 5 by default. Beyond that, a "Show more questions" button reveals the rest of the thread.
- **Inject QAPage structured data** — on by default.
- **Show the GDPR consent checkbox to guests** — on by default.

### E-mail notifications

- **Notify the merchant on every new question** — on by default.
- **Notification e-mail address** — leave empty to use the shop address.
- **Notify the customer when their question is answered** — on by default. The e-mail is sent when a merchant reply is published on an approved question. If you reply to a question that is still pending, the e-mail goes out when you approve it.

## Front office usage

The block appears under the product page through the `displayFooterProduct` hook. It has three areas.

### Asking a question

An "Ask a question about this product" button expands the form. For a signed-in customer, the name is pre-filled as "Firstname L." and the e-mail comes from the account. Guests are asked for a name and an e-mail address; the address is never displayed publicly. Submission happens over AJAX, with no page reload.

### Reading the answers

Each question shows its approved answers, sorted automatically: the merchant reply first, highlighted on a green background with the "Official answer" label, then community answers ranked by vote count. A "Helpful" button lets visitors vote; double voting from the same browser is blocked.

### Answering a question

When community answers are enabled, an "Answer this question" link appears under each thread. The answer goes through moderation or is published immediately depending on your setting.

## Back office moderation

The **Catalog > Product Q&A** tab lists every question with its product, author, answer count, status and date. Filtering and sorting work on every column.

### Bulk actions

Select several questions to **approve**, **reject** or **delete** them in one operation. Deleting a question also deletes all its answers.

### Detail view

The "View" button opens a question's detail page, where you get:

- the product concerned, with links to its back office page and its storefront page;
- the author and their clickable e-mail address;
- two buttons to approve or reject the question;
- a table of every answer, merchant and community alike, with status, vote count and per-answer approve, reject and delete actions;
- a merchant reply field.

### Replying as the merchant

Type your reply in the field and click **Publish the reply**. It is published immediately, signed with your shop name and marked "Official answer". If the question is still pending, a checkbox ticked by default approves it at the same time, making the whole thread visible in one move. The customer is then notified by e-mail.

## QAPage structured data

On any product page with at least one approved question, the module injects a `QAPage` JSON-LD block in the header. The structure is as follows:

- each question becomes a `Question` entity with its `name`, `text`, `answerCount`, `dateCreated` and `author`;
- the merchant reply becomes the `acceptedAnswer`, with an `Organization` author;
- community answers become `suggestedAnswer` entries, with a `Person` author;
- every answer carries its `upvoteCount`, fed by the "Helpful" votes, and a `url` pointing to its anchor on the product page.

Once you have approved your first questions, validate a product page in Google's Rich Results Test, then request reindexing from Search Console. Whether the accordion actually shows up remains Google's decision.

## Anti-spam and GDPR

### Built-in protections

- **Honeypot**: a field invisible to users sits in the form. Bots that fill in every input are silently discarded.
- **Anti-flood**: the same author cannot submit several questions back to back.
- **Moderation**: the final filter, on by default.
- **Mandatory sign-in**: the strictest option, to enable if spam persists.

### Personal data

The module collects the name and e-mail address of guest visitors. The address is never displayed publicly: it is only used to send the answer notification. The GDPR consent checkbox, shown to guests, is on by default. Questions and answers belonging to a deleted product are removed automatically.

## Technical compatibility

- **PrestaShop**: 8.0 to 9.x
- **PHP**: 7.4 to 8.3
- **Multistore**: yes, questions are scoped per shop
- **Hooks used**: `displayHeader`, `displayFooterProduct`, `actionProductDelete`
- **Languages**: FR, EN, ES, DE, IT

## Troubleshooting

### The block does not appear on the product page

Check that the module is hooked to `displayFooterProduct` in **Design > Positions**. Some custom themes do not call this hook: in that case, add the call to your theme's product template.

### Submitted questions do not show up

That is the expected behaviour: moderation is on by default. Go to **Catalog > Product Q&A** and approve the question. To publish without moderation, enable auto-approval in the configuration.

### The JSON-LD is missing from the page

The block is only injected when the page has at least one **approved** question and the matching option is enabled. Then clear the PrestaShop cache.

### The customer does not receive the answer e-mail

Check that customer notification is enabled and that the question carries an e-mail address (signed-in customers use the one on their account). The e-mail is sent once per question, when a merchant reply is published, and only if the question is approved.
