feat: prepare privacy-first analytics integration

This commit is contained in:
Manuel
2026-07-21 00:44:41 +02:00
parent 552f0fa576
commit 0e97c8af1c
4 changed files with 74 additions and 43 deletions
+10 -9
View File
@@ -1,26 +1,27 @@
<div class="cookie-banner" id="cookieBanner" aria-live="polite">
<div class="cookie-banner-inner">
<p class="cookie-text">
Usamos cookies técnicas necesarias para el funcionamiento del sitio.
Consulte nuestra <a href="/cookies">Política de Cookies</a> y <a href="/privacidad">Privacidad</a>.
Este sitio utiliza almacenamiento técnico necesario para funcionar y mostrar este aviso.
Si en el futuro activamos analítica respetuosa con la privacidad o medidas antiabuso,
lo detallaremos en <a href="/cookies">Cookies</a> y <a href="/privacidad">Privacidad</a>.
</p>
<div class="cookie-actions">
<a href="/cookies" class="btn-underline cookie-more" style="font-size:0.65rem;">Más info</a>
<button id="cookieAccept" class="btn btn-primary cookie-accept">Aceptar</button>
<a href="/cookies" class="btn-underline cookie-more" style="font-size:0.65rem;">Ver detalle</a>
<button id="cookieDismiss" class="btn btn-primary cookie-dismiss">Entendido</button>
</div>
</div>
</div>
<script>
const banner = document.getElementById('cookieBanner')!;
const accept = document.getElementById('cookieAccept')!;
const dismiss = document.getElementById('cookieDismiss')!;
if (localStorage.getItem('mnq_cookie_consent') === 'accepted') {
if (localStorage.getItem('mnq_privacy_notice_dismissed') === 'true') {
banner.style.display = 'none';
}
accept.addEventListener('click', () => {
localStorage.setItem('mnq_cookie_consent', 'accepted');
dismiss.addEventListener('click', () => {
localStorage.setItem('mnq_privacy_notice_dismissed', 'true');
banner.classList.add('cookie-hide');
setTimeout(() => banner.style.display = 'none', 400);
});
@@ -81,7 +82,7 @@
font-size: 0.65rem;
}
.cookie-accept {
.cookie-dismiss {
font-size: 0.7rem;
padding: 0.5rem 1.25rem;
min-height: 36px;
+18
View File
@@ -57,6 +57,15 @@ const structuredDataScripts = [
? [structuredData]
: []) as Array<Record<string, unknown>>),
];
const umamiHost = Astro.site ? Astro.site.origin : 'https://mnq.elkazurrotaberna.es';
const rawUmamiUrl = Astro.url ? import.meta.env.PUBLIC_UMAMI_URL : undefined;
const umamiWebsiteId = import.meta.env.PUBLIC_UMAMI_WEBSITE_ID;
const normalizedUmamiUrl = rawUmamiUrl
? rawUmamiUrl.startsWith('http://') || rawUmamiUrl.startsWith('https://')
? rawUmamiUrl
: `https://${rawUmamiUrl}`
: undefined;
const shouldLoadUmami = Boolean(normalizedUmamiUrl && umamiWebsiteId);
---
<!doctype html>
@@ -94,6 +103,15 @@ const structuredDataScripts = [
href="https://fonts.googleapis.com/css2?family=Noto+Serif:ital@0;1&family=Inter:wght@400;500;600&display=swap"
/>
</noscript>
{shouldLoadUmami && (
<script
async
defer
src={`${normalizedUmamiUrl}/script.js`}
data-website-id={umamiWebsiteId}
data-domains={umamiHost.replace(/^https?:\/\//, '')}
></script>
)}
{
structuredDataScripts.map((schema) => (
<script is:inline type="application/ld+json" set:html={JSON.stringify(schema)} />
+23 -17
View File
@@ -18,31 +18,37 @@ import MainLayout from '../layouts/MainLayout.astro';
<div class="privacy-content">
<h2>¿Qué son las cookies?</h2>
<p>Las cookies son pequeños archivos de texto que los sitios web almacenan en su dispositivo cuando los visita. Permiten que el sitio recuerde sus preferencias y mejore su experiencia de navegación.</p>
<p>Las cookies y tecnologías similares son pequeños mecanismos de almacenamiento o lectura en su navegador o dispositivo. Sirven para que un sitio funcione correctamente, recuerde ciertos estados técnicos o, si se habilita, obtenga métricas agregadas de uso.</p>
<h2>Cookies que utilizamos</h2>
<p>Este sitio web utiliza exclusivamente cookies técnicas estrictamente necesarias:</p>
<h2>Tecnologías necesarias del sitio</h2>
<p>Actualmente este sitio se apoya en almacenamiento técnico estrictamente necesario para mostrar y recordar el estado del aviso informativo de privacidad.</p>
<div class="cookie-table">
<div class="cookie-row cookie-header">
<span>Cookie</span>
<span>Tecnología</span>
<span>Finalidad</span>
<span>Duración</span>
</div>
<div class="cookie-row">
<span><code>mnq_cookie_consent</code></span>
<span>Recuerda si ha aceptado esta política de cookies</span>
<span>1 año</span>
<span><code>mnq_privacy_notice_dismissed</code> (localStorage)</span>
<span>Recuerda si ya se ha ocultado el aviso informativo para no mostrarlo en cada visita</span>
<span>Hasta que se elimine en el navegador</span>
</div>
</div>
<p>No utilizamos cookies de analítica, publicidad, seguimiento ni de redes sociales de terceros.</p>
<p>En este momento no cargamos herramientas de publicidad comportamental ni de perfilado comercial.</p>
<h2>Cookies de terceros</h2>
<p>Si hace clic en el enlace de WhatsApp, será redirigido a la plataforma de WhatsApp (Meta), que tiene su propia política de privacidad y cookies. No tenemos control sobre las cookies que WhatsApp pueda establecer en su dispositivo.</p>
<h2>Analítica respetuosa con la privacidad</h2>
<p>El sitio puede quedar preparado para activar <strong>Umami</strong> como herramienta de analítica orientada a métricas agregadas y de bajo impacto en la privacidad. Mientras esa analítica no esté habilitada, no se realiza esa medición desde el propio sitio.</p>
<h2>Cómo gestionar las cookies</h2>
<p>Puede configurar su navegador para rechazar todas las cookies o para que le avise cuando se envíe una cookie. Sin embargo, si desactiva las cookies técnicas, algunas partes del sitio podrían no funcionar correctamente.</p>
<h2>Prevención de abuso y spam</h2>
<p>También podemos habilitar medidas técnicas de protección frente a abuso, fraude o envíos automatizados, por ejemplo mediante <strong>Cap</strong> u otra capa equivalente. Si se activa, se utilizará con la finalidad exclusiva de proteger el servicio y reducir tráfico malicioso o spam.</p>
<h2>Terceros y redirecciones</h2>
<p>Si hace clic en los enlaces de WhatsApp, saldrá de este sitio y accederá a la plataforma de WhatsApp o a servicios de Meta. Ese tercero aplica sus propias condiciones, política de privacidad y política de cookies, sobre las que no tenemos control.</p>
<h2>Cómo gestionar este almacenamiento</h2>
<p>Puede borrar las cookies o el almacenamiento local desde la configuración de su navegador. Si elimina el almacenamiento técnico de este sitio, el aviso volverá a mostrarse en una visita posterior.</p>
<p>Instrucciones para los navegadores más comunes:</p>
<ul>
<li><strong>Chrome:</strong> Configuración → Privacidad y seguridad → Cookies</li>
@@ -51,10 +57,10 @@ import MainLayout from '../layouts/MainLayout.astro';
<li><strong>Edge:</strong> Configuración → Privacidad, búsqueda y servicios</li>
</ul>
<h2>Retirar el consentimiento</h2>
<p>Puede retirar su consentimiento en cualquier momento eliminando las cookies de su navegador o haciendo clic en el botón a continuación:</p>
<h2>Volver a mostrar el aviso</h2>
<p>Este sitio no utiliza un panel de configuración de consentimiento. Si desea volver a ver el aviso informativo, puede restablecer ese estado técnico aquí:</p>
<button id="resetCookies" class="btn btn-outline" style="width: fit-content; margin-top: var(--space-2);">
Restablecer preferencias de cookies
Restablecer aviso de privacidad
</button>
<h2>Más información</h2>
@@ -73,8 +79,8 @@ import MainLayout from '../layouts/MainLayout.astro';
<script>
document.getElementById('resetCookies')?.addEventListener('click', () => {
localStorage.removeItem('mnq_cookie_consent');
alert('Preferencias restablecidas. La próxima vez que visites el sitio verás el aviso de cookies.');
localStorage.removeItem('mnq_privacy_notice_dismissed');
alert('Aviso restablecido. La próxima vez que visites el sitio volverás a verlo.');
});
</script>
+23 -17
View File
@@ -24,32 +24,35 @@ import MainLayout from '../layouts/MainLayout.astro';
Sitio web: <a href="https://mnq.elkazurrotaberna.es">mnq.elkazurrotaberna.es</a>
</p>
<h2>2. Datos que Recopilamos</h2>
<p>Recopilamos los siguientes datos personales cuando usted completa nuestro formulario de contacto o se comunica con nosotros:</p>
<h2>2. Datos que tratamos</h2>
<p>Podemos tratar datos personales cuando usted contacta con nosotros por teléfono, WhatsApp o mediante los canales habilitados en el sitio web, así como datos técnicos mínimos derivados de la navegación.</p>
<ul>
<li>Nombre y apellidos</li>
<li>Correo electrónico</li>
<li>Número de teléfono (si nos contacta por WhatsApp)</li>
<li>Información sobre el evento (tipo, fecha estimada, requerimientos)</li>
<li>Datos identificativos y de contacto que usted nos facilite</li>
<li>Información sobre su evento, solicitud o presupuesto</li>
<li>Datos técnicos básicos necesarios para operar y proteger el sitio</li>
<li>Métricas agregadas de uso, solo si en el futuro se habilita una analítica respetuosa con la privacidad</li>
</ul>
<h2>3. Finalidad del Tratamiento</h2>
<p>Sus datos se utilizan exclusivamente para:</p>
<h2>3. Finalidades</h2>
<p>Tratamos los datos para:</p>
<ul>
<li>Responder a su solicitud de información o presupuesto</li>
<li>Gestionar la contratación de nuestros servicios de catering</li>
<li>Enviarle comunicaciones relacionadas con su evento</li>
<li>Mantener comunicaciones relacionadas con su evento o consulta</li>
<li>Operar correctamente el sitio web y mantener su seguridad</li>
<li>Analizar el uso general del sitio, únicamente si se activa una herramienta de medición orientada a privacidad</li>
<li>Prevenir abuso, fraude técnico, spam o tráfico automatizado malicioso si se habilitan controles específicos para ello</li>
</ul>
<p>No utilizamos sus datos para envío de publicidad no solicitada.</p>
<p>No utilizamos sus datos para publicidad comportamental, elaboración de perfiles comerciales ni decisiones automatizadas con efectos relevantes sobre usted.</p>
<h2>4. Base Legal</h2>
<p>El tratamiento de sus datos se basa en su consentimiento explícito al enviarnos el formulario de contacto, y en la ejecución de un contrato de servicios cuando decide contratar con nosotros.</p>
<p>La base jurídica del tratamiento puede ser su consentimiento cuando nos contacta voluntariamente, la aplicación de medidas precontractuales o contractuales cuando solicita o contrata un servicio, y el interés legítimo para la operación segura del sitio, la prevención del abuso y la obtención de métricas técnicas no invasivas cuando esas funciones estén activadas.</p>
<h2>5. Conservación de los Datos</h2>
<p>Conservamos sus datos durante el tiempo necesario para gestionar su solicitud y, en caso de contratación, durante el plazo legal exigido por la normativa fiscal y mercantil (hasta 6 años).</p>
<p>Conservamos sus datos durante el tiempo necesario para gestionar su solicitud, la relación comercial y las obligaciones legales aplicables. Los datos técnicos o métricas agregadas, en su caso, se conservarán durante el tiempo razonablemente necesario para fines operativos, estadísticos o de seguridad.</p>
<h2>6. Destinatarios</h2>
<p>Sus datos no se ceden ni venden a terceros. Únicamente podrán ser comunicados a proveedores de servicios imprescindibles para la prestación del servicio contratado (plataformas de mensajería como WhatsApp Business, gestión de correo electrónico), siempre bajo acuerdos de confidencialidad.</p>
<p>No vendemos sus datos a terceros. Podrán acceder a ellos proveedores necesarios para la prestación del servicio o para la operativa del sitio, como servicios de mensajería, alojamiento, correo o herramientas técnicas de medición y protección cuando estén habilitadas, siempre dentro del marco contractual y legal correspondiente.</p>
<h2>7. Sus Derechos</h2>
<p>Conforme al Reglamento General de Protección de Datos (RGPD) y la Ley Orgánica 3/2018, usted tiene derecho a:</p>
@@ -65,13 +68,16 @@ import MainLayout from '../layouts/MainLayout.astro';
También puede presentar una reclamación ante la <a href="https://www.aepd.es" target="_blank" rel="noreferrer">Agencia Española de Protección de Datos (AEPD)</a>.
</p>
<h2>8. Cookies</h2>
<p>Este sitio web utiliza únicamente cookies técnicas necesarias para su funcionamiento. Consulte nuestra <a href="/cookies">Política de Cookies</a> para más información.</p>
<h2>8. Sitio web, analítica y protección frente a abuso</h2>
<p>El sitio utiliza almacenamiento técnico necesario para su funcionamiento básico y para recordar el estado del aviso informativo. Además, puede quedar preparado para activar analítica respetuosa con la privacidad, como Umami, y mecanismos de prevención de abuso o spam, como Cap. Cuando esas herramientas se habiliten, se utilizarán con finalidades limitadas de funcionamiento, medición general del sitio y protección del servicio, sin destinarse a publicidad comportamental.</p>
<h2>9. Seguridad</h2>
<h2>9. WhatsApp y servicios de terceros</h2>
<p>Si decide contactar con nosotros a través de WhatsApp, su comunicación pasará a estar sujeta también a las condiciones y políticas de ese tercero. Le recomendamos revisarlas antes de compartir datos adicionales por ese canal.</p>
<h2>10. Seguridad</h2>
<p>Adoptamos medidas técnicas y organizativas adecuadas para proteger sus datos personales frente a accesos no autorizados, pérdida o destrucción.</p>
<h2>10. Cambios en esta Política</h2>
<h2>11. Cambios en esta Política</h2>
<p>Podemos actualizar esta política ocasionalmente. Le notificaremos cualquier cambio significativo publicando la nueva versión en esta página con la fecha de actualización.</p>
</div>