Documentación de MevvLegal

Nada rastrea a su visitante hasta que dice que sí.

MevvLegal retiene el código de seguimiento hasta que el visitante acepta — incluidas las etiquetas que otros plugins pegan directamente en la página. Registra a qué accedieron sin identificar a nadie, borra lo que puede cuando se retira el consentimiento, y escribe sus páginas de privacidad y de cookies a partir de las cookies que su sitio realmente usa. Esta página cubre todas las pantallas, la separación entre Free y Pro, y las cosas que deliberadamente no puede hacer.

Instalación

MevvLegal necesita WordPress 6.0 o superior y PHP 8.1 o superior. No hay ningún otro requisito ni ninguna biblioteca externa.

  1. Suba y active el plugin. Al activarlo se crea una tabla para el registro anónimo de consentimientos.
  2. Abra MevvLegal → Asistente de configuración y recorra los cinco pasos: los datos de su entidad, las categorías y el texto del banner, un escaneo del front-end, las sugerencias de retención salidas de ese escaneo y las páginas legales.
  3. Compruebe el resultado en Auditoría del front-end. La cifra a la que apunta es «scripts de terceros ejecutándose sin consentimiento: 0».

Dos integraciones opcionales: el plugin WP Consent API, si usa plugins que lo hablan, y WPML o Polylang para traducir el título y el texto del banner.

Pro es un plugin aparte que se instala junto al gratuito, y declara el plugin gratuito como requisito estricto. Sin Pro, MevvLegal no contacta nunca con nuestros servidores.

Cómo funciona

La mayoría de los banners de cookies hacen la pregunta y luego cargan el código de seguimiento sin importar la respuesta. El visitante dijo que no y aun así fue rastreado.

  1. Antes del consentimiento, cada script de seguimiento de la página se reescribe para que el navegador no lo analice, no lo descargue ni lo ejecute. Su dirección se aparta, no se borra — el consentimiento tiene que poder devolverla a su sitio.
  2. El banner se imprime para todos los visitantes, con bytes idénticos, y empieza oculto. El script del navegador decide si mostrarlo.
  3. Cuando el visitante toma una decisión, esta se escribe en su propio navegador y se liberan los scripts de las categorías que aceptó.
  4. La decisión queda ligada al texto exacto que se le mostró. Cambie las categorías, el texto del banner o el inventario de cookies y los consentimientos antiguos dejan de contar — la pregunta se vuelve a hacer.
  5. Si más tarde retira el consentimiento, las cookies nombradas en su inventario se borran allí donde es posible, y la página se recarga para que nada de lo que ya estaba en marcha siga funcionando.

El servidor nunca varía la página según el visitante: no se lee ninguna cookie, no se comprueba ninguna sesión, no se inspecciona ningún estado de sesión iniciada en la parte pública. Un banner que cambia el HTML por visitante rompe el almacenamiento en caché de página completa — y detrás de una caché así, la página del primer visitante se sirve a todos, en silencio.

Si el script no llega a cargarse, el banner permanece invisible y los scripts retenidos no se liberan nunca. El modo de fallo es “no se rastrea nada”, no “se rastrea todo”.

Retener los scripts

Tres mecanismos, porque el código de seguimiento llega a una página de WordPress por tres caminos distintos.

Scripts encolados por WordPress
Se asignan por su identificador a una categoría en la lista Scripts retenidos. MevvLegal reescribe la etiqueta para que el navegador la trate como texto plano y saca la dirección de src.
Etiquetas que escribe usted mismo
Escriba el contrato a mano: dé al script type="text/plain" y un atributo de categoría, o ponga la dirección de un iframe en el atributo de retención en lugar de en src.
Etiquetas que otros plugins imprimen directamente
Algunos plugins imprimen su rastreador directamente en la página, donde el mecanismo normal no puede verlo. Esos se detectan en cambio por un fragmento de su dirección, en la lista Etiquetas impresas por otros plugins.

El tercer caso no es hipotético. En una tienda real, Google Listings & Ads imprimía la etiqueta de Google Ads con una prioridad a la que ningún filtro llega, y se escribían cookies de marketing sin consentimiento bajo un banner que creía haberlas bloqueado.

