Descripción
Desde el 19 de junio de 2026, la Directiva de la UE 2023/2673 obliga a todos los comerciantes online de la Unión Europea a ofrecer una función de desistimiento digital que sea, como mínimo, tan fácil de usar como el propio proceso de compra. La mayoría de los plugins del directorio se limitan a «un botón». Este incluye el conjunto de herramientas completo que toda tienda de la UE necesita para cumplir con la normativa, además de algunas cosas que otros plugins no ofrecen ni siquiera pagando.
Solo este plugin del directorio ofrece, completamente y de forma gratuita
- Función de confirmación en dos pasos (art. 11 bis, apartado 3) (la norma básica a escala de la UE en materia del derecho de desistimiento en línea). El formulario público lleva a una pantalla de revisión con un resumen de solo lectura y un botón específico «Confirmar desistimiento» La solicitud solo se registra cuando se pulsa ese botón, lo que evita el ejercicio involuntario del derecho. Se almacena en el servidor entre los dos pasos en un token de un solo uso, por lo que funciona incluso sin JavaScript.
- Acuse de recibo en soporte duradero (art. 11 bis, apartado 4): El correo electrónico de confirmación reproduce el contenido completo de la declaración (nombre, pedido, fecha del pedido, alcance, productos afectados) y la fecha y hora exactas de envío, y lleva un hash de recibo SHA-256 verificable como prueba a prueba de manipulaciones, que puede volver a calcularse a partir de los campos almacenados si surge una disputa.
- Formulario modelo de desistimiento del anexo I.B (Directiva 2011/83/UE) generado automáticamente a partir de los datos de tu tienda, que se muestra como un bloque plegable debajo del formulario público, con una vista imprimible en la misma URL. Cumple con la obligación de información precontractual del artículo 6, apartado 1, letra h).
- Casillas de verificación de doble consentimiento en la página de finalización de compra de WooCommerce para los dos consentimientos, la directiva prevé aplicar excepciones específicas:
- Consentimiento obligatorio para los contenidos digitales (art. 16, letra m)) — Bloquea el paso de realizar el pedido hasta que se acepte.
- Consentimiento opcional para los servicios iniciados dentro del plazo de 14 días (art. 14, apartado 4, letra a) — Permite la facturación prorrateada si el cliente desiste posteriormente.
Cada consentimiento queda registrado en el pedido con el texto exacto mostrado, el estado de aceptación o rechazo, la marca temporal, la dirección IP y el agente de usuario como prueba duradera en caso de disputa.
- Un único menú desplegable «Estado de desistimiento» por producto y por categoría con cuatro opciones específicas (estándar, contenidos digitales, servicio iniciado anticipadamente, otras excepciones del artículo 16). Gestiona tanto el indicador de exclusión del artículo 16 como el consentimiento correspondiente al finalizar la compra en un único lugar, con herencia completa de las subcategorías.
- Aviso público configurable sobre productos excluidos, que aparece entre el precio y el botón «Añadir al carrito», con título y cuerpo independientes para los contenidos digitales y otras excepciones del artículo 16.
- Exclusiones del artículo 16 con herencia de categorías — Otros plugins similares lo ofrecen solo en su versión Pro de pago, pero aquí es gratis.
- Integración nativa RGPD: texto de política de privacidad sugerido + exportador de datos personales + herramienta de borrado, todo ello vinculado al correo electrónico del cliente. No es necesario instalar ningún otro plugin RGPD.
- Modo independiente: El formulario, el shortcode, el registro de solicitudes, los avisos por correo electrónico, el hash SHA-256 del recibo, el modelo del anexo I.B y la integración con el RGPD funcionan sin WooCommerce. El plugin siempre está en su propio menú de primer nivel «Desistimientos» (con un submenú «Ajustes»), con o sin WooCommerce. La ruta es la misma en todas las instalaciones.
Elementos de cara al público
- Página de desistimiento pública creada automáticamente al activarlo, con una plantilla neutra y preparada para traducir, y el formulario incrustado mediante un shortcode (con un aviso legal que indica «consultar con un asesor jurídico»).
- Shortcode
[ayudawp_withdrawal_form]para incrustar el formulario en cualquier parte del sitio. - Shortcode
[ayudawp_withdrawal_link]para crear un enlace permanente a la página de desistimiento desde cualquier área de widgets, pie de página o sección de la plantilla. Ayuda a cumplir el requisito de «Identificación clara» del artículo 11 bis de la Directiva 2023/2673 sin imponer un diseño específico para el pie de página. - El shortcode
[ayudawp_withdrawal_excluded_notice]sirve para insertar el aviso de productos excluidos en los maquetadores de páginas (Divi, Elementor, Bricks, ShopLentor) que generan su propia plantilla de producto y omiten los ganchos estándar de WooCommerce. - Formulario semántico HTML5 con validación HTML5, señuelo antispam, salida con caracteres de escape, entradas sanitizadas y nonces CSRF.
- Casilla de verificación para aceptar la política de privacidad antes de enviar el formulario, con enlace a la página de política de privacidad configurada en WordPress.
- Los enlaces en portada y administración generados por el plugin incluyen
rel=«noopener nofollow»para mantener la autoridad de los enlaces del sitio.
Elementos específicos de WooCommerce (se activan automáticamente al detectar WooCommerce)
- Enlace «Mi cuenta Derecho de desistimiento», con un botón «Desistir» específico para cada pedido que se muestra siempre que el pedido se encuentre en un estado que permita el desistimiento, y que enlaza directamente con el formulario con los datos del pedido precargados.
- Inserción de un aviso de desistimiento en los correos electrónicos transaccionales (procesando, completado, factura del cliente) con un enlace directo al formulario, que ya contiene el número de pedido. Se pueden configurar los estados de pedido elegibles; los correos electrónicos del administrador nunca reciben el aviso.
- Verificación automática de la relación pedido/correo electrónico cuando WooCommerce está activo: la solicitud se compara con un pedido real y se filtra según los estados elegibles configurados. El plazo de 14 días se muestra como una indicación para el administrador, no como un rechazo automático (el plazo comienza legalmente a partir de la entrega, que es lo que verifica la tienda).
- Fecha límite de aviso configurable: elige entre la fecha del pedido o la fecha de completado de WooCommerce como referencia, además de días de gracia opcionales, para el indicador de fecha límite que se muestra al administrador; todo ello desde la interfaz de ajustes, sin necesidad de código.
- Compatibilidad con números de pedido para Sequential Order Numbers (versiones gratuita y Pro) y Custom Order Numbers for WooCommerce (tanto Tyche como WPFactory) de serie, además de un filtro para añadir cualquier otro plugin de numeración o sistema de resolución.
- Columna «Desistir» en la pantalla de pedidos de WooCommerce (versión clásica y HPOS) mostrando el estado de cualquier solicitud asociada, que se puede activar o desactivar desde «Opciones de pantalla».
- Notas privadas del pedido añadidas en cada fase del ciclo de vida (solicitud recibida, aceptada, rechazada, completada), incluyendo cualquier comentario del administrador.
- Compatible con HPOS desde el primer día, declarado mediante
FeaturesUtil::declare_compatibility().
Herramientas de administración
- Registro completo de solicitudes como tipo de contenido personalizado privado, con ciclo de vida de estado (pendiente aceptada rechazada completada), datos del cliente, alcance (total / parcial), IP, agente de usuario y marca temporal UTC del envío para garantizar la trazabilidad legal.
- Exportación a CSV del registro de solicitudes para auditorías contables y de protección del consumidor: una acción por lotes «Exportar a CSV» en el listado, además de una exportación filtrada por estado y rango de fechas en Desistimientos Exportar desistimientos. Las columnas incluyen marcas temporales de envío y resolución, alcance, estado, indicador de acuse de recibo, hash del recibo y elementos excluidos, con celdas protegidas contra la inyección de CSV o fórmulas.
- Trazabilidad de auditoría por cada solicitud:: marca temporal de la resolución registrada en cada cambio de estado y un indicador que señala si el correo electrónico de confirmación se ha entregado correctamente (con su marca temporal), y ambos datos se muestran en los detalles de la solicitud y en el archivo CSV como prueba fehaciente.
- Acciones por lotes para marcar varias solicitudes como aceptadas, rechazadas o completadas a la vez, con aviso por correo electrónico al producirse el cambio.
- Caja meta de estado con comentario obligatorio al rechazar, y comentario opcional al completar. El comentario se reenvía al correo electrónico del cliente.
- Correo electrónico de acuse de recibo al cliente tras la confirmación: el recibo en soporte duradero previsto en el artículo 11 bis, apartado 4, con el contenido completo de la declaración, la fecha y la hora de presentación y el hash SHA-256 como prueba, además de un correo electrónico de seguimiento cada vez que se produzca un cambio de estado.
- Correo electrónico de aviso al administrador de la tienda con el campo «Responder a» configurado para el cliente, sanitizado contra la inyección de cabeceras.
- Los consentimientos de pago registrados aparecen en la caja meta de detalles de la solicitud: texto exacto, estado (aceptado/rechazado), marca temporal, IP, agente de usuario, como prueba duradera archivada.
- Menú de administración consistente: Menú siempre de primer nivel «Desistimientos» con. un submenú «Ajustes», independientemente de si WooCommerce está activo. Misma ruta en todas las instalaciones.
- Bloque de descargo de responsabilidad legal en la página de ajustes, en el que se deja claro que el plugin ofrece herramientas técnicas opcionales, pero no garantiza cumplimiento legal.
- Indicadores de «Obligatorio», «Recomendado» y «Opcional» en cada descripción de los ajustes, para que el comerciante pueda analizar el formulario rápidamente.
Creado para uso real
- Carga condicional de recursos: El CSS solo se carga en la página de desistimiento, en las páginas de productos individuales que muestran el aviso de exclusión y en las pantallas de administración del plugin.
- Listo para traducir, incluye la traducción a es_ES, cumple con los estándares de programación de WordPress, salidas totalmente escapada y entradas sanitizadas, comprobaciones de permisos y nonces en cada acción de administración.
- 11 filtros documentados y 4 acciones para que los desarrolladores y las agencias puedan ampliar el plugin sin necesidad de crear una bifurcación.
- PHP 7.4+, WordPress 6.0+, WooCommerce 7.0+ (opcional).
¿Por qué este plugin?
La directiva de la UE es aplicable para todos los estados miembros desde el 19 de junio de 2026, por lo que el directorio de WordPress.org se está llenando de plugins de «botón de desactivación». Este destaca por motivos evidentes:
- Totalmente gratuito, sin planes de pago. Sin extensiones premium, sin características bloqueadas que requieran compras adicionales, sin versión «Pro» pendiente. Todo lo que se describe en esta página es lo que obtienes al instalarlo.
- Función integrada de confirmar desistimiento en dos pasos, conforme a los requisitos mínimos de la UE establecidos en el artículo 11 bis, apartado 3: el formulario público muestra una pantalla de revisión de solo lectura y registra la solicitud únicamente tras una confirmación explícita, íntegramente desde el servidor y sin necesidad de JavaScript, mientras que muchos plugins de «solo botón» registran la solicitud con el primer clic.
- Único plugin del directorio que genera un hash SHA-256 como prueba en un soporte duradero por cada solicitud de desistimiento, recuperable a partir de los campos almacenados en caso de que surja una disputa posteriormente.
- Único plugin del directorio que proporciona el formulario modelo de desistimiento del Anexo I.B, generado automáticamente a partir de los datos de la tienda, con una vista imprimible, cumpliendo así con la obligación de información prevista en el artículo 6, apartado 1, letra h), que la nueva directiva no reemplaza.
- Único plugin del directorio que inserta las dos casillas de consentimiento (art. 16, letra m), sobre contenidos digitales, y art. 14, apartado 4, letra a), servicios iniciados anticipadamente) en la página de finalización de la compra de WooCommerce, con una prueba duradera que se conserva en el pedido.
- Único plugin del directorio que incluye las exclusiones de productos y categorías Artículo 16 con herencia completa de subcategorías. Plugins similares solo ofrecen en su versión Pro de pago.
- Único plugin del directorio que se integra de forma nativa con las herramientas RGPD de WordPress (texto de privacidad + exportado y borrado de datos personales). No es necesario instalar ningún otro plugin para RGPD.
- Independiente o con WooCommerce. Funciona sin WooCommerce como herramienta independiente (formulario, shortcode, registro, correos electrónicos, SHA-256, RGPD, anexo I.B) y activa automáticamente las características específicas para tiendas cuando detecta WooCommerce.
- Compatiblepor defecto con Sequential Order Numbers (versiones gratuita y Pro) y Custom Order Numbers for WooCommerce (Tyche y WPFactory), con un filtro para cualquier otro esquema de numeración.
- Configurable desde la interfaz de usuario de ajustes, sin necesidad de escribir código: base del plazo (fecha del pedido frente a fecha de finalización) y días de gracia además de un modo opcional de plazo estricto, estados de pedido admisibles, página de cancelación, correo electrónico de aviso (ahora admite varios destinatarios), remitente del correo electrónico y textos editables de los correos de estado, texto de consentimiento por tipo, texto de aviso de exclusión por tipo, introducción del formulario editable, auto-declaración opcional del consumidor B2B, dirección, teléfono y correo electrónico del vendedor según el anexo I.B, y qué perfiles pueden gestionar las solicitudes.
- Ideal para desarrolladores: 11 filtros documentados + 4 acciones para que las agencias puedan ampliarlo sin necesidad de crear una bifurcación.
- Mantenido por un formador español de WordPress con más de 20 años de experiencia en la plataforma: Incluye la traducción a es_ES, respuestas rápidas en el foro de soporte de WordPress.org y una hoja de ruta activa con mejoras gratuitas (widget clásico, bloque de Gutenberg, widget para el escritorio, estado de pedido personalizado de WooCommerce y mucho más, todo gratis).
Hoja de ruta
Planificado para las próximas versiones gratuitas:
- Compatibilidad del bloque de finalizar compra de WooCommerce con las casillas de consentimiento del art. 16, letra m), y del art. 14, apartado 4, letra a), usando
woocommerce_register_additional_checkout_field()para que los consentimientos funcionen en las tiendas que ya hayan migrado del shortcode clásico[woocommerce_checkout]al bloque. - Widget clásico para mostrar el enlace de desistimiento en temas con áreas de widgets.
- Bloque de Gutenberg para el enlace de desistimiento, totalmente compatible con los temas de bloques (alineación, color, tipografía).
- Widget de escritorio con contadores, solicitudes pendientes y estadísticas básicas mensuales.
- Estado de pedido personalizado de WooCommerce «Solicitud de desistimiento» con transición automática al aceptarse.
- Indicadores de urgencia en la lista de solicitudes (días restantes, vencidos).
- Descarga en PDF de la solicitud con hash SHA-256 de la recepción impreso en ella, utilizando la misma infraestructura de impresión independiente que la vista del anexo I.B.
- Token firmado en el enlace del correo electrónico para que los clientes invitados puedan consultar el estado sin necesidad de iniciar sesión.
- Límite de frecuencia en el formulario público para evitar abusos.
- Campo IBAN opcional para agilizar los reembolsos manuales.
- Plantillas de correo electrónico en HTML que hereden el tema de los correos electrónicos de WooCommerce.
- Modo de visualización emergente opcional para el shortcode.
- Registro de auditoría visible en la pantalla de detalles de cada solicitud (cambios de estado, comentarios del administrador, marcas temporales de envío de correos electrónicos).
- Inserción automática opcional del enlace de desistimiento en
wp_footer.
Privacidad
Este plugin almacena los siguientes datos personales para cada solicitud de devolución, con el único fin de cumplir con los requisitos legales de trazabilidad en materia de derechos del consumidor y permitir que la tienda gestione la solicitud:
- Nombre y dirección de correo electrónico del cliente (datos necesarios para ponernos en contacto con el consumidor en relación con la solicitud).
- Referencia y fecha del pedido (datos necesarios para validar la solicitud con respecto a la compra).
- Dirección IP y cadena User-Agent (necesarias para acreditar cuándo y cómo se envió la solicitud, según el requisito de «medio duradero» de la directiva).
- Marca temporal del envío (UTC) y hash SHA-256 de la recepción (necesario para volver a calcular y verificar la integridad del envío original en caso de disputa).
Los datos se almacenan como una entrada de tipo de contenido personalizado privado (ayudawp_withdrawal) al que solo tienen acceso los administradores. El plugin no envía ningún dato a servicios de terceros; toda la comunicación se realiza entre la tienda y el cliente a través de los correos electrónicos estándar de WordPress.
Deberías añadir una sección a la política de privacidad de tu sitio web en la que se describa este almacenamiento. El plugin proporciona un texto sugerido para la política de privacidad que puedes pegar desde «Ajustes Privacidad Guía de la política». Los datos de desistimiento también se muestran en las pantallas nativas de WordPress, en «Herramientas Exportar datos personales» y «Herramientas Borrar datos personales» (filtrados por el correo electrónico del cliente).
Soporte
¿Necesitas soporte privado o un desarrollo personalizado?
¿Necesitas ayuda individualizada, resolución de problemas prioritaria o una funcionalidad, integración o adaptaciones personalizadas creadas específicamente para tu sitio? Ofrezco soporte privado y desarrollos personalizados. Solo tienes que contactarme y decirme qué necesitas.
¿Necesitas ayuda o tienes sugerencias?
¿Te gusta el plugin? ¡Déjanos un comentario de 5 estrellas y así ayudas a que lo conozcan otros!
Acerca de AyudaWP.com
Somos especialistas en plugins de optimización de seguridad, SEO, IA y rendimiento para WordPress. Creamos herramientas que solucionan problemas reales a los propietarios de sitios WordPress manteniendo los más altos estándares de programación y requisitos de accesibilidad.
Capturas







