=== Polski for WooCommerce ===
Contributors: motylanogha
Tags: woocommerce, gpsr, omnibus, rodo, ksef
Requires at least: 6.4
Tested up to: 7.0
Stable tag: 1.24.9
Requires PHP: 8.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

WooCommerce for Polish shops: GPSR, Omnibus, GDPR, withdrawals, VAT ID, KSeF, unit prices and storefront modules.

== Description ==

<strong>Polski for WooCommerce</strong> is a free WooCommerce plugin for Polish online shops. It helps you organise GPSR product data, the Omnibus lowest-price history, GDPR consents, the right of withdrawal, VAT ID (NIP) handling, unit prices, hooks for KSeF processes, DSA reports and storefront modules.

The plugin is modular. You can enable only the features a given shop needs, for example GPSR, Omnibus, cart consents, withdrawals, unit prices, food data, a wishlist, a product comparison or AJAX search.

Polski helps you configure the technical shop processes related to the Polish and EU market. It is not legal advice and does not guarantee regulatory compliance. Your shop configuration, terms, products and obligations always have to be verified for your specific business.

= Documentation and links =

* <strong>Documentation</strong> - https://plogins.com/es/polski/docs/
* <strong>Plugin page</strong> - https://plogins.com/es/polski/
* <strong>Source code</strong> - https://github.com/wppoland/polski
* <strong>Bug reports and feature requests</strong> - https://github.com/wppoland/polski/issues
* <strong>Discussions and questions</strong> - https://github.com/wppoland/polski/discussions

= Why Polski for WooCommerce? =

* <strong>One plugin, many modules</strong> - GPSR, Omnibus, GDPR, right of withdrawal, product data and storefront modules in one place.
* <strong>Built for Polish shops</strong> - features designed for WooCommerce stores selling in Poland or to Polish customers.
* <strong>Free and open source</strong> - the core product, checkout and storefront tools are available at no cost.
* <strong>Modern code</strong> - PHP 8.1+, a React admin panel, REST API and WP-CLI support.
* <strong>WooCommerce blocks support</strong> - compatible with both the classic and block-based cart and checkout.
* <strong>HPOS compatible</strong> - supports WooCommerce High-Performance Order Storage.

= Key modules =

* <strong>GPSR product fields</strong> - manufacturer, importer, EU responsible person, product identifiers, safety warnings and instructions, including CSV import and export.
* <strong>Omnibus price history</strong> - records and displays the lowest price from the last 30 days on discounted products.
* <strong>GDPR consents and checkboxes</strong> - configurable consents at checkout, registration and reviews, with a consent log.
* <strong>Right of withdrawal and returns</strong> - requests from the customer account, e-mail confirmations and a request log.
* <strong>VAT ID (NIP) and KSeF hooks</strong> - detection of orders with a VAT ID, a KSeF flag and hooks for invoicing integrations.
* <strong>DSA reports</strong> - a point of contact, an illegal-content report form and an admin panel.
* <strong>Shop health monitor</strong> - passive monitoring of frontend errors, checkout issues and sales anomalies.
* <strong>Security incident log</strong> - an internal log of incidents, outages, vulnerabilities and follow-up actions.
* <strong>Product environmental fields</strong> - a basis for green claims, certificates and expiry dates.
* <strong>Verified purchase badge</strong> - a badge on reviews from customers who bought the product.

= Checkout, consents and returns =

* <strong>Consent checkboxes</strong> - consents at order, registration and reviews, with the option to enable only selected fields.
* <strong>Omnibus price history</strong> - automatic recording and display of the lowest price from 30 days.
* <strong>Right of withdrawal</strong> - withdrawal/return forms and requests from the customer account.
* <strong>Double e-mail confirmation</strong> - e-mail address confirmation during customer registration.
* <strong>Shop pages</strong> - link the terms, privacy policy and withdrawal content into WooCommerce notices.
* <strong>Dispute resolution</strong> - an ODR information module for the shop's information pages.
* <strong>Consent log</strong> - logging of consents with date, context, IP address and content version.

= Product data and labelling =