Liberar un script retenido exige sustituir el elemento, no solo editarlo: un script que el navegador ya ha analizado como texto plano no volverá a ejecutarse jamás, hagas lo que hagas con sus atributos. Solo un nodo completamente nuevo se ejecuta. Los elementos que no son script — iframes, imágenes — simplemente recuperan su dirección.

Mientras esa tercera lista esté vacía, no se almacena en búfer ninguna página. El búfer de salida junto a otro plugin es una de las causas más reportadas de pantalla en blanco, así que solo se activa cuando realmente hay algo que capturar.

MevvLegal también repara su propio trabajo. Una etiqueta cuya dirección parece aparcada pero que ha perdido su atributo de categoría es una que otro plugin reescribió después de nosotros — el navegador la ejecutaría. Esas se detectan, se vuelven a retener y se cuentan en la pantalla de auditoría como Quedó a medias (ADVERTENCIA).

El banner

Los ajustes están en MevvLegal → Consentimiento de cookies, que es un único formulario largo en lugar de un conjunto de pestañas.

Banner de cookies
Si se muestra, su título, su texto y si se sitúa arriba o abajo. Cambiar el texto cambia la versión de la política y vuelve a preguntar a todo el mundo — eso es el objetivo, no un efecto secundario.
Apariencia del banner
Seis valores: fondo del banner, color del texto, color del botón, color del texto del botón, radio de las esquinas y anchura máxima. Un contraste por debajo del umbral WCAG produce una advertencia pero no impide guardar.
Categorías
Necesarias (siempre activas, no se pueden desactivar), preferencias, estadísticas, marketing.
Enlace a los ajustes de cookies
Un shortcode que puede poner en su pie de página para que un visitante vuelva a abrir el banner y cambie de opinión.

Rechazar es tan fácil como aceptar. Ambos botones llevan la misma clase y el de rechazo se imprime primero. Hay un solo ajuste de color, aplicado a los dos — no puede hacer que el botón de rechazo sea más discreto que el de aceptación. Un consentimiento obtenido dificultando la negativa no es libre.

El banner es un diálogo, pero no bloquea la página detrás de él ni atrapa el foco. Escape cierra el panel de detalle, nunca el banner en sí: tratar la indecisión como una aceptación o como una negativa sería un error en ambas direcciones.

El inventario de cookies

El inventario es una lista por categoría, con una fila por cookie: nombre, dónde vive, quién la proporciona, cuánto dura y para qué sirve. Todo lo demás se construye sobre él — la página de política de cookies se genera a partir de él, y es la lista que dice qué se puede borrar cuando se retira el consentimiento.

MevvLegal no incluye ninguna fila predeterminada. Ni Google Analytics precargado, ni Meta Pixel precargado. Declarar un tratamiento que en realidad no realiza es peor que declarar de menos.

No tiene que escribirlo de memoria. Observación de cookies mide qué nombres de cookie aparecen en los navegadores de visitantes reales — una muestra de ellos, a la frecuencia que usted elija — y los ofrece como sugerencias.

Solo se leen los nombres. El valor de una cookie nunca se lee, nunca se envía y nunca se almacena. Y un nombre descubierto nunca se escribe por su cuenta en su inventario: el proveedor, la duración y la finalidad son cosas que solo usted sabe, e inventarlas pondría una declaración falsa en su propia página de política.

Reglas regionales y GPC

Desactivado por defecto. Cuando está activado, tres grupos pueden comportarse de forma distinta.

La UE/EEE, el Reino Unido y Turquía
Consentimiento previo, siempre. Esto no es un ajuste y no se puede relajar.
Estados Unidos
Consentimiento previo, o exclusión posterior — los scripts se ejecutan y el banner dice que puede rechazarlos.
En todos los demás sitios, y para los visitantes cuya región no se puede determinar
Consentimiento previo, o libre — los scripts se ejecutan y el banner no aparece nunca.

La región se determina a partir de la zona horaria del navegador. Sin consulta de IP, sin cabecera de país, sin servicio de geolocalización, sin escribir nada en el dispositivo del visitante. El enfoque habitual es enviar la IP del visitante a un servicio de consulta de terceros — lo cual es en sí mismo una comunicación de datos, y en al menos un producto de la competencia ocurre por HTTP sin cifrar.

