Description
Plugin details: https://wdonline.dk/wdonline-product-enquiries-for-woocommerce/
Let customers ask questions directly from WooCommerce product pages. Manage enquiries, send formatted replies and keep private customer photos in your WordPress dashboard.
Customers can request an image, ask about delivery, request a price, request more information or request support. Product rules suggest appropriate topics, and the shop can make each topic always available or disable it.
The form uses a dropdown with checkboxes so customers can select multiple topics. It captures the product and selected variation, optional name, required email and a message. A message is optional only when every selected topic is an image or price request. A zero price is treated as an actual price.
Enquiries are saved privately before the shop notification is attempted. Administrators can filter enquiries, change status, add internal notes, retry notifications and send replies directly from the enquiry dashboard. Reply history includes successful and failed mail attempts. A failed reply remains available for editing and retry. The shop can optionally close the enquiry after the mail system accepts the reply. Acceptance by WordPress mail does not guarantee delivery to an inbox.
Other features:
* New-enquiry count badge on the Product Enquiries submenu.
* Shared rich-text signature and uploaded media-library logo for customer emails.
* Default sender name and per-reply sender override, with full HTML reply history.
* All-product or category-based display with a picker of existing product categories. The picker is disabled for All products.
* Rich-text dashboard replies with colours, links, lists, alignment and configurable email background/text/font size.
* Optional private customer photo (JPEG, PNG or WebP), with a 1–5 MB size setting.
* Optional Google reCAPTCHA v2 checkbox or v3 background scoring with server-side hostname and expiry checks.
* Purchase-form and short-description placements, or shortcode placement.
* Configurable button appearance and confirmation text.
* Optional one-time image, price and stock notifications, with saved opt-ins and mail status in the overview, enquiry detail and shop notification.
* WordPress personal-data export and erasure callbacks.
* Configurable enquiry retention (180 days by default).
* Honeypot, hashed network/email cooldown, request deduplication and reply double-click protection.
The plugin supports classic WooCommerce product templates. Block-based Single Product templates are not yet verified. The shortcode can be used for manual placement.
External services
Google reCAPTCHA is optional and disabled by default. Create Google reCAPTCHA keys for the exact public hostname of this website and enter the site and secret keys in General. Choose v2 checkbox or v3 background scoring and use keys registered for the selected type. Enterprise-only keys are not supported. The saved secret is not rendered back into the settings form. A blank secret field keeps the saved value; the Remove checkbox clears it.
When enabled, Google JavaScript is loaded from https://www.google.com/recaptcha/api.js on pages with the enquiry form, including before opening the dialog. Google may receive connection/browser information, set cookies and assess the visitor. On submission, the plugin sends only the verification token and secret to https://www.google.com/recaptcha/api/siteverify. The plugin does not include the customer’s name, email, message, photo or IP in that server verification request. Google’s SDK still observes the visitor’s connection independently. The form includes a Google verification notice. Update your privacy policy and assess the consent requirements applicable to your website before enabling this external service.
Verification fails closed when keys are missing, Google is unreachable, the token is invalid/expired, the response hostname differs from home_url(), or Google reports an error or exceeded quota. In those cases the customer must verify again or contact the shop by another channel. Honeypot, request deduplication and cooldown remain active even when Google verification is disabled. No anti-spam system guarantees that all abuse will be blocked.
Google documentation: https://developers.google.com/recaptcha/docs/display
Google privacy policy: https://policies.google.com/privacy
Google terms: https://policies.google.com/terms
Support
Support WD Online: https://www.paypal.com/ncp/payment/NKERMAVC4PXML
For v3, use matching v3 site/secret keys and select a minimum score under General (default 0.5). Tokens are requested when sending and checked on the server for the expected action, domain, expiry and score. Below-threshold requests are rejected. Live Google verification and score tuning require your own keys and traffic.
Installation
- Back up your site, including the database.
- Install and activate WooCommerce.
- Upload this ZIP in Plugins > Add New > Upload Plugin and activate it.
- Open WD Online > Product Enquiries.
- Configure General, Topics, Email and Design, then test a simple and a variable product.
The plugin is independent and does not import settings or subscribers from another plugin. It does not activate, deactivate or modify another plugin.
FAQ
-
Can customers receive a back-in-stock notification?
-
Enable Offer optional stock notification under General. Customers selecting Ask about delivery time can tick Email me once when the product is in stock, if their product or selected variation is currently out of stock or on backorder. The checkbox is unchecked by default. One email is sent after a published product becomes in stock and is no longer on backorder. Merely enabling backorders does not trigger a stock notification. Standard WooCommerce stock updates and saves are supported, including variants with stock inherited from their parent. Failed emails stay pending for the next eligible stock update/save. The Email tab has a rich stock notification template using the shared logo, signature and styling. Saved consent and mail status appear in the shop notification and Enquiries. Disabling the form option prevents new opt-ins; existing subscriptions are honoured.
-
When is an automatic price notification sent?
-
Enable Offer optional price notification under General. The customer can tick a separate unchecked box after choosing Request a price, only while the product or selected variant has no price. A published product saved through WooCommerce with its first price triggers one email; zero is a price. A selected variant is monitored separately. Later price changes do not send another message after the mail system accepts the notification. Failed messages remain pending for the next product save. Direct database edits do not trigger this workflow. The Email tab includes a formatted price notification message and subject using {product_name} and {product_url}; shared styling, signature and logo apply. Disabling the form option prevents new opt-ins; existing opt-ins are honoured.
The shop notification and Enquiries overview/detail display the saved image, price and stock opt-ins and their mail outcomes. Automatic notifications cover only the corresponding product update; other questions may still require a reply. Mail-system acceptance does not guarantee inbox delivery.
-
How do I add a signature, logo and personal sender name?
-
Under Email, set Default sender name, edit Shared email signature and use Upload or choose logo to upload a public brand image or select an existing media-library image. Choose the logo width and save. The signature supports {sender_name}; this is replaced by the name entered in Reply sender name on an individual response, or by the default name for automatic image, price and stock notifications. Clear the signature and click Remove logo if you want to omit either. Removing the selected logo does not delete the media attachment.
The footer is appended automatically; do not copy it into each reply. The editable reply body is stored separately from the full submitted HTML email, so retrying a failed response does not append a second signature. Failed responses retain their sender name. Email programs can block remotely loaded brand images until the recipient enables them. The mail history records the HTML submitted to WordPress, rather than a delivery receipt.
-
What shortcode can I use?
-
[wdonline_pe_button] on a product page, or [wdonline_pe_button product_id=”123″] elsewhere. Choose Shortcode only to avoid automatic placement.
-
Can the shop answer from the dashboard?
-
Yes. Open an enquiry, write the subject and format the reply in the WordPress editor, and click Send reply. Bold, italics, headings, lists, links, text colours and alignment are supported. Background, default text colour and font size for customer emails are configured under Email. The Image notification message field also uses the formatting editor. Only safe text formatting is retained: scripts, remote images and executable links are removed. Existing plain-text replies remain readable. Replies and automatic product notifications are HTML emails; shop notifications also use formatted HTML. The customer email is taken from the saved enquiry. Tick the optional close checkbox to close the enquiry after the mail system accepts the reply. The dashboard records outgoing replies; incoming replies sent by the customer to the shop email are not imported automatically.
-
Are customer images uploaded?
-
Yes, if the owner enables Allow a customer photo under General. One JPEG, PNG or WebP photo can accompany an enquiry. Uploads default to disabled. The default maximum is 2 MB, configurable from 1 to 5 MB; hosting PHP upload/post limits can impose a lower maximum. Files are checked for genuine upload origin, extension, actual MIME type, dimensions and size. SVG is not accepted.
Photo bytes are Base64-encoded in a separate private WordPress record, outside the media library and public uploads directory. An administrator can view a private preview, open the full image in a new tab and download the original from the enquiry detail page. Every image request requires the same capability and nonce checks. The customer photo is attached to the shop notification email using WordPress’s PHPMailer mailer, including notification retries. No public image URL is created. The attachment is not sent in replies to customers or automatic image, price and stock notifications. Mail plugins that replace WordPress’s mailer must support the phpmailer_init hook to include this attachment. Photos are included in privacy export as lossless Base64 data and are removed by enquiry deletion, retention and privacy erasure. Encoding adds approximately one third to database storage, so account for photos in database backups and retention settings.
-
What has not been implemented from the broader proposal?
-
Per-product visibility overrides, a missing-data-only display scope, a live styling preview, customizable notification templates for administrators, custom form labels and product-ID filters are not included yet. Searching the overview searches the product title and enquiry message.
-
What happens to data?
-
Enquiries, emails, messages, reply history, customer photos and internal notes are stored privately in WordPress. Only administrators with manage_options can view the plugin dashboard. The email address is sent to the shop’s configured recipient via WordPress mail; automatic image, price and stock emails are sent only after the customer opts in to the corresponding notification. No telemetry is sent by the plugin.
The remote address and email are keyed-hashed for the cooldown. An additional attempt limit restricts repeated verification/upload attempts from the same network address. Raw IP addresses are not stored by the plugin. Existing WordPress hosting/mail infrastructure may maintain its own logs.
The daily task deletes up to 100 expired enquiries per run. With retention set to 0, automatic enquiry deletion is disabled. Associated image, price and stock subscriptions are removed when their enquiry expires. Privacy tools export and erase matching enquiries, outgoing replies and subscriptions. Deactivation or uninstall retains plugin settings and data; the daily task is removed. Delete unwanted records or use privacy erasure before uninstalling.
-
What if an image notification fails?
-
The address stays subscribed for a subsequent image change. The plugin does not retry image emails automatically. Shop enquiry notifications can be retried from the enquiry detail page.
-
Is the image notification about stock or delivery?
-
No. Only featured-image attachment changes trigger it. Replacing bytes in the same attachment does not trigger a notification. An image removal does not send an email.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“WDOnline Product Enquiries for WooCommerce” is open source software. The following people have contributed to this plugin.
Contributors“WDOnline Product Enquiries for WooCommerce” has been translated into 1 locale. Thank you to the translators for their contributions.
Translate “WDOnline Product Enquiries for WooCommerce” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
0.1.14
- Add the public WD Online product page as the Plugin URI and in the readme.
0.1.13
- Complete the release review and update documentation for all three automatic notifications.
- Document the tested environment and remaining live-site verification in the included review report.
0.1.12
- Offer an optional one-time back-in-stock notification for delivery questions on unavailable products.
- Support selected variants, inherited parent stock, WooCommerce stock updates and mail-failure retries.
- Display stock consent and mail outcome alongside image/price notifications; add rich email templates, privacy and retention handling.
0.1.11
- Offer an opt-in price notification when a product or selected variant has no price. Zero counts as a price.
- Show image/price opt-ins and pending, accepted or failed status in shop mail and the enquiry dashboard.
- Add formatted price notification templates and include subscriptions in privacy export, erasure and retention.
0.1.10
- Attach the private customer photo to shop enquiry notifications and retries.
- Display each selected question topic as a separate bullet in the notification email.
0.1.9
- Use the WD Online WordPress.org profile as the temporary author URL.
- Remove the development-preview notice from the dashboard and update the public description.
0.1.8
- Restrict internal enquiry/reply/photo post capabilities to administrators.
- Use the shared wdonline_admin menu root with compatibility for legacy WD Online submenus.
- Reject malformed identifiers, preserve backslashes in enquiry text, and prevent single-page pagination deprecations.
- Reviewed against WD Online plugin standards; see docs/review-2026-10-11.md for coverage and remaining checks.
0.1.7
- Show stars in the secret-key field when a key is saved, without exposing or resubmitting the saved secret.
0.1.6
- Choose reCAPTCHA v2 checkbox or v3 background scoring, with an adjustable v3 minimum score (default 0.5).
- Configurable message limit (100–10,000 characters, default 2,000), with a Unicode character counter and server validation.
- v3 obtains a fresh token on every submission and retry; server checks action, score, domain and expiry.
0.1.5
- Delete one or multiple enquiries from the overview, including private photos and reply history.
- Explain each product rule in Topics; remove the redundant rule option for information and support.
0.1.4
- Optional customer phone field, configurable under General.
- Styled HTML shop notifications with customer/product details and a backend reply link.
- Improved category checkbox and label alignment.
0.1.3
- Added a New enquiry count badge to the shared WD Online submenu.
- Added a shared rich-text signature, public brand logo selector and configurable logo width.
- Added per-reply sender names and saved the full submitted HTML email in reply history.
- Added authenticated inline customer-photo previews alongside original downloads.
- Renamed Other product question to Request support without changing saved topic keys.
- Added rich-text image-notification templates and safe HTML placeholder substitution.
- Applied the common signature, logo and appearance to replies and image notifications.
0.1.2
- Added rich-text dashboard replies and configurable HTML email appearance.
- Replaced category slugs with actual category selection, inactive for All products.
- Added optional customer photos with server-side validation and private authenticated downloads.
- Added photo privacy export, retention and deletion handling.
- Added optional Google reCAPTCHA v2 with server verification, hostname/expiry/error checks and attempt throttling.
- Added external-service disclosure and secret-key concealment.
0.1.1
- Added a checkbox dropdown for multiple question topics.
- Added dashboard replies, outgoing history, failure preservation and optional close-on-reply.
- Removed unrelated legacy-plugin settings import, subscriber aliases and automatic deactivation.
- Improved request cleanup and translation placeholder comments.
0.1.0
- First development draft with product questions, variation context and private enquiry records.
- Added topic rules, settings, notification retry, retention and privacy callbacks.