* <strong>Unit prices</strong> - price per kg, litre, metre, piece or a custom unit.
* <strong>Delivery time</strong> - estimated delivery time on product pages and product lists.
* <strong>Tax information</strong> - gross/net messages and the VAT rate.
* <strong>Price display</strong> - configuration of how prices are presented in the shop.
* <strong>Food data</strong> - composition, nutrition values, allergens, origin, distributor and other fields for grocery shops.

= Storefront modules =

* <strong>Wishlist</strong> - save products for later.
* <strong>Product comparison</strong> - compare products side by side.
* <strong>Waitlist</strong> - back-in-stock notifications for products.
* <strong>Quick view</strong> - preview a product without opening the product page.
* <strong>Gallery zoom</strong> - enhanced product image zoom.
* <strong>Product video</strong> - add a video on the product page.
* <strong>Product slider</strong> - a carousel of products and collections.
* <strong>Infinite scroll</strong> - automatic loading of more products.
* <strong>Product tab manager</strong> - configure the tabs on the product page.
* <strong>AJAX filters</strong> - filter products without reloading the page.
* <strong>AJAX search</strong> - live product search.
* <strong>Product badges</strong> - sale, new, featured and custom labels.
* <strong>Promotional popups</strong> - popup campaigns in the shop.

= Admin and developer tools =

* <strong>React panel</strong> - manage modules and settings.
* <strong>REST API</strong> - an API for settings, checkboxes, legal pages, withdrawals and search.
* <strong>WP-CLI</strong> - commands to manage selected features from the terminal.
* <strong>CSV import and export</strong> - bulk management of product data, including GPSR.
* <strong>Shortcodes</strong> - embed GPSR information, withdrawal forms, DSA reports and other elements.
* <strong>Database migrations</strong> - versioned and safe updates of data structures.
* <strong>Integration hooks</strong> - filters and actions for KSeF, invoicing and integrations with other plugins.
* <strong>Audit scope</strong> - DPA, DSA, KSeF readiness, environmental-claim control, verified reviews and security incidents.

= You may also like these plugins =

More free WooCommerce plugins from WPPoland:

