=== NDC Meta — Píxel y API de conversiones ===
Contributors: niveldecalidad
Requires at least: 6.4
Requires PHP: 7.4
Stable tag: 0.1.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Plugin independiente del tema para conectar WordPress con Meta. Versión beta.

== Qué incluye ==
* Píxel + Conversions API con identificadores comunes para deduplicación.
* Consentimiento denegado por defecto. Adaptadores NDC Consent 0.2+, Complianz y API para otro banner.
* Formularios AJAX confirmados: Contact Form 7, Elementor Pro y WPForms.
* Clics separados de WhatsApp y teléfono (no son conversaciones ni llamadas completadas).
* WooCommerce: productos simples, carrito AJAX clásico, inicio de checkout y compras pagadas desde el servidor.
* Token solo en servidor, pantalla de prueba sintética, registro sin datos personales y reintentos limitados.
* No añade un banner ni depende de Divi, Elementor o WooCommerce para la medición general.

== Instalación ==
1. WordPress > Plugins > Añadir nuevo > Subir plugin > selecciona el ZIP.
2. Activa y abre Ajustes > NDC Meta. La medición está desactivada inicialmente.
3. Introduce ID del píxel, token y código de Probar eventos de Meta.
4. Guarda. Envía la prueba sintética y comprueba su recepción en Meta.
5. Configura el origen del consentimiento y activa la medición en modo Pruebas.
6. Valida consentimiento, formulario, carrito y compra con tu configuración real.
7. Desactiva instalaciones equivalentes de Meta en GTM y otros plugins. Cambia a Producción.

== Alcance y compatibilidad ==
Funciona mediante hooks estándar de WordPress y no depende del tema. Los temas deben ejecutar wp_head/wp_footer correctamente. WordPress multisitio: activar/configurar por sitio; no se ofrece activación de red en esta versión.
Los formularios de Divi y otros sistemas necesitan confirmar su éxito mediante NDCMeta.formSuccess('identificador'). Un submit o clic en botón no sirve como confirmación.
Los tres adaptadores de formularios incluidos utilizan eventos JavaScript de éxito AJAX. Su envío a CAPI comienza desde esa señal del navegador y puede perderse si el navegador la bloquea. No lee ni envía el contenido del formulario.
WooCommerce usa el total y la moneda del pedido y espera confirmación de pago. Transferencia, cheque y contra reembolso esperan estado completado y fecha de pago. Consentimiento capturado en checkout y aún vigente (24 horas). No reenvía pedidos históricos.
Se contemplan los hooks de checkout clásico, Blocks y HPOS. No se incluye captura automática de carrito Blocks, productos variables, suscripciones, renovaciones, reembolsos, pedidos manuales ni reservas de otro motor. Probar con el gateway, la versión y el checkout reales antes de producción.
La deduplicación solo coordina eventos de este módulo. No puede corregir otras instalaciones de píxel ni garantizar atribución de todos los eventos.

== Consentimiento ==
Automático: NDC Consent disponible o Complianz. Sin CMP detectado, no envía.
Otro banner: seleccionar Personalizado y llamar NDCMeta.setConsent(true) exclusivamente al aceptar publicidad. Llamar false al rechazar o revocar y restaurar el estado en cada navegación. No hay bypass de consentimiento.
NDC Medición 0.1 no incluye el banner NDC; para ese plugin usa el banner externo de tu web o NDC Medición 0.2+ con el banner habilitado.
Ver guía HTML para cookies, retención, APIs y diagnóstico.

== Servicios externos ==
Con permiso publicitario y medición activa se conecta con Meta: connect.facebook.net (píxel, solo producción) y graph.facebook.com (eventos del servidor). Meta recibe eventos, URL sin query desde CAPI, IP, agente de navegador, fbp/fbc si existen, y datos de producto/importe cuando corresponde. Coincidencia avanzada de compras opcional: email y teléfono internacional normalizados y con SHA-256. El hash no convierte estos identificadores en datos anónimos.
Condiciones de Meta: https://www.facebook.com/legal/technology_terms
Privacidad de Meta: https://www.facebook.com/privacy/policy/
El token se guarda en una opción privada sin autoload (legible por administradores de la base de datos) o puede definirse con NDC_META_ACCESS_TOKEN en wp-config.php. Nunca aparece en el HTML público, los registros ni este ZIP.

== Reintentos y datos temporales ==
WP-Cron ejecuta la cola. Configura cron real en sitios sin tráfico o con DISABLE_WP_CRON. Máximo cuatro intentos, ventana de una hora; se cancela al retirar el consentimiento o cambiar cuenta/modo. Una API que acepta un evento no garantiza su atribución publicitaria.
Cookie ndcm_permission: firmada, HttpOnly, SameSite=Lax, Secure con HTTPS; máximo 24h. Se crea tras el consentimiento. La autorización y el contexto de checkout caducan a las 24h. La cola tiene vigencia de una hora. La eliminación física depende de cron/limpieza de transients. Solo quedan hasta 50 registros de estados sin payload ni PII.
Al desactivar: cancela cola y elimina contexto temporal propio. Al eliminar: borra ajustes, token, cola, transients y diagnóstico; conserva los ID de evento de pedidos para deduplicación y nunca borra pedidos. Las cookies del navegador expiran por sí solas.

== Estado de validación ==
Beta con pruebas locales automatizadas en WordPress y navegador. Transporte Meta simulado: no se han utilizado credenciales reales ni se ha validado una cuenta Meta. Los contratos WooCommerce se prueban con dobles de sus objetos, no con una pasarela real. Revisa docs/VALIDACION.txt y valida la instalación en Meta antes de producción.

== Changelog ==
= 0.1.0 =
Primera beta funcional. Píxel, CAPI, consentimiento, eventos y diagnóstico.