Esa elección tiene un coste honesto: una zona horaria no es un país. Los estados de EE. UU. no se pueden distinguir, así que no hay regla a nivel estatal. Y cada caso desconocido — un valor vacío, UTC, un nombre no reconocido — cae en el grupo de consentimiento previo. El valor por defecto contrario escribiría cookies de marketing sin consentimiento para un visitante de la UE cuyo navegador simplemente no informó de la zona, y no mostraría ningún error en ninguna parte.

El Global Privacy Control se respeta siempre y no tiene ajuste. Cuando un navegador lo envía, un grupo de exclusión posterior o libre se endurece de nuevo hasta el consentimiento previo. Solo endurece; nunca libera un script en ninguna parte.

El GPC nunca se convierte en un registro de consentimiento. El banner no se cierra y no se guarda nada. Un ajuste del navegador no es un consentimiento informado — y cerrar el banner le quitaría a ese visitante la posibilidad de aceptar. Do Not Track deliberadamente no se respeta: algunos navegadores lo enviaban por defecto sin que el usuario lo eligiera, y tratar como una objeción un valor por defecto que nadie eligió es la imagen invertida de tratar el silencio como consentimiento.

En un grupo de exclusión posterior o libre no se escribe ningún registro de consentimiento y no se envía nada al log. Escribirlo convertiría el registro que debe probar el consentimiento en una declaración inventada. Una decisión que el visitante tomó realmente siempre prevalece sobre la regla regional.

Borrar cookies cuando se retira el consentimiento

Para esto no hay ningún ajuste. Cuando un visitante retira su consentimiento, los nombres de su inventario se eliminan allí donde el navegador lo permite — cookies, almacenamiento local y de sesión, en todas las rutas y dominios candidatos. Un asterisco final funciona como comodín. El borrado se ejecuta antes de que la página se recargue, porque después de la recarga no está garantizado que se ejecute nada.

La categoría de necesarias nunca se toca, ni tampoco el propio registro de consentimiento del visitante.

Hay dos tipos de cookie que no se pueden borrar desde un navegador, y ningún plugin puede cambiar eso. Las cookies HttpOnly son invisibles para JavaScript por definición: no aparecen en absoluto, así que no se puede escribir una cookie caducada encima de ellas. Y las cookies establecidas en otro dominio — doubleclick.net, facebook.com — no las puede eliminar un script que se ejecuta en su sitio; la separación de dominios del navegador lo prohíbe. Ahí está la mayoría de las cookies de marketing de terceros.

Por eso MevvLegal no dice “los hemos borrado todos”. El script informa de lo que intentó y de lo que sigue ahí, y la pantalla de administración imprime el límite tal cual es. Afirmar algo que no se ha medido es el error más caro en un producto como este.

La respuesta real para las cookies de terceros no es borrarlas, sino no dejar nunca que se escriban: para eso está la retención de scripts. El borrado la complementa; no la sustituye. Y solo se pueden borrar los nombres escritos en su inventario — si el inventario de una categoría no necesaria está vacío, retirar el consentimiento detendrá los scripts pero dejará las cookies que ya están en el dispositivo.

El registro de consentimiento

Dos mitades, separadas a propósito.

En el dispositivo del visitante
Su decisión, la versión de la política a la que se aplica y cuándo se tomó. Se guarda en su propio navegador, no en una cookie.
En su servidor
Solo contadores: para cada día, cada versión de la política y cada combinación de elecciones, cuántas veces ocurrió. Ninguna dirección IP, ningún id de visitante, ningún id de usuario, ninguna fila por persona. Junto a ellos, un archivo de todos los textos de política que se mostraron alguna vez.

Una prueba de consentimiento a nivel de persona significaría dar a cada visitante una identidad duradera — abrir un tratamiento de datos completamente nuevo, sin consentimiento propio, para probar el consentimiento del anterior. Este producto no hace eso, y no finge hacerlo.

El límite honesto está impreso en la pantalla, en la exportación y en el código fuente: los contadores no son únicos por persona y una petición malintencionada puede inflarlos. Esto no es un contador de visitantes. Es un registro de cuántas declaraciones de consentimiento se dieron frente a qué texto.

Analítica de consentimientos lee esos contadores: tasas de aceptación total, aceptación parcial y rechazo total, un desglose por categoría, una comparación entre versiones de la política y una tendencia diaria. Pro añade una exportación CSV que lleva los contadores, los textos de la política y esa frase de límite honesto como última fila.