* [Plogins Tiers](https://wordpress.org/plugins/plogins-tiers/) - quantity and volume pricing tiers with a server-rendered price table.
* [Plogins Waitlist](https://wordpress.org/plugins/plogins-waitlist/) - back-in-stock waitlist that emails shoppers the moment a product returns.
* [Sieve - Search & Filter](https://wordpress.org/plugins/sieve/) - fast AJAX product search and filtering for WooCommerce, with no jQuery.

Browse the full catalogue at https://plogins.com/es/ .

== Installation ==

= Automatic installation =

1. In the WordPress dashboard go to <strong>Plugins > Add New<strong>. 2. Search for </strong>Polski for WooCommerce<strong>. 3. Click </strong>Install</strong>, then <strong>Activate<strong>. 4. Open the new </strong>Polski</strong> menu in the admin panel.

= Manual installation =

1. Download the plugin ZIP from WordPress.org.
2. In the WordPress dashboard go to <strong>Plugins > Add New > Upload Plugin<strong>. 3. Choose the ZIP file and click </strong>Install Now<strong>. 4. Click </strong>Activate Plugin</strong>.

== Getting Started ==

1. <strong>Check the legal pages</strong>: go to <strong>Polski > Modules<strong> and make sure the legal pages module is active. In its settings choose your terms, privacy policy and withdrawal page. 2. </strong>Configure the checkboxes<strong>: open the legal checkboxes module and enable the consents your shop requires. 3. </strong>Check VAT rates<strong>: make sure WooCommerce has the correct tax rates for your shop. 4. </strong>Fill in unit prices</strong>: for products sold by weight or volume, fill in the data in the <strong>Polski<strong> tab of the product editor. 5. </strong>Enable Omnibus<strong>: the module records price history and can display the lowest price from 30 days. 6. </strong>Fill in GPSR</strong>: for physical products add the manufacturer, importer and responsible person data and safety information.

== Configuration ==

Polski works in a modular way. You can enable only the features you need:

* <strong>Product data</strong>: GPSR, unit prices, delivery time, food data.
* <strong>Checkout and consents</strong>: checkboxes, right of withdrawal, legal pages.
* <strong>Storefront</strong>: wishlist, comparison, search, filters and badges.

Active modules with settings appear in the <strong>Polski</strong> menu or have a settings link on the modules page.

== Frequently Asked Questions ==

= Is Polski for WooCommerce free? =

Sí. Polski para WooCommerce es un complemento gratuito de WooCommerce para tiendas online polacas y se distribuye como código abierto bajo GPLv2 o posterior.

= Which WooCommerce shop is Polski for? =

Polski está destinado a tiendas WooCommerce que venden en Polonia o a clientes polacos. Es especialmente útil cuando una tienda necesita módulos para GPSR, Omnibus, GDPR, VAT ID (NIP), derecho de desistimiento, KSeF y datos del producto.

= Does Polski support GPSR in WooCommerce? =

Sí. Polski añade campos de productos relacionados con GPSR, incluidos datos del fabricante, importador y persona responsable de la UE, identificadores de productos, advertencias de seguridad e instrucciones. Los datos se pueden completar en el editor de productos y de forma masiva mediante importación o exportación CSV.

= Can I show the manufacturer, importer and responsible person on the product page? =

Sí. El módulo GPSR puede almacenar y mostrar los datos del fabricante, el importador y la persona responsable de la UE en la página del producto WooCommerce. La visibilidad depende de la configuración del módulo y de los datos completados para el producto.

= Does Polski support the Omnibus Directive and the lowest price from 30 days? =

Sí. El módulo Omnibus registra el historial de precios y puede mostrar el precio más bajo de los últimos 30 días en productos con descuento. Puede ajustar la configuración de visualización en el panel del módulo.

= Does Polski add GDPR consents in WooCommerce? =

Sí. El complemento le permite añadir casillas de verificación de consentimiento configurables en pedidos, registros y revisiones, y mantener un registro de consentimiento con fecha, contexto e información de auditoría técnica.

= Does Polski add checkboxes at checkout? =

Sí. Polski puede añadir casillas de verificación para los términos, la política de privacidad, la información de retiro, el consentimiento para contenido digital, el consentimiento de marketing, las notificaciones de entrega y un recordatorio de revisión.

= Does Polski add a withdrawal or return form? =

Sí. Polski puede añadir manejo del derecho de retiro desde la cuenta del cliente, con confirmación de solicitud, un registro de solicitudes y mensajes de correo electrónico. Esto ayuda a organizar el proceso de devolución en WooCommerce.

= Does Polski support VAT ID (NIP) in WooCommerce? =

Sí. Polski incluye funciones y ganchos relacionados con el ID de IVA polaco (NIP), incluida la detección de pedidos que pueden requerir procesamiento de facturas o KSeF. La disponibilidad y el comportamiento del campo dependen de los módulos habilitados.

= Does Polski support KSeF in WooCommerce? =

Polski no es un sistema completo para enviar facturas a KSeF, pero añade mecanismos listos para integraciones: marcar pedidos por ID de IVA, una columna de estado de KSeF y enlaces para complementos de facturación e integraciones personalizadas.

= Does Polski issue invoices in WooCommerce? =

Polski proporciona datos, indicadores y enlaces útiles para la facturación y KSeF, pero no reemplaza un complemento de facturación ni un sistema de contabilidad completo. Para la facturación automática, utilice una integración de facturación dedicada.

= Does Polski work with the WooCommerce block checkout? =

Sí. Polski admite el pago clásico, así como el carrito y pago basado en bloques de WooCommerce.

= Does Polski work with HPOS in WooCommerce? =

Sí. Polski declara compatibilidad con WooCommerce HPOS, es decir, almacenamiento de pedidos de alto rendimiento/tablas de pedidos personalizados.

= Does Polski add unit prices in WooCommerce? =

Sí. El complemento le permite mostrar precios unitarios, por ejemplo, por kg, litro, metro, pieza o una unidad personalizada.

= Is Polski suitable for a WooCommerce grocery shop? =

Sí. Polski incluye módulos útiles para tiendas de comestibles, que incluyen composición, valores nutricionales, alérgenos, origen, distribuidor y campos adicionales de etiquetado de productos.

= Does Polski add a DSA report form? =

Sí. El complemento incluye herramientas DSA, que incluyen configuraciones de puntos de contacto, un código abreviado de formulario de informe de contenido ilegal, un panel de manejo de informes y notificaciones por correo electrónico.

= Does Polski add a wishlist, comparison and quick view? =

Sí. Los módulos del escaparate incluyen una lista de deseos, comparación de productos, vista rápida, notificaciones de disponibilidad nuevamente, filtros AJAX, búsqueda AJAX e insignias de productos.

= Can I enable only selected modules? =

Sí. Polski es modular, por lo que puede habilitar solo las funciones que necesita, por ejemplo, GPSR, Omnibus, GDPR, devoluciones, ID de IVA, DSA o módulos de escaparate.

= Does Polski support CSV import and export? =

Sí. Polski amplía la importación y exportación de CSV de WooCommerce con datos de productos seleccionados, incluidos campos GPSR y otra información del producto.

= Does Polski have shortcodes? =

Sí. El complemento proporciona códigos cortos para módulos seleccionados, incluida información GPSR, formularios de retiro, informes DSA, plantillas de quejas y mensajes de la tienda.

= Does Polski guarantee legal compliance? =

No. Polski provides technical modules for WooCommerce, but it is not legal advice and does not guarantee that your shop is compliant. Your shop configuration, terms and obligations always have to be verified for your specific business.

= Is Polski ready for the Cyber Resilience Act? =

Polski follows security practices relevant to CRA readiness: updates are delivered through the official WordPress.org channel, vulnerabilities can be reported under a coordinated disclosure policy, the code uses standard WordPress security mechanisms, and external services are described in this readme. This is not a declaration of legal compliance.

= Where do I report bugs or feature requests? =

For day-to-day support use the WordPress.org forum. Technical bugs and feature requests can also be reported in the GitHub repository.

= Does the plugin have a simple feedback form? =

Yes. The admin panel includes a simple feedback form that stores messages locally in WordPress. Do not enter passwords, license keys or customer personal data there.

= What happens when the plugin is deactivated and uninstalled? =

Deactivating the plugin keeps your settings and stored data. Uninstalling removes the plugin files. Plugin data is removed only when you enable the "remove data on uninstall" setting.

== External Services ==

= GUS REGON API =

When the VAT ID (NIP) lookup module is enabled, the plugin can connect to the public GUS REGON registry to fetch company data based on the VAT ID entered by the user. The connection is made only after the lookup is deliberately triggered.

* Data sent: the VAT ID (NIP).
* Service address: [https://wyszukiwarkaregon.stat.gov.pl/](https://wyszukiwarkaregon.stat.gov.pl/)
* Terms of service: [https://api.stat.gov.pl/Home/RegulaminBIR](https://api.stat.gov.pl/Home/RegulaminBIR)
* Privacy policy: [https://bip.stat.gov.pl/](https://bip.stat.gov.pl/)

= Google OAuth =

When the social login module is enabled and Google login is configured, a customer clicking the continue-with-Google button is redirected to Google for authentication. The plugin exchanges the authorization code for an access token and fetches the profile data needed to sign in or create an account.

* Data sent: the redirect address, client ID, authorization code and access token used to fetch the profile.
* Data received: the Google account ID, e-mail address and name.
* Service address: [https://accounts.google.com/](https://accounts.google.com/)
* Terms of service: [https://policies.google.com/terms](https://policies.google.com/terms)
* Privacy policy: [https://policies.google.com/privacy](https://policies.google.com/privacy)

= Facebook OAuth =

When the social login module is enabled and Facebook login is configured, a customer clicking the continue-with-Facebook button is redirected to Facebook for authentication. The plugin exchanges the authorization code for an access token and fetches the profile data needed to sign in or create an account.

* Data sent: the redirect address, application ID, authorization code and access token used to fetch the profile.
* Data received: the Facebook account ID, e-mail address and name.
* Service address: [https://www.facebook.com/](https://www.facebook.com/)
* Terms of service: [https://www.facebook.com/legal/terms](https://www.facebook.com/legal/terms)
* Privacy policy: [https://www.facebook.com/privacy/policy/](https://www.facebook.com/privacy/policy/)

= Google Tag Manager / Google Analytics =

When the DataLayer module is enabled and a GTM container ID or a GA4 measurement ID is configured, the plugin can load the Google Tag Manager or Google Analytics scripts in the shop and send ecommerce events according to the configuration.

* Data sent: page views and ecommerce event data, for example product IDs, product names, prices, cart actions, checkout events and order values, depending on the configuration.
* Service address: [https://www.googletagmanager.com/](https://www.googletagmanager.com/)
* Terms of service: [https://policies.google.com/terms](https://policies.google.com/terms)
* Privacy policy: [https://policies.google.com/privacy](https://policies.google.com/privacy)

Admin-panel feedback and deactivation-form information are stored locally in WordPress and are not sent to an external service.

== Screenshots ==

1. The module management panel with module toggles and settings.
2. GPSR product safety fields in the product editor.
3. GDPR consent checkboxes at checkout with the consent log.
4. Omnibus Directive - the lowest price from 30 days on a discounted product.
5. The right-of-withdrawal action in the customer account.
6. The DSA illegal-content report form.
7. AJAX search and product filters in the shop.
8. Wishlist, comparison and quick view on the product list.

== Changelog ==

= 1.24.9 =
* Added a dashboard overview of PRO features (polski PRO).

= 1.24.8 =
* Accessibility: the social-proof toast is now keyboard-dismissable, respects reduced motion, and meets AA contrast.
* Admin: a Polish flag is shown on the Polski row in the plugins list.
* Added a WordPress Playground blueprint so the plugin can be tried via the wp.org Live Preview.
* Translations: only the Polish translation is bundled; other locales come from the WordPress.org language packs.
* Housekeeping: Plugin Check code annotations; release package no longer bundles dev tools.

= 1.24.7 =
* Housekeeping: stop bundling machine-generated translations (Polish is kept); other languages now come from the WordPress.org language packs. Also keep build artifacts out of the released package. No functional changes.

= 1.24.6 =
* Fix: a module switched off in Polski > Modules no longer renders anything on the storefront. Previously some features left a non-working button or stray markup behind when disabled (quick view, compare, wishlist, unit price, "from" price, the Omnibus lowest-price note, the VAT and shipping notices, delivery time, manufacturer, badges, the withdrawal links, the dispute-resolution notice, and GPSR safety details).

= 1.24.5 =
* Fix: the VAT notice under the price no longer shows a doubled percent sign ("23%%" → "23%").
* Fix: the shipping-costs notice no longer runs into the VAT notice ("VATzzgl." → proper spacing), including in page builders that don't load the plugin stylesheet.
* Fix: the default Polish shipping-costs label is now "plus koszty wysyłki" (previously an untranslated German "zzgl. kosztów wysyłki").

= 1.24.4 =
* Nuevos bloques: bloques de datos de productos para temas de bloques y el editor: precio unitario, tiempo de entrega, precio más bajo (ómnibus), información fiscal, costos de envío, fabricante, instrucciones de seguridad, documentos de seguridad, fuente de alimentación, descripción de defectos, valores nutricionales, alérgenos, ingredientes, Nutri-Score, información alimentaria e información de seguridad del producto (GPSR), todos en la categoría "Polski". Cada uno muestra los datos del producto coincidente y no muestra nada fuera del contexto del producto. Esto pone el editor de bloques a la par con los widgets de Polski para Elementor.

= 1.24.3 =
* Nuevos bloques: el formulario de informe DSA, la información sobre resolución de disputas (ODR), la información sobre la exención del IVA para pequeños contribuyentes y los métodos de pago disponibles ahora están disponibles como bloques (en la categoría "Polski"), por lo que se pueden colocar en cualquier página sin recordar un código corto. Cada uno no muestra nada hasta que se configura la función correspondiente.

= 1.24.2 =
* Nuevo: todos los bloques de Polski ahora están agrupados en el editor de bloques en una categoría separada "Polski", y los metadatos de los bloques se registran desde los archivos block.json, por lo que los bloques son correctamente visibles y más fáciles de encontrar.
* Solución: los bloques de escaparate (búsqueda AJAX, filtros AJAX y control deslizante de producto) no se registraban en las páginas instaladas. Ahora se registran correctamente y aparecen en el editor.

= 1.24.1 =
* Solución: la galería y la caja de luz de zoom podían permanecer en la pantalla como una superposición oscura si el tema forzaba su propio valor de visualización. El estado cerrado ahora siempre está oculto.
* Endurecimiento: las superposiciones de ventana emergente y vista rápida también fuerzan el estado oculto, por lo que un tema no debe mantener una superposición cerrada en la pantalla.

= 1.24.0 =
* Nuevo: soporte completo para el pago en bloque de WooCommerce. Las casillas de verificación de consentimiento, el consentimiento de contenido digital y los campos de pago personalizado se muestran, validan y guardan tanto en el pago en bloque como en el pago clásico.
* Nuevo: la información del producto, incluido el precio más bajo a partir de 30 días, el precio unitario y el tiempo de entrega, aparece en el bloque del carrito y en el checkout.
* Seguridad: manejo reforzado del límite de tarifas en la ruta de retiro de invitados y anonimización mejorada de la dirección IPv6 en el registro de consentimiento.
* Solución: la desinstalación elimina todas las tablas de complementos, las migraciones de bases de datos se ejecutan en el orden correcto y la ventana de precio más bajo de Omnibus ya no colapsa al precio actual durante un período vacío.

= 1.23.2 =
* Mejora: el asistente de configuración ahora es un proceso guiado de varios pasos: empresa, legal, impuestos y OSS, pago, finalización. Recopila datos de la empresa, habilita los módulos legales necesarios y ayuda a configurar los impuestos y el pago. Se pueden omitir pasos opcionales y finalizar no desactiva los módulos que ya utiliza.

= 1.23.1 =
* Traducciones: completó las traducciones incluidas para alemán, checo, eslovaco, ucraniano, lituano, bielorruso y chino simplificado, incluido el texto del nuevo asistente de configuración y la búsqueda y clasificación del módulo.

= 1.23.0 =
* Nuevo: el asistente de configuración. Una nueva tarjeta sugiere escenarios ya preparados, como una base legal polaca, alimentos y abarrotes, productos digitales, B2B y mayoristas, moda y crecimiento de la conversión. El asistente solo habilita módulos, no deshabilita las configuraciones existentes.

= 1.22.7 =
* Solución: el ícono del menú de administración de Polski ya no se mueve al pasar el mouse y en el estado activo.

= 1.22.6 =
* Nuevo: la pantalla de módulos ahora tiene búsqueda instantánea por nombre y descripción y clasificación: agrupados, alfabéticos o habilitados primero. Sin recargar la página.

= 1.22.5 =
* Solución: se eliminó un error fatal TypeError que podía ocurrir en las consultas de pedidos, incluso en la pantalla de pedidos de WooCommerce, cuando el asistente de consulta de retiro recibía un objeto de paginación en lugar de una matriz.

= 1.22.4 =
* Nuevo: el módulo numérico BDO. Ingrese un número BDO y muéstrelo con el código corto [polski_bdo] o el bloque de número BDO, por ejemplo en el pie de página. El bloque de identificación de la empresa también puede incluir el número BDO.

= 1.22.3 =
* Administrador: fusionó cinco pantallas de configuración separadas en una pantalla con pestañas y movió los retiros, el registro de consentimiento, los incidentes de CRA, SBOM, la plantilla de quejas y los documentos de capacitación de GDPR a un centro de informes y herramientas.
* Administrador: divida la lista de módulos en grupos y añade información sobre herramientas a cada módulo. Los enlaces de acción aparecen atenuados cuando un módulo está deshabilitado.
* Solución: el ícono del menú Polski ahora está centrado con respecto a su etiqueta.
* Traducciones: actualizó y recopiló todos los catálogos de idiomas incluidos después de los cambios de configuración y menú.
* Documentación: se actualizó la documentación y los enlaces a las páginas de complementos en logins.com.

Las versiones anteriores están disponibles en [changelog.txt](https://plugins.svn.wordpress.org/polski/trunk/changelog.txt).

== Upgrade Notice ==

= 1.20.1 =
Corrige la carga del script de la pantalla de administración en algunas configuraciones y actualiza las traducciones incluidas.

= 1.6.3 =
Plugin Check tidy-up: se agregaron justificaciones para consultas en tablas personalizadas. Sin cambios funcionales.

= 1.6.2 =
Endurecimiento después de la revisión de WordPress.org: manejo de entrada más seguro, una descripción más amplia de los servicios externos y redacción mejorada en el archivo Léame.
