Shopproof Wordpress Plugin - Rating, Reviews, Demo & Download
Plugin Description
Shopproof helps WooCommerce shops that sell across EU borders keep track of consumer rules for Austria, Germany, France, Italy and the Netherlands, plus the rules that apply EU-wide.
What this version does:
- Adds a WooCommerce > Shopproof page in tabs (Overview, Withdrawal button, Returns, Product safety, Registration numbers, Rules). The Overview tab opens first, with a short setup checklist and one status card per feature that links to where you fix it. A small “Set up Shopproof” notice on the Plugins screen and the dashboard reminds you until setup is done, and you can hide it.
- “Why is this needed?” fold-outs on the Withdrawal button and Product safety tabs and at the guarantee notice name the law, the date it applies from and link to the official text.
- Lists the rules Shopproof tracks for each region on the Rules tab, with the version of the rules list in use.
- Ships with the rules list, so it works without contacting any server. You can download newer lists when you choose, by hand or once a day.
- Keeps the copy you have if a download fails, so the page never goes blank.
- Shows only rules that have passed our review. Rules still being checked are left out.
- Adds a withdrawal button: a page with an accessible withdrawal form (one click creates it), and a “withdraw from contract” link in the site footer, the customer account, order details and order emails.
- One-tap withdrawal: the link in order emails and on the customer’s order page is signed for that order, so the form opens with name, email, order number and date already filled in. The customer checks them and confirms.
- The order number is optional: without one, the withdrawal is matched to the customer’s latest order for that email address, and both emails say so.
- Checks where the withdrawal link appears: the Shopproof page shows your own shop pages (home, a product, shop, cart, account, withdrawal page) as shoppers see them, at desktop and phone width, with the link outlined. It checks that the link is there and visible, that nothing covers it, that its text contrast meets WCAG 2.2 AA, that nothing floats over your theme’s content, and that no second withdrawal button shows. It runs in your browser on your own pages. Nothing leaves your site; only the counts of pages that passed or need a look are saved, for the Overview tab.
- Saves each withdrawal with its date and time, sends the customer an acknowledgement by email, sends you a copy, and adds a note to the matching order. If the acknowledgement cannot be sent, the withdrawal says so with a button to send it again, and the customer’s confirmation on the page lists what they sent, to save or print.
- The withdrawal emails are WooCommerce emails: edit their subject, heading, intro and closing text under WooCommerce > Settings > Emails. The withdrawal details, date, time and reference are always included. Two optional emails tell the customer when you set a withdrawal to “Return arrived” or “Refund sent”, once each.
- Withdrawal options: a longer withdrawal period than 14 days, a contact email for withdrawals, the footer link on every page or only on shop pages, the My Account link on or off, a required order number or order date, an optional or required “Additional information” field, and product types or categories you exclude from withdrawal (for example made-to-order goods), with your own explanation.
- Choose the words on the withdrawal link and the confirm button: Automatic (the country’s legal wording, the default), another reviewed wording, or your own text, which is used only after you tick “I understand” under a warning that quotes the legal wording.
- Lets customers tick the items they send back, with each product’s photo, once they enter their order number and email address. The list comes from your own shop, shows only names, quantities and photos, and the form still works with a text field when the order is not found.
- Gives each customer a status page, linked from the acknowledgement email, that shows when the withdrawal was received, when the return arrived and when the refund was sent. You move the status on the withdrawal’s screen; a WooCommerce refund of the whole matched order sets “Refund sent” by itself.
- Lists received withdrawals under WooCommerce > Withdrawals, and includes them in the WordPress personal data export and erase tools.
- Shows a deadline clock on every withdrawal: whether it arrived inside the withdrawal window (14 days, or the longer period your shop gave when it arrived), and the date the refund is due, with a reminder above the list when a refund is due within three days or overdue. It counts from the delivery date you enter, or from the day the order was marked complete, and reads refunds from the WooCommerce order: a refund of part of the order shows as “Partly refunded, check” and keeps the reminder running. Technical help, not legal advice.
- Connects to your returns tool, for example Sendcloud, Returnless, 8returns, AfterShip or ReturnGO: add your returns portal link to the customer’s acknowledgement email, and send each withdrawal to a webhook address you choose, signed with a secret, so your returns tool or Zapier, Make or n8n can create the return.
- Shows the button label in the customer’s language for Austria, Germany, France, Italy and the Netherlands.
- Adds product safety details (EU General Product Safety Regulation): enter the manufacturer and the EU responsible person once for the shop, change them per product or for many products at once (bulk edit and CSV import), add identifiers and warnings, and show them on the product page: by default as one line near the Add to cart button that opens to the full details, or in a “Product safety” tab. Products without details show nothing, and there is no “Powered by” credit. Headings follow the page language for English, German, French, Italian and Dutch.
- Shows hazard labelling for hazardous chemicals sold online (CLP Regulation, Article 48a): tick the hazard pictograms, choose the signal word and enter the hazard and precautionary statement codes from the label. The product page shows the pictograms and the official statement texts in the shopper’s language (English, German, French, Italian or Dutch), always visible. The pictograms are served from your own site.
- Shows the official EU legal guarantee notice (Regulation (EU) 2025/1960) on product pages when you turn it on, unedited, in English, German, French, Italian or Dutch, with a text version for screen readers. The images ship with the plugin, so no outside service is contacted. Shortcode: [shopproof_guarantee_notice].
- Shows the EU durability label “GARAN” (Regulation (EU) 2025/1960) before the add to cart button on products whose producer offers a free durability guarantee of more than two years: enter the years, brand and model identifier in the product’s “Durability label” panel. The official label is shown with your values, in full or as a small strip that opens the full label. The images and fonts ship with the plugin. Shortcode: [shopproof_durability_label].
- Shows your registration numbers (WEEE, batteries, packaging, the French IDU, textiles or your own label) and how customers return old batteries and electrical devices, in English, German, French, Italian or Dutch: on product pages (all, or only products you mark as electrical equipment or with batteries), as a line in the footer, or anywhere with the [shopproof_registrations] shortcode. You enter your own numbers; Shopproof checks no registers.
- Keeps a proof log under WooCommerce > Proof log: a daily, dated record of what your withdrawal button, guarantee notice, product safety details and registration numbers showed, plus every withdrawal received. Each entry is linked to the one before by a hash, so a later change to any entry shows up. Check the chain and download the full log as CSV at any time. The log stays in your own database; no outside service is contacted.
- Works with WooCommerce order storage (HPOS) and the block cart and checkout.
- Removes its settings when you delete the plugin. Withdrawal records, the proof log, product safety details and durability label details are kept, because you may need them; add define( ‘SHOPPROOF_REMOVE_ALL_DATA’, true ); to wp-config.php before deleting to remove them too.
Shopproof gives technical help. It is not legal advice.
Everything in this plugin is free and stays free: no locked features, no trial periods and no limits on products. An optional Pro add-on, sold separately on shopproof.app, will offer maintained country rules and automation. This plugin works fully without it.
External services
Shopproof works without contacting any server. It ships with a copy of the Shopproof rules list, a JSON data file listing the EU and national consumer rules it shows (no code is downloaded or run). Because these rules change, you can choose to download newer copies of the list from the Shopproof rules service, run by Apex Point Consulting GmbH, the makers of this plugin. No account is needed.
- When: only after you ask for it under WooCommerce > Shopproof > Rule updates, either by pressing “Check for rule updates now” or by turning on “Check for rule updates automatically once a day”. Nothing is downloaded when you install or activate the plugin, and automatic updates are off until you turn them on.
- What is sent: a plain HTTPS request for the file. No shop data, customer data or personal data is sent. Like any web request, your server’s IP address is visible to the host.
- Where: https://d3jn3nfc6dj1sm.cloudfront.net/rules/v1/rules.json, the Shopproof rules service, served through Amazon CloudFront.
- Privacy policy: https://shopproof.app/privacy
- Terms: https://shopproof.app/terms
If you enter a webhook address under WooCommerce > Shopproof > Returns, your shop sends each withdrawal (customer name and email, order number, order date, items, country, language, date and time, and the withdrawal reference) to that address when it arrives. You choose the address, for example your returns tool or an automation service such as Zapier, Make or n8n; that service’s own terms and privacy policy apply, so name it in your privacy policy. Nothing is sent to Shopproof, and nothing is sent while the field is empty.
Screenshots
The Overview tab: whether setup is complete, and one status card per feature, each linking to where you fix it.
The withdrawal form on your shop, with the items of the order to tick.
Received withdrawals under WooCommerce > Withdrawals, with the deadline clock for each.
The product page: the one-line product safety block opened, with the manufacturer, product identification and warnings.
The link check shows your own shop pages as customers see them, with the withdrawal link outlined.
The proof log: a daily, hash-linked record of what your shop showed, with a CSV download.

