=== Nivel de Calidad · Medición ===
Contributors: niveldecalidad
Tags: google-tag-manager, google-ads, consent-mode, analytics, remarketing
Requires at least: 6.4
Requires PHP: 7.4
Stable tag: 0.3.0
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Primera versión para despliegue supervisado por Nivel de Calidad.

== Descripción ==
Introduce un ID GTM y gestiona la medición desde tu contenedor. Diseño corporativo, eventos de formularios confirmados, visitas y clics; diagnóstico privado y soporte de las cuatro señales de Consent Mode v2.

El plugin instala GTM. Las etiquetas de Google Ads, las acciones de conversión y las audiencias deben configurarse en GTM/Google Ads. No basta con el ID de un contenedor vacío.

== Instalación ==
1. WordPress > Plugins > Añadir nuevo > Subir plugin.
2. Sube ndc-medicion-0.3.0.zip y actívalo.
3. Abre NDC · Medición e introduce el ID GTM de ese cliente.
4. Si otra herramienta instala GTM, elige reutilizarlo. No mantengas dos instaladores.
5. Sigue docs/guia.html para conectar Ads, remarketing y el banner.
6. Prueba un formulario desde NDC · Probar medición en la barra de administración.

== Compatibilidad de formularios ==
Divi como tema/builder: la instalación de GTM y la detección de enlaces estándar de WhatsApp/teléfono no dependen de Divi. El formulario nativo de Divi no dispone todavía de adaptador automático en v0.2.0. En páginas Divi se pueden utilizar los formularios compatibles indicados a continuación. La combinación concreta de tema, caché, CMP y formulario debe validarse en cada web.
Contact Form 7 AJAX: wpcf7mailsent.
Elementor Pro Forms: submit_success sobre form.elementor-form.
WPForms AJAX: wpformsAjaxSubmitSuccess sobre form.wpforms-form.
Formularios propios: API JavaScript NDCTracking.formSuccess('contacto') tras confirmar éxito en servidor.
No se detectan automáticamente formularios en iframes, envíos sin AJAX, Ninja Forms, Gravity Forms ni formularios que no emitan estos eventos. Requieren adaptador.
No se verifica que un email haya llegado a la bandeja de entrada; la confirmación es la que proporciona el formulario.

== Banner opcional y Consent Mode v2 ==
Por defecto conserva la CMP externa. El banner NDC es opcional; no utilizar dos gestores a la vez.
Con NDC: Aceptar, Rechazar y Configurar; analítica y publicidad por separado, desactivadas inicialmente. Enlaces a políticas, título/texto, color, posición y revisión configurables. URL de política de cookies obligatoria para activar.
Modo básico predeterminado: espera a alguna finalidad aceptada para cargar su GTM. Las etiquetas deben tener sus permisos de consentimiento configurados, en especial para aceptación parcial. Otros cargadores y scripts no quedan bloqueados automáticamente.
Modo avanzado opcional: GTM carga con cuatro señales denegadas; las etiquetas Google pueden enviar mediciones sin cookies.
Cookie técnica propia ndc_consent_v1: elección, fecha y versión, hasta 180 días, Path=/, SameSite=Lax, Secure en HTTPS. Sin identificador de visitante ni registro probatorio en servidor. Botón permanente para cambiar preferencias. Retirar una finalidad actualiza señales y recarga; limpieza de cookies conocidas solo de mejor esfuerzo.
Soporta analytics_storage, ad_storage, ad_user_data y ad_personalization. Incluye código de plantilla nativa GTM en gtm/ndc-consent-template.js e instrucciones completas en docs/guia.html.
Plantilla piloto, no certificada ni publicada en galería. Antes de distribuirla como CMP a varias entidades independientes, tramitar el developer ID que Google requiere y validar el contenedor real. Se puede conservar la CMP existente.
Herramientas de terceros: reglas por finalidad en GTM o scripts/iframes inertes con data-ndc-consent. No escanea ni bloquea automáticamente todo script de la web. Ver guía.
El banner funciona aunque no haya ID GTM o la medición esté desactivada. Los administradores excluidos de medición siguen viendo el banner.
El diagnóstico distingue espera por consentimiento de fallo de carga. No confirma atribución Google Ads ni el estado interno de todas las CMP: verificar en Tag Assistant.