Páginas legales

Seis plantillas, generadas a partir de sus propios datos y su propio inventario:

Free
Gizlilik Politikası ve KVKK Aydınlatma Metni (Política de privacidad y texto informativo KVKK) · Çerez Politikası (Política de cookies)
Pro
Kullanım Koşulları (Condiciones de uso) · Mesafeli Satış Sözleşmesi (Contrato de venta a distancia) · İade ve Değişim Koşulları (Cayma Hakkı) (Condiciones de devolución y cambio — derecho de desistimiento) · Teslimat ve Kargo Koşulları (Condiciones de entrega y envío)

La política de cookies es gratuita a propósito: un banner sin ella no significa nada.

Están disponibles en turco y en inglés. Los textos en inglés no son traducciones — son textos aparte redactados frente al RGPD, la Directiva ePrivacy y la Directiva de derechos de los consumidores, porque los turcos están redactados frente a la KVKK y al reglamento turco de ventas a distancia. No existe un Mesafeli Satış Sözleşmesi en inglés, y la pantalla explica por qué: es un documento exigido por la normativa turca, sin obligación equivalente en el derecho de la UE.

Las cláusulas que no se pueden conocer se dejan entre corchetes en lugar de rellenarse — ley aplicable, tribunal competente, un representante en la UE, plazos de conservación, quién paga el envío de devolución. Una cláusula rellenada a ojo es peor que una cláusula en blanco.

Las páginas generadas son páginas normales de WordPress. Sin tipo de contenido personalizado, sin envoltorio de shortcode, sin bloqueo — puede editarlas y sobreviven a la eliminación del plugin. Sobrescribir una es siempre una decisión explícita y siempre guarda antes una revisión.

La pantalla le avisa cuando una página publicada se ha desviado de lo que se generaría hoy, y Ver la diferencia muestra la diferencia línea a línea. También comprueba si su política de cookies publicada sigue coincidiendo con sus categorías abiertas.

Estos textos no son asesoramiento jurídico, y todas las pantallas del plugin lo dicen.

Solicitudes de los interesados

Un shortcode coloca un formulario de solicitud en cualquier página. El visitante da su dirección de correo y elige si quiere una copia de sus datos o su supresión. Ninguna de las dos opciones viene preseleccionada — marcar una de antemano le alejaría de la supresión.

  1. Se envía el formulario. Está abierto a visitantes que no han iniciado sesión, porque el derecho no depende de estar registrado.
  2. WordPress les envía por correo un enlace de confirmación. No ocurre nada hasta que lo pulsan.
  3. Usted atiende la solicitud desde Herramientas → Exportar datos personales o Borrar datos personales, las pantallas propias de WordPress. Un contador en la pantalla de MevvLegal muestra cuántas solicitudes confirmadas están esperando.

La respuesta al visitante es siempre la misma frase, pase lo que pase — incluso cuando la dirección no consta. Decirle otra cosa revelaría si una dirección está registrada con usted.

La exportación y la supresión las realiza el núcleo de WordPress, no MevvLegal. MevvLegal no registra ningún exportador ni ningún borrador propio, porque no almacena datos personales — una sección vacía en la exportación sería ruido, no información.

El formulario no lleva nonce, deliberadamente: un nonce muere detrás de una caché de página completa y se lleva el formulario consigo, en silencio. Una superficie de ejercicio de derechos que deja de funcionar sin avisar no es un fallo aceptable aquí. El abuso se controla con un campo honeypot, un tope horario para todo el sitio y la propia protección contra duplicados de WordPress.

El formulario incluye la advertencia de que los registros sujetos a una obligación legal de conservación — facturas, libros de comercio — pueden conservarse hasta que ese plazo termine, y de que se le dirá qué registros y por qué.

La auditoría de la parte pública

Auditoría del front-end descarga su propia página de inicio y cuenta lo que hay realmente en ella: cuántas etiquetas de script, cuántas están retenidas, cuántas se ejecutan libremente y son de terceros, cuántas son en línea, cuántas son bloques de datos que no son scripts en absoluto, y lo mismo para los iframes.