→ Categorías».» class=»wp-image-9000008″ srcset=»https://i0.wp.com/ps.w.org/eu-withdrawal-compliance/assets/screenshot-8-es.jpg?rev=3534419&w=300 300w, https://i0.wp.com/ps.w.org/eu-withdrawal-compliance/assets/screenshot-8-es.jpg?rev=3534419&w=600 600w, https://i0.wp.com/ps.w.org/eu-withdrawal-compliance/assets/screenshot-8-es.jpg?rev=3534419&w=900 900w» sizes=»(max-width: 599px) 50vw, 33vw» width=»1920″ height=»1227″ loading=»eager» fetchpriority=»high» decoding=»async»/>



Instalación
- Sube la carpeta del plugin al directorio
/wp-content/plugins/ - Activa el plugin desde el menú Plugins de WordPress.
- El plugin crea automáticamente una página llamada «Derecho de desistimiento» con una plantilla legal de ejemplo. Puedes revisarla y editarla desde «Páginas».
- Ve a «Desistimientos Ajustes» para configurar la dirección de correo electrónico de aviso y la página que aloja el formulario.
- Añade la URL de la página de desistimiento al pie de página o a la sección de enlaces legales, para que sea visible desde cualquier página de tu sitio web.
FAQ
-
¿El formulario verificará el plazo de 14 días?
-
No rechaza automáticamente las solicitudes basándose en ello. El plazo de desistimiento de 14 días comienza legalmente a partir del momento en que se entregan los productos (o, en el caso de los contenidos digitales, desde el inicio de la descarga), una fecha que la tienda no puede detectar automáticamente. Por lo tanto, rechazar una solicitud basándose en la fecha del pedido o de finalización supondría el riesgo de perder clientes que aún se encuentran dentro del plazo legal. En su lugar, el plugin marca las solicitudes que parecen haber superado el plazo aproximado en el correo electrónico de aviso al administrador y te permite verificar la fecha real de entrega (por ejemplo, a través del seguimiento del transportista) y tomar una decisión. La disponibilidad para el formulario, el botón «Mi cuenta» y el aviso por correo electrónico viene determinada por los estados de pedido configurados. Puedes seguir ajustando el cálculo del aviso (fecha del pedido frente a fecha de finalización, más días de gracia) en «Desistimientos Ajustes», y el filtro
ayudawp_euw_grace_dayssigue funcionando, mientras que el filtroayudawp_euw_skip_deadline_checkya no tiene ningún efecto porque ya no hay un plazo límite que saltarse. Si el inicio de la entrega en tu tienda es fiable (servicios y contenidos digitales, en los que el plazo comienza a partir de la fecha del contrato, o recogida en tienda y transportistas predecibles), puedes cambiar el ajuste «Cumplimiento de plazos» de «Informativo» a «Estricto», lo que oculta el botón y bloquea nuevas solicitudes una vez que haya transcurrido el plazo más los días de gracia. «Informativo» sigue siendo la opción predeterminada y la más segura para productos con entrega impredecible. -
¿Cómo puedo marcar los productos que están excluidos del derecho de desistimiento (Artículo 16)?
-
El plugin utiliza un único menú desplegable Estado de desistimiento configurado por categoría y por producto.
- Por categoría: Ve a Productos Categorías, edita la categoría y selecciona un «Estado de desistimiento», por ejemplo, Otras excepciones del artículo 16 para productos perecederos o hechos a medida, o Contenidos digitales (art. 16, letra m)) para contenido digital precintado. Todos los productos de esa categoría (y sus subcategorías) heredarán el estado automáticamente.
- Por producto: Edita el producto, desplázate hasta la pestaña «General» y selecciona allí el «Estado de deistimiento». Por defecto está configurado en — Heredar de la categoría; selecciona cualquier otra opción (incluida Estándar) para ignorar la herencia solo para ese producto.
Los cuatro estados posibles son:
- Estándar —El desistimiento se aplica de forma habitual (por defecto).
- Contentos digitales (art. 16, letra m)) — El producto queda excluido del derecho de desistimiento, y en la página de finalización de la compra de WooCommerce aparece una casilla de consentimiento obligatoria para cualquier carrito que contenga dicho producto.
- El servicio se inició anticipadamente (art. 14, apartado 4, letra a)) — El derecho de desistimiento sigue siendo aplicable, y en la página de finalización de la compra aparece una casilla de consentimiento opcional para que el comerciante pueda cobrar un importe prorrateado si el cliente desiste después de que el servicio haya comenzado.
- Otras excepciones del Artículo 16: el producto está excluido (productos perecederos, hechos a medida, con precinto de higiene, soportes de audio, vídeo o software precintados que se hayan abierto tras la entrega, etc.), no es necesario el consentimiento al finalizar la compra.
Cuando se recibe una solicitud de desistimiento que afecta a un pedido que contiene artículos excluidos, el plugin lo indica en el correo electrónico de aviso al administrador y en la pantalla de detalles de la solicitud. La solicitud nunca se rechaza automáticamente, ya que un desistimiento parcial de los artículos no excluidos del mismo pedido puede seguir siendo válido. El administrador revisa la solicitud y toma una decisión.
Si el «Aviso de productos excluidos» está activado (por defecto: sí), también aparecerá un aviso configurable en la página del producto individual, entre el precio y el botón «Añadir al carrito», para que el consumidor lo lea antes de realizar la compra.
Actualización desde versiones anteriores: Cualquier categoría que antes estuviera en la lista del selector «Categorías excluidas» (ya retirado) se migra automáticamente al nuevo menú desplegable por categoría (con el estado Otras excepciones del artículo 16) en el siguiente acceso a la administración. No se pierde ninguna configuración.
-
El aviso de producto excluido no aparece en mi maquetador de páginas (Divi, Elementor, Bricks…), ¿qué puedo hacer?
-
Los maquetadores de páginas como Divi, Elementor, Bricks o ShopLentor generan su propia plantilla de producto individual y no utilizan el gancho estándar de WooCommerce (
woocommerce_single_product_summary), donde el plugin inserta el aviso de producto excluido, por lo que este no aparece automáticamente. Inserta el shortcode[ayudawp_withdrawal_excluded_notice]en el diseño de tu producto (la mayoría de los maqueradores cuentan con un elemento «Shortcode») y el aviso se mostrará para el producto actual siempre que dicho producto esté marcado como excluido. Si no se especifican atributos se aplica al producto que se está viendo (pasaid=«123»para seleccionar un producto específico). -
¿Cómo funcionan las casillas de consentimiento en la página de finalización de la compra (art. 16, letra m), y art. 14, apartado 4, letra a))?
-
El plugin puede insertar dos casillas de consentimiento en la página de finalización de la compra de WooCommerce cuando el carrito contiene productos marcados para ello:
- Tipo A (obligatorio, art. 16, letra m)): Contenidos digitales. El cliente debe aceptarlo para completar el pedido; si no se registra la aceptación el cliente conserva el derecho de desistimiento de 14 días incluso después de haber accedido al contenido.
- Tipo B (opcional, art. 14, apartado 4, letra a)): Servicios iniciados dentro del plazo de 14 días. Si se acepta, el comerciante podrá cobrar un importe prorrateado cuando el cliente desista una vez iniciado el servicio. Sin ello, un desistimiento anticipado obliga a un reembolso íntegro.
Cada indicador se configura por producto (pestaña «General») o por categoría (pantalla «Editar categoría»), con herencia completa de las subcategorías, con la misma jerarquía que utiliza el módulo de exclusiones del artículo 16. El texto exacto que se muestra al cliente, junto con el estado de aceptación o rechazo, la marca temporal, la dirección IP y el agente de usuario, se registran en el pedido, para que el comerciante tenga una prueba duradera en caso de que el cliente impugne posteriormente la solicitud. La caja meta de cada solicitud de desistimiento también muestra estos consentimientos del pedido vinculado.
Las dos casillas de verificación se pueden activar o desactivar globalmente desde «Desistimientos Consentimiento en el proceso de pago», y su texto es totalmente modificable.
-
Vendo a negocios (B2B), ¿puedo excluirles del derecho de desistimiento?
-
El derecho de desistimiento protege a los consumidores (personas físicas que actúan al margen de su actividad comercial o profesional), no a los compradores comerciales, pero el plugin nunca decide eso por ti. Activa «Auto-declaración como consumidor» en «Desistmientos Ajustes Formulario público de desistimiento» y el formulario mostrará una casilla de selección obligatoria en la que el comprador declara que ha realizado la compra como consumidor, mientras que una empresa que no pueda declararlo quedará excluida automáticamente, y la declaración se almacenará junto con la solicitud como prueba. Está desactivado por defecto. Utiliza el atributo
consumer_check=«yes»del shortcode para activarlo en una página de destino específica, o el filtroayudawp_euw_show_consumer_checkpara aplicar una lógica personalizada (validación VIES, un campo de tipo de cliente, etc.). -
¿Incluye el plugin el modelo de formulario de desistimiento del anexo I.B requerido por la Directiva 2011/83/UE?
-
Sí, el plugin muestra el modelo del formulario del anexo I.B automáticamente con el nombre de la tienda, la dirección (procedente de WooCommerce, cuando esté disponible) y el correo electrónico de aviso, además de un número de teléfono del comerciante opcional que se puede configurar en los ajustes. Aparece como un bloque plegable justo debajo del formulario de desistimiento público, con una vista imprimible disponible desde la misma página. Facilitar este modelo es una obligación de información precontractual en virtud del artículo 6, apartado 1, letra h), de la Directiva 2011/83/UE. La función online añadida por la Directiva 2023/2673 la complementa, pero no la sustituye.
-
¿Qué es el código de verificación de la recepción que aparece en el correo electrónico del cliente?
-
Se trata de un hash SHA-256 calculado a partir de los datos de la solicitud (ID de la publicación, nombre del cliente, correo electrónico, referencia del pedido, ámbito, fecha del pedido y marca temporal de envío). El cliente conserva el correo electrónico como evidencia a prueba de manipulaciones en un medio duradero. Si más adelante surge una disputa, puedes volver a calcular el hash a partir de los campos almacenados con la función auxiliar
ayudawp_euw_compute_receipt_hash()y confirmar que el envío original no fue alterado. -
¿Dónde se almacenan las solicitudes de desistimiento?
-
Cada solicitud se guarda como una entrada de tipo de contenido personalizado privado denominado
ayudawp_withdrawal. Puedes gestionarlos en Desistimientos en tu área de administración. No son accesibles públicamente desde la interfaz de usuario. -
¿Puedo elegir quién puede gestionar las solicitudes de desistimiento?
-
Sí, desde «Desistimientos Ajustes Permisos». Como cada solicitud contiene datos personales (nombre, correo electrónico, IP), puedes elegir qué perfiles de usuario, además del administrador, pueden verlas y gestionarlas. El administrador siempre tiene acceso y no se puede desmarcar. En los sitios que se actualizan desde una versión anterior, los perfiles que ya podían ver las solicitudes (normalmente «Editor» y «Gestor de tienda» en WooCommerce) conservan su acceso para que todo siga funcionando correctamente, y luego puedes desmarcar los que quieras eliminar. Las nuevas instalaciones comienzan solo con el administrador.
-
¿Es compatible con HPOS (High-Performance Order Storage)?
-
Sí. El plugin declara su compatibilidad con HPOS al cargarse.
-
¿El plugin funciona sin WooCommerce?
-
Sí. El formulario, el shortcode, el registro de solicitudes de desistimiento, los avisos por correo electrónico, el hash SHA-256 del recibo y la integración nativa con RGPD funcionan como una herramienta independiente, con su propio menú de primer nivel «Desistimientos» en la administración y un submenú «Ajustes». El plugin añade automáticamente características adicionales cuando WooCommerce está activo, como la validación de pedidos/correos electrónicos condicionada a los estados de pedido elegibles (con un indicador de plazo de aviso para el administrador), el enlace para el desistimiento en «Mi cuenta», el aviso de desistimiento incluido en los correos electrónicos transaccionales, la columna «Desistir» en la pantalla de pedidos, notas privadas de pedido en cada cambio de estado y exclusiones del artículo 16 por producto/categoría. Activando WooCommerce posteriormente se activan esas características y desactivándolo se mantienen intactas las características independientes.
-
¿Funciona con plugins que modifican el número de pedido de WooCommerce (números de pedido secuenciales, números de pedido personalizados, etc.)?
-
Sí. El formulario admite tanto el ID interno del pedido de WooCommerce como el número de pedido que se muestra. El sistema de resoluciones comprueba una lista de claves meta conocidas: las estándar
_order_numbery_order_number_formatted(WooCommerce Sequential Order Numbers, versión gratuita y Pro), además de_alg_wc_full_custom_order_numbery_alg_wc_custom_order_number(Tyche / WPFactory «Custom Order Numbers for WooCommerce»). Añade otros plugins de numeración con el filtroayudawp_euw_order_number_meta_keys. Para esquemas calculados en tiempo real (por ejemplo, YITH Sequential Order Number o integraciones personalizadas), puentea la búsqueda con el filtroayudawp_euw_pre_resolve_wc_order. -
¿Aparecerá el aviso en todos los correos electrónicos de WooCommerce?
-
No. Por defecto, el aviso solo se añade a los correos electrónicos dirigidos al cliente que son relevantes para el plazo de desistimiento: procesamiento del pedido, pedido completado y factura del cliente (la que se envía manualmente). Los correos electrónicos de administración nunca incluyen el aviso. El aviso también está condicionado a la lista configurada de estados de pedido elegibles (por defecto: «Procesando» y «Completado»), por lo que el correo electrónico de la factura manual solo lo incluye cuando el pedido se encuentra en uno de esos estados. Puedes modificar la lista de correos electrónicos con el filtro
ayudawp_euw_email_idsy la lista de estados en «Desistimientos Ajustes Estados de pedido elegibles» o con el filtroayudawp_euw_allowed_statuses. -
¿Puedo hacer que el aviso de desistimiento que aparece en los correos electrónicos sea más discreto?
-
Sí. Devuelve un array vacío desde el filtro
ayudawp_euw_email_idspara eliminar el bloque de aviso (encabezado, texto y botón) de todos los correos electrónicos de pedido:add_filter( 'ayudawp_euw_email_ids', '__return_empty_array' );Esto solo afecta a los correos electrónicos: el botón «Mi cuenta», el formulario público y el enlace del pie de página siguen funcionando, por lo que la función de desistimiento sigue estando accesible, tal y como exige el artículo 11 bis. Después puedes añadir tu propio texto, más discreto, con un enlace sencillo utilizando el campo «Contenido adicional» de WooCommerce para cada correo electrónico (WooCommerce Ajustes Correos electrónicos, y luego abre cada correo electrónico, como los de pedido «Procesando» o «Completado»). Como se configura para cada correo electrónico, el enlace solo aparecerá donde lo añadas. Dirígelo a tu página de desistimiento y, si quieres que aparezca el número de pedido ya rellenado, añade el marcador de posición
{order_number}al enlace, por ejemplo,.../withdrawal/?order_id={order_number}. Asegúrate de incluir alguna referencia en el correo electrónico de confirmación del pedido: se trata de la confirmación del contrato en un soporte duradero, por lo que la información sobre el desistimiento debe seguir siendo accesible desde él, aunque no necesariamente como un botón destacado. -
¿En qué idiomas está disponible el plugin?
-
Todas las cadenas están preparadas para su traducción. Las traducciones se gestionan a través de la plataforma oficial de WordPress.org en translate.wordpress.org, por lo que cualquier configuración regional que cuente con suficientes cadenas traducidas se incorporará automáticamente a tu sitio web cuando el idioma del sitio de WordPress coincida. Allí se aceptan contribuciones tanto para configuraciones regionales existentes como para nuevas.
-
¿Cumple el plugin con los requisitos del RGPD?
-
El plugin solicita la aceptación explícita de la política de privacidad antes del envío y almacena la dirección IP del visitante y el agente de usuario únicamente con el fin de garantizar la trazabilidad legal de la solicitud. Consulta la sección Privacidad más arriba para ver la lista completa de los campos almacenados. El plugin también se integra de forma nativa con las herramientas del RGPD de WordPress: aparece un fragmento de política de privacidad sugerido en Ajustes Privacidad Guía de políticas, y los datos de retirada se muestran en Herramientas Exportar datos personales y Herramientas Borrar datos personales, de modo que los administradores pueden atender las solicitudes de acceso y supresión sin salir del panel de administración de WordPress.
-
¿Qué pasa si el cliente borra su cuenta de usuario de WordPress?
-
El registro de desistimientos es independiente de la tabla de usuarios de WordPress, se almacena como un tipo de contenido personalizado privado indexado según el correo electrónico del cliente. Al eliminar la cuenta de usuario no se borra automáticamente el registro; el cliente debe solicitar el borrado a través de Herramientas Borrar datos personales (donde el plugin registra una herramienta de borrado que elimina todas las solicitudes de retirada que coincidan con el correo electrónico del cliente) o bien puedes borrar manualmente los registros correspondientes de
ayudawp_withdrawalsi tu política de retención de datos así lo exige. -
¿Puedo personalizar los correos electrónicos?
-
Sí. Desde «Desistimientos Ajustes Correos electrónicos de desistimiento» puedes configurar el remitente («Nombre del remitente» y «Dirección del remitente») para los correos electrónicos del plugin y modificar el cuerpo de los correos de los estados de aceptado, rechazado y completado (si se dejan en blanco, cada texto se sustituye por el valor por defecto incluido). El aviso al administrador se puede personalizar con el filtro
ayudawp_euw_admin_email_lines, y todas las cadenas siguen siendo traducibles a través del dominio de texto estándar de WordPress. Los correos electrónicos se envían en texto sin formato y está previsto incluir plantillas HTML que hereden el tema de correo electrónico de WooCommerce en una versión posterior. -
¿Qué ganchos ofrece el plugin a los desarrolladores?
-
Filtros:
ayudawp_euw_grace_days— Días adicionales añadidos al plazo de 14 días. El valor por defecto es el valor almacenado en los ajustes; el filtro recibe ese valor, por lo que al devolver$days + Nse le suman esos días.ayudawp_euw_skip_deadline_check: se mantiene por motivos de compatibilidad con versiones anteriores, pero ya no tiene ningún efecto, ya que la fecha límite es meramente orientativa y nunca impide el envío de una entrada, por lo que no hay nada que omitir.ayudawp_euw_email_ids— Array de direcciones de correo electrónico de WooCommerce en las que se inserta el aviso de desistimiento.ayudawp_euw_allowed_statuses— Array de estados de pedido (sin el prefijowc-) para los que se ofrecen el botón de cancelación y la notificación por correo electrónico. Recibe el valor almacenado en los ajustes y elWC_Orderactual (cuando esté disponible).ayudawp_euw_allow_unverified_order— Devuelvetruepara aceptar envíos cuyo número de pedido no coincida con ningún pedido real de WooCommerce. Útil para sitios web que también gestionan compras ajenas a WooCommerce.ayudawp_euw_pre_resolve_wc_order— Interrumpe el proceso de resolución del pedido. Devuelve una instancia deWC_Orderpara aceptar,falsepara rechazar onull(por defecto) para pasar a las estrategias integradas. Útil para plugins que almacenan el número de pedido mostrado fuera del metadato estándar de la entrada_order_number(por ejemplo, YITH Sequential Order Number, integraciones ERP personalizadas).ayudawp_euw_resolve_wc_order— Filtro tardío que recibe el valor resuelto deWC_Order(ofalse) y la referencia sin procesar, para auditorías o anulaciones de última hora.ayudawp_euw_order_number_meta_keys: la lista de claves meta de entrada del pedido que se comprueban al buscar coincidencias con un número de pedido introducido, ordenadas por prioridad. Añade la clave meta de tu plugin de numeración.ayudawp_euw_admin_email_lines: el array que contiene las líneas del correo electrónico de aviso al administrador, justo antes de que se concatenen, con el contexto de la solicitud (ID de la publicación, nombre, correo electrónico, pedido, alcance, detalles) como segundo argumento. Añade, elimina o reordena las líneas.ayudawp_euw_validation_result: el resultado de la validación del pedido o del correo electrónico antes de que la solicitud siga su curso. Devuelvevalid => falsecon un código deerrorpara rechazar un envío, por ejemplo, procedente de una integración de captcha.ayudawp_euw_show_consumer_check: si se muestra la casilla opcional «comprado como consumidor», con los valores actuales de los campos, para que un integrador pueda decidirlo para cada pedido (validación VIES, un campo de tipo de cliente, etc.).
Acciones:
ayudawp_euw_after_submission— Se activa tras procesarse una solicitud de desistimiento. Argumentos: CPT ID, submission data array.ayudawp_euw_after_status_change— Se activa tras un cambio de estado (individual o por lotes). Argumentos: CPT ID, new status, optional admin comment.ayudawp_euw_after_form: se activa dentro del contenedor público del formulario, justo después de la etiqueta</form>, para que los módulos puedan insertar contenido debajo del formulario sin acoplamiento. No admite argumentos. Lo utiliza internamente el formulario modelo del Anexo I.B.ayudawp_euw_form_before_submit: se activa dentro del formulario, justo antes del botón de envío, para que un integrador pueda mostrar un widget de captcha o antispam, o un campo adicional cuyo valor se envíe junto con el formulario. Argumentos: valores predefinidos actuales, indicador de bloqueo.
-
¿Es suficiente este plugin para cumplir con la Directiva de la UE 2023/2673?
-
El plugin cubre los requisitos funcionales que la Directiva 2023/2673 impone en toda la UE a partir del 19 de junio de 2026: una función de desistimiento digital fácilmente localizable, la elegibilidad en función del estado del pedido con un indicador de plazo de aviso, exclusiones del Artículo 16 con herencia de subcategorías, pruebas en soporte duradero mediante el hash SHA-256 del recibo, el formulario modelo del Anexo I.B de la Directiva 2011/83/UE y las casillas de doble consentimiento en la página de pago que permiten las excepciones del Art. 16(m) y del Art. 14(4)(a). Además, añade herramientas operativas que la directiva no exige pero que facilitan la gestión de las solicitudes, como la inserción de correos electrónicos por estado, el ciclo de vida de los estados con acciones masivas, la integración nativa del RGPD, el aviso público sobre productos excluidos y la trazabilidad completa. Los estados miembros pueden añadir requisitos nacionales adicionales a la base de la UE, como el flujo de confirmación en dos pasos con una página de revisión intermedia que exigen los estados miembros más estrictos (Alemania, por ejemplo). Una futura versión se adaptará a cualquier requisito adicional del Real Decreto español definitivo una vez que se publique. El cumplimiento legal depende en última instancia de tu modelo de negocio, catálogo y jurisdicción; el plugin proporciona los componentes técnicos básicos, no asesoramiento legal. Consulta a un especialista en derecho del consumidor para tu caso específico.
Reseñas
Colaboradores y desarrolladores
«Cumplimiento del derecho de desistimiento de la UE» es un software de código abierto. Las siguientes personas han colaborado con este plugin.
Colaboradores«Cumplimiento del derecho de desistimiento de la UE» está traducido en 2 idiomas. Gracias a los traductores por sus contribuciones.
Traduce «Cumplimiento del derecho de desistimiento de la UE» a tu idioma.
¿Interesado en el desarrollo?
Revisa el código , echa un vistazo al repositorio SVN o suscríbete al registro de desarrollo por RSS.
Registro de cambios
2.0.1
- Mejorado: En los sitios que utilizan Polylang y WPML, los enlaces a la página de desistimiento ahora redirigen a la traducción de la página en el idioma del visitante. Esto afecta al formulario imprimible del anexo I.B, al botón de los correos electrónicos de WooCommerce, al enlace «Ver la política de desistimiento completa» de los productos excluidos y al shortcode [ayudawp_withdrawal_link]. No afecta a los sitios con un solo idioma.
- Corrección: La casilla de verificación obligatoria de consentimiento para contenidos digitales (art. 16, letra m)) ahora se valida antes de que WooCommerce PayPal Payments (y otros botones inteligentes de pago rápido) abran su ventana de pago, de modo que el mensaje «Debes aceptar el consentimiento» aparece desde el principio, en lugar de solo después de volver de PayPal. El pago nunca se completaba sin marcar la casilla. Esto solo corrige el momento en que aparecía el mensaje, que resultaba confuso.
2.0.0
- Nuevo: Remitente de correo electrónico configurable. Dos nuevos campos en los ajustes («Nombre del remitente» y «Dirección del remitente») permiten configurar el remitente de los correos electrónicos propios del plugin (confirmación de envío, aviso al administrador y actualizaciones de estado), que hasta ahora se enviaban con el remitente por defecto de WordPress (wordpress@tudominio). La sustitución se aplica únicamente a cada mensaje, del mismo modo que WooCommerce establece el remitente de sus propios correos electrónicos, por lo que nunca modifica el remitente global del sitio. Si se deja vacío el comportamiento no cambia.
- Nuevo: Los textos de los correos electrónicos de cambio de estado se pueden editar. Ahora es posible modificar el cuerpo de los correos electrónicos de aceptado, rechazado y completado desde los ajustes, para que la redacción se ajuste al funcionamiento real de tu tienda (por ejemplo, un reembolso instantáneo por Bizum en lugar de «unos días laborables»). Si se deja vacío cada uno de ellos, se utilizará el texto incluido por defecto y el campo de comentarios por solicitud sigue estando disponible para notas puntuales.
- Nuevo: Texto introductorio editable (y ocultable) en el formulario público. El párrafo introductorio situado encima del formulario se puede editar desde los ajustes, u ocultarse por completo cuando la página ya explique el proceso de baja encima del shortcode. La nota legal fija que aparece debajo permanece sin cambios, ya que debe aparecer tal cual en el formulario, en la pantalla de confirmación y en el correo electrónico de confirmación.
- Nuevo: Modo de plazo estricto opcional. Una opción en «Desistimientos Ajustes Plazo de desistimiento» permite cambiar el comportamiento «informativo» por defecto (que nunca bloquea, sino que solo marca las solicitudes fuera de plazo para su revisión) por el modo «estricto», que oculta el botón en «Mi cuenta» y rechaza las nuevas solicitudes una vez transcurrido el plazo más los días de gracia. El modo «informativo» sigue siendo el por defecto y la opción más segura para productos con plazos de entrega impredecibles. El modo «estricto» es el adecuado para servicios, contenidos digitales y recogidas en tienda, donde el plazo comienza a partir de una fecha conocida por la tienda. Un cliente que cuestione una solicitud rechazada nunca se ve bloqueado por ello: el modo «estricto» impide abrir nuevas solicitudes, nunca las que ya están abiertas.
- Nuevo: Auto-declaración opcional «comprado como consumidor» en el formulario, para tiendas que también venden a empresas (B2B), en las que no se aplica el derecho de desistimiento. Desactivada por defecto, cuando se activa el formulario muestra una casilla de selección obligatoria en la que se declara que la compra se ha realizado como consumidor (una persona física que actúa al margen de su actividad comercial o profesional), que se almacena junto con la solicitud como prueba duradera. Un atributo de shortcode (consumer_check=«yes») y el filtro ayudawp_euw_show_consumer_check permiten controlar esta opción por página o por pedido.
- Nuevo: Sección de permisos para seleccionar qué perfiles de usuario, además del administrador, pueden ver y gestionar las solicitudes de desistimiento. Hasta ahora cualquier editor (y en los sitios con WooCommerce el gestor de la tienda) podía ver las solicitudes, que contienen datos personales. Ahora, el registro de solicitudes utiliza su propia capacidad, que solo se concede al administrador y a los perfiles que marques. Si actualizas sobre una versión anterior los perfiles que ya podían ver las solicitudes conservan su acceso para que no se produzca ningún fallo, y puedes restringirlo a partir de ahí, mientras que las nuevas instalaciones comienzan con acceso exclusivo para el administrador.
- Nuevo: Correo electrónico de contacto específico para el formulario modelo del Anexo I.B, que se configura en «Ajustes» (sección «Formulario modelo de desistimiento»), independiente de la dirección de aviso, para que el formulario modelo público muestre una dirección de contacto clara, mientras que los avisos internos se envían a otra dirección. Si se deja vacío se utiliza por defecto la dirección de aviso y, si no hay ninguna el correo electrónico del administrador del sitio.
- Nuevo: Shortcode [ayudawp_withdrawal_excluded_notice] que permite insertar el aviso de producto excluido en los maquetadores de páginas (Divi, Elementor, Bricks, ShopLentor, etc.) que generan su propia plantilla de producto y omiten el gancho estándar de WooCommerce donde suele aparecer el aviso. Solo tienes que insertarlo en el diseño del producto y se mostrará el aviso correspondiente al producto actual cuando este esté excluido.
- Nuevo: Ganchos para desarrolladores. ayudawp_euw_form_before_submit (acción) para mostrar un widget de captcha o antispam, o un campo adicional dentro del formulario, rechazado a través del filtro ayudawp_euw_validation_result, ayudawp_euw_admin_email_lines para personalizar el aviso al administrador, y ayudawp_euw_order_number_meta_keys para añadir claves meta personalizadas para el número de pedido. El shortcode del formulario también admite más atributos de rellenado previo (nombre, fecha, alcance, detalles).
- Mejorado: El campo del correo electrónico de aviso ahora admite varios destinatarios separados por comas, para que el aviso de cada nueva solicitud pueda llegar a más de un buzón (por ejemplo, al responsable de la tienda y al departamento de contabilidad). Las direcciones no válidas se descartan, y si ninguna es válida se recurre al correo electrónico del administrador del sitio.
- Mejorado: Cuando se envía el formulario público y falta algún dato, ahora cada campo que falta o que no es válido aparece resaltado en rojo con una breve nota al lado, en lugar de un único mensaje genérico sin indicación visual, para que el cliente vea exactamente qué debe corregir. Es accesible (aria-invalid, role=»alert») y sigue sin necesitar JavaScript.
- Mejorado: Después de cada paso (confirmación, mensaje de éxito, errores de validación), el formulario ahora se desplaza hasta quedar visible en lugar de saltar a la parte superior de la página, de modo que el contenido relevante se encuentra justo donde el cliente está mirando.
- Corrección: Compatibilidad con los números de pedido del plugin de Tyche «Custom Order Numbers for WooCommerce». El sistema de resolución solo comparaba el pedido con el metadato _order_number, que Tyche no utiliza, por lo que sus clientes recibían el mensaje «No hemos podido asociar este correo electrónico con el número de pedido facilitado», incluso cuando los datos eran correctos. Ahora también comprueba los campos _alg_wc_full_custom_order_number y _alg_wc_custom_order_number de Tyche, y permite añadir otros plugins de numeración mediante el nuevo filtro ayudawp_euw_order_number_meta_keys.
- Corrección: El menú desplegable de la categoría «Estado del desistimiento» ya no incluye la opción redundante «Estándar», que parecía no guardarse (en una categoría equivalía a la opción vacía, y el controlador de guardado la borraba de la misma forma). El menú desplegable de cada producto sí la mantiene, ya que en ese caso se trata de una anulación real de la herencia de la categoría.
- Corrección: El formulario modelo del Anexo I.B ya no muestra «Teléfono: [Número de teléfono, si lo hay]» cuando no se ha configurado ningún número de teléfono del comerciante. El campo del teléfono es opcional y ahora se omite si está vacío, y el ejemplo aparece como marcador de posición en el campo de los ajustes.
Para entradas anteriores del registro de cambios revisa el archivo changelog.txt.