== Privacidad y funcionamiento ==
Sin telemetría de Nivel de Calidad. La extensión opcional Google guarda credenciales OAuth y contactos cifrados en WordPress. Sin activarla se mantiene el comportamiento anterior. La hoja contiene nombre, email y teléfono legibles para su uso comercial; Google Ads recibe identificadores con hash.
Con la extensión Google desactivada, el plugin usa solo IDs técnicos. Si se activa, lee exclusivamente nombre, email y teléfono de las reglas configuradas y con permiso; nunca el mensaje ni archivos adjuntos. No copia la URL, parámetros de consulta ni valores de enlaces a los eventos NDC. Las etiquetas de terceros configuradas en GTM pueden recopilar otros datos según su configuración, incluida la URL.
El ID aleatorio de evento dura solo la carga de página y se usa para deduplicación de conversiones; no es un identificador persistente de usuario.
No incluye noscript de GTM para evitar una carga alternativa sin el control de consentimiento JavaScript.
El diagnóstico está limitado a administradores con nonce válido y solicita no almacenar la respuesta en caché. Excluye ndc_debug de la caché/CDN del sitio.
Los eventos de diagnóstico usan ndc_debug_ y ndc_test=true. Las etiquetas de terceros con otros activadores aún podrían dispararse: utiliza un contenedor de pruebas.
La detección de GTM duplicado es orientativa: detecta scripts estándar visibles y contenedores en ejecución; no todos los scripts retrasados, ofuscados, proxies o gestores de caché.

== Alcance de la primera versión ==
Remarketing estándar: visitas y acciones. No incluye catálogo, remarketing dinámico, WooCommerce/ecommerce ni audiencias creadas automáticamente. La extensión Google añade conversiones mejoradas web y fases offline por API, con comprobación del procesamiento. No confirma la atribución publicitaria.
Instalación por sitio. La activación y desinstalación en red multisite no forman parte de esta versión.
La entrega incluye la guía y el código fuente. Antes de instalar en clientes, valida en una web de pruebas con los formularios y la CMP reales.

== Google Ads y Google Sheets (0.3.0) ==
Guía: docs/google-ads-sheets.html. Plantilla: docs/NDC-Medicion-Contactos.xlsx.
Desde NDC · Medición > Google Ads y contactos configura formularios y campos, elige GTM o etiqueta directa, autoriza Google y pega la URL de la hoja.
OAuth: Google Sheets API + Data Manager API. Cada instalación necesita un cliente OAuth preparado y su URI de redirección registrada. No se distribuyen secretos.
Conversión web: ndc_form_success + ndc_user_data (SHA-256) para GTM, o etiqueta directa con AW y label.
Fases comerciales: Nuevo, Contactado, Cualificado, Ganado y Perdido. Solo Cualificado y Ganado envían eventos por API; se exige fecha real, y Ganado requiere importe.
No conectar la misma hoja simultáneamente al importador automático de Google Ads.
Por defecto modo validación (validateOnly). Los administradores no se guardan como leads.
Conector conservador: solo guarda/envía leads con ad_storage y ad_user_data concedidos; no sustituye un CRM general de todos los contactos.
WP-Cron revisa aproximadamente cada 5 minutos, sujeto a tráfico. Lotes de hasta 20 registros/35 segundos con cursor. En volumen alto, validar capacidad o adaptar la cola antes del despliegue.
Conservación por defecto 90 días en WordPress; eliminación automática de la cola local al sincronizar. Hoja y conversiones Google se gestionan aparte.
Si cambian las claves de autenticación de WordPress no se podrán descifrar datos antiguos. Copias de seguridad y políticas de retención son responsabilidad del administrador.
Los consentimientos se conservan como señales declaradas por la integración de la web; no son certificación legal.
Reembolsos, correcciones de valor, retirada retroactiva de conversiones, reintento de rechazos asíncronos y conexión OAuth centralizada de agencia quedan fuera de 0.3.0.
Versión candidata para pruebas supervisadas. Validar con la cuenta Google, la CMP y las versiones reales de los formularios antes de distribuir a clientes.

== Changelog ==
= 0.3.0 =
Conversiones mejoradas web, etiqueta directa opcional, captura de formularios confirmados, OAuth, Google Sheets, Data Manager API, cifrado, deduplicación por fase y diagnósticos de procesamiento.

= 0.2.0 =
Banner opcional, preferencias por finalidad, carga básica/avanzada, plantilla GTM, diagnóstico ampliado y guía de consentimiento. Actualización conserva CMP externa por defecto.

= 0.1.0 =
Primera versión: GTM, eventos, diagnóstico privado, branding NDC y soporte de Consent Mode v2.