La línea que importa es Sin retener y DE TERCEROS. Cuando llega a cero la pantalla lo dice: scripts de terceros ejecutándose sin consentimiento: 0. Esa cifra es la promesa real del producto.

Desde la misma pantalla puede convertir los rastreadores reconocidos en reglas de retención, y escribir en su inventario los nombres de cookie descubiertos.

Nada se activa automáticamente. Retener el script equivocado rompe un sitio en silencio — el script 3-D Secure de un proveedor de pagos, una integración de envíos, un chat en vivo: la página se abre, el botón no hace nada. Por eso las sugerencias se proponen y usted las aprueba. Y eliminar una regla de retención es gratuito e incondicional en todas las ediciones, con licencia o sin ella.

Cada escaneo se salta su caché de páginas. Sin eso, la pantalla estaría leyendo HTML generado hace horas y diciéndole que es el estado actual.

Free y Pro — la regla que nunca se dobla

Este plugin tiene un invariante, escrito en la cabecera de su clase de licencia:

El banner de cookies y la retención de scripts nunca están atados a la licencia. Aquí la regla es más dura que en nuestros otros productos. En otros, una licencia vencida le cuesta apariencia; aquí le costaría cumplimiento. Si el banner se callara en un sitio cuya licencia expiró, ese sitio empezaría a escribir cookies de analítica y de marketing a sus visitantes sin permiso — y la multa cae sobre el responsable del tratamiento, no sobre el proveedor del plugin. Un producto que deja a su cliente legalmente expuesto por un problema de pago no es un producto que se pueda vender.

Qué significa eso en la práctica: solo se restringe la configuración nueva. Definir categorías nuevas, generar plantillas legales nuevas, añadir filas a la tabla de cookies. La configuración que ya existe sigue funcionando exactamente igual.

Gratis, de forma permanente, sin ninguna comprobación de licencia en el camino de la parte pública:

  • El banner de cookies, y sus ajustes de color, radio y anchura
  • La retención de scripts — los tres mecanismos
  • El registro de consentimiento en el navegador del visitante, y el log anónimo de consentimientos
  • La pantalla de analítica de consentimiento
  • La auditoría de la parte pública, la observación de cookies y la conversión de un rastreador reconocido en una regla de retención
  • Eliminar una regla de retención, y desactivar el Consent Mode o la regla regional — sin condiciones
  • Borrar cookies cuando se retira el consentimiento
  • El puente con la WP Consent API, y el GPC
  • El formulario de solicitud del interesado
  • El asistente de instalación, la comparación de textos y el texto del banner en varios idiomas
  • Las plantillas de política de privacidad y de cookies, y la edición de cualquier página generada

Pro añade:

  • La edición del inventario de cookies, del mapeo de scripts y del mapeo de etiquetas en bruto
  • Las cuatro plantillas de comercio electrónico: condiciones de uso, contrato de venta a distancia, devoluciones y desistimiento, entrega y envío
  • Activar el Consent Mode y activar la regla regional
  • Exportación en CSV del log de consentimientos

Cuando una licencia expira:

  • Su cumplimiento no se ve afectado. El banner, la retención de scripts y el registro de consentimiento siguen funcionando.
  • Su inventario de cookies se conserva, no se vacía. Vaciarlo dejaría su política publicada equivocada de la noche a la mañana.
  • Las reglas de retención existentes siguen reteniendo. Los campos del inventario simplemente pasan a ser de solo lectura.
  • Las páginas legales que ya generó siguen publicadas y siguen siendo editables.
  • El Consent Mode y la regla regional, si ya estaban activados, siguen activados. Solo activarlos está restringido — desactivarlos, y endurecer un grupo hasta el consentimiento previo, están siempre disponibles.

Si nuestros servidores no están accesibles, una licencia activa sigue funcionando durante siete días apoyándose en la última comprobación correcta — pero solo si alguna vez se verificó con éxito.

Cuando algo no funciona

La auditoría muestra «Quedó a medias (ADVERTENCIA)»
Otro plugin está reescribiendo la misma etiqueta de script después de MevvLegal y le quita la retención. Esto está medido, no es teórico — un plugin auxiliar de hosting hacía exactamente esto en un sitio real. MevvLegal filtra lo más tarde que le es posible y repara lo que puede detectar. Si una fila persiste, desactive el plugin que encola ese script y vuelva a escanear.
Un rastreador se ejecuta aunque el banner esté instalado
Se está imprimiendo directamente en la página en lugar de encolarse. Añada un fragmento de su dirección a Etiquetas impresas por otros plugins — esa lista es la que atrapa esos casos.
La pantalla de auditoría muestra una configuración que ya no existe
No debería: cada escaneo se salta la caché de páginas. Si la parte pública sigue viéndose obsoleta para los visitantes, vacíe su caché de página completa — en LiteSpeed, wp litespeed-purge all.
La regla regional no parece aplicarse
Un plugin de caché o de optimización está aplazando y reordenando los scripts, de modo que la decisión de región llega después de que el banner ya haya decidido. El producto vuelve a aplicar la regla cuando se carga el script de región; si aun así falla, deje de aplazar los scripts de MevvLegal.
El banner no aparece en absoluto
La auditoría dice No se encontró el banner en la página. cuando falta. Lo más habitual es que el tema nunca llame al hook estándar de apertura del body — hay una alternativa en el pie para eso. Recuerde que, cuando el banner no se imprime, los scripts retenidos tampoco se liberan nunca.
Pantalla en blanco tras activar el mapeo de etiquetas en bruto
Esa lista es lo único que activa el búfer de salida. Almacenar en búfer junto a otro plugin que también lo hace es una causa conocida. Vacíe la lista para confirmarlo y luego vuelva a añadir las direcciones de una en una.
El log de consentimientos sigue vacío
La tabla se crea al activar, y la activación no se ejecuta en las actualizaciones del plugin. Se vuelve a comprobar en cada carga de una página de administración, así que visitar la administración una vez suele bastar. Confirme también que el log está activado.
Un botón o un paso de pago dejó de funcionar tras añadir una regla de retención
Ha retenido algo que no es un rastreador. Elimine la regla — la eliminación es gratuita, incondicional e inmediata.
El Consent Mode está activado y la auditoría ya no informa de cero
Es lo esperado y está dicho en el propio ajuste: con el Consent Mode activado, la etiqueta de Google se ejecuta.

Límites

  • Las cookies HttpOnly y las cookies establecidas en otro dominio no se pueden borrar desde un navegador. Ningún plugin puede cambiar esto.
  • Solo se borran los nombres escritos en su inventario. Un inventario vacío significa que no se elimina nada.
  • La observación de cookies lee nombres, nunca valores. Tampoco escribe nunca por su cuenta una cookie descubierta en su inventario, ni inventa su proveedor, su duración o su finalidad.
  • Las reglas de retención nunca se activan automáticamente, y no se sugiere ninguna categoría para un tercero no reconocido.
  • Las regiones salen de la zona horaria del navegador. Una zona horaria no es un país, los estados de EE. UU. no se pueden distinguir, y todo caso desconocido cae en el consentimiento previo.
  • El grupo UE/Reino Unido/Turquía no se puede relajar. No existe ningún ajuste para ello.
  • El GPC no se puede desactivar, y Do Not Track no se respeta.
  • No hay prueba de consentimiento a nivel de persona. Los contadores son anónimos, no son únicos por persona y se pueden inflar.
  • El log no puede decirle en qué idioma se dio un consentimiento.
  • MevvLegal no escribe ningún motor propio de exportación o supresión. Ese trabajo lo hace el núcleo de WordPress.
  • Con el Consent Mode, solo se eximen los cargadores de la etiqueta de Google. No se libera nada más.
  • La auditoría descarga su página de inicio por HTTP. No ejecuta un navegador headless en su servidor, así que ve lo que imprime esa única página.
  • Los textos legales son estáticos. Hoy son correctos; cuando la ley cambia, no se actualizan solos. El plugin le avisa cuando una página publicada se ha alejado de la plantilla, pero no puede avisarle de cuándo ha envejecido la plantilla misma.
  • Estos textos no son asesoramiento jurídico.
  • No se borra nada al desinstalar el plugin — la tabla del log de consentimientos y sus ajustes se quedan donde están.

Y la que más importa: ningún plugin puede hacerle cumplir la ley. Este retiene scripts, registra consentimientos y genera páginas a partir de lo que usted le dijo. Lo que usted le dijo sigue siendo su responsabilidad, y la última pantalla del asistente dice exactamente eso en lugar de felicitarle.