limecountDocumentaciónVolver al panel

docsMedirEventos personalizados

Eventos personalizados

Un evento es una acción que tu web avisa a Limecount que ha ocurrido. Por ejemplo, un clic en «Contactar» o un registro completado. No se crea ni se instala un evento al escribir su nombre en Objetivos: primero tienes que configurar tu web para enviarlo.

Esta guía usa dos nombres de ejemplo:

Acción Nombre que envía el código Qué significa
Pulsar un botón clic_contacto Se ha pulsado; no confirma que se haya enviado un formulario
Terminar un registro registro_completado Tu aplicación ya ha confirmado que el registro salió bien

El nombre debe ser fijo para todas las personas. No añadas emails, nombres de clientes, números de pedido ni identificadores. Los eventos personalizados solo se envían en el modo ampliado habilitado y aceptado. En básico se cuentan páginas vistas, no estas acciones.

1. Prepara la web en el panel

  1. Selecciona la web correcta en la barra superior.
  2. Abre Ajustes de la web → Modos de medición.
  3. Activa Permitir analítica ampliada tras aceptar y guarda. El cambio del servidor puede tardar hasta un minuto.
  4. Pulsa Ver código de instalación en esa sección. Si acabas de añadir la web, ya estás en la pantalla de instalación.
  5. Copia el script de esa web. Tendrás que modificar esa misma etiqueta en tu página: no instales un segundo tracker.

Necesitas poder editar el HTML o el código de tu web. Crear un objetivo en Limecount no modifica tu web, WordPress ni tu aplicación automáticamente.

2. Declara los eventos en el script

En la etiqueta que has copiado, añade los nombres en data-events. Para este ejemplo:

data-events="clic_contacto,registro_completado"

El atributo va dentro de la etiqueta <script> del tracker, junto a data-key y data-host. No se pega como una línea suelta en el HTML. La lista separada por comas permite esos nombres; si añades otro evento después, actualiza también esta lista.

Esta sería la etiqueta completa del ejemplo:

<script
  defer
  referrerpolicy="no-referrer"
  crossorigin="anonymous"
  data-key="lc_xxxxxxxxxxxxxxxxxxxx"
  data-host="tu-web.example"
  data-enhanced="1"
  data-paths="/,/contacto,/registro,/gracias"
  data-events="clic_contacto,registro_completado"
  data-props='{"ubicacion":["cabecera","pie"],"plan":["starter","pro"]}'
  src="https://lmcnt.eu/s.js"
></script>

Sustituye data-key, data-host y src por los valores reales del código de instalación de tu web. La clave es pública; no uses una contraseña ni una clave privada. Conserva los demás atributos de tu instalación. Las sesiones temporales (data-sessions="1") son opcionales y no son necesarias para registrar un evento.

data-paths declara las rutas que quieres distinguir; las desconocidas se agrupan como /:redacted, sin impedir por ello que llegue un evento permitido. data-props declara categorías opcionales. Aquí solo se admiten ubicacion: 'cabecera' o 'pie', y plan: 'starter' o 'pro'. Los valores no declarados se omiten; no se envía texto libre. Consulta limpieza antes del envío.

3. Conecta la aceptación del visitante

data-enhanced="1" permite usar el ampliado, pero no significa que la persona haya aceptado. Conecta la categoría de analítica de tu gestor a setConsent:

function comunicarConsentimientoAnalitica(aceptado) {
  const estado = aceptado === true ? 'granted' : 'denied';
  if (window.limecount?.setConsent) {
    window.limecount.setConsent(estado);
  } else {
    window.limecount = window.limecount || {};
    window.limecount.q = window.limecount.q || [];
    window.limecount.q.push(['setConsent', estado]);
  }
}

// Desde los callbacks reales de tu gestor:
// Acepta específicamente analítica -> comunicarConsentimientoAnalitica(true)
// Rechaza o retira el permiso       -> comunicarConsentimientoAnalitica(false)

No llames a la aceptación por cargar la página, seguir navegando o cerrar el aviso. Al recargar, tu gestor debe restaurar una elección válida. El script no muestra un banner en las webs de tus clientes: el aviso de la web de Limecount solo pertenece a Limecount. Tienes el procedimiento completo en modos y consentimiento.

4. Envía un clic desde HTML

Añade data-lc-event al botón que ya tienes en tu web:

<button type="button" data-lc-event="clic_contacto" data-lc-prop-ubicacion="cabecera">
  Contactar
</button>

No necesitas llamar también a track: el tracker detecta el clic y envía un evento clic_contacto. El atributo de propiedad añade la categoría permitida ubicacion: 'cabecera'. Puedes poner los atributos en un enlace existente; seguirá navegando normalmente.

Publica el cambio, acepta analítica mediante tu gestor y pulsa el botón. Un clic en ese botón cuenta una acción, no un formulario completado. No añadas simultáneamente una llamada JavaScript para la misma acción o la contarás dos veces.

5. Envía una acción completada desde JavaScript

Para un registro, un pago u otra operación, inserta esta llamada en el punto de tu código donde tu aplicación ya sabe que la operación terminó correctamente:

window.limecount?.track?.('registro_completado', { plan: 'pro' });

La llamada se coloca en tu aplicación, no en la consola del panel de Limecount. No la ejecutes al cargar la página ni al pulsar «Enviar» antes de conocer el resultado. Si falla la operación, no envíes el evento de éxito.

  • registro_completado debe figurar en data-events con las mismas mayúsculas y minúsculas.
  • { plan: 'pro' } es opcional y debe coincidir en valor y tipo con data-props.
  • El ?. evita romper tu aplicación si el tracker no cargó. No garantiza que se haya enviado nada.
  • Los eventos ocurridos antes de cargar el tracker o antes de aceptar no se recuperan después. No los pongas en una cola para enviarlos retrospectivamente.

Ejemplo completo para probar en una página

Este ejemplo incluye una etiqueta, botones de aceptación/rechazo y dos acciones. Es una página de prueba de integración, no un gestor completo de todas las cookies o finalidades de tu web. No recuerda el permiso al recargar. En producción usa tu gestor habitual, con su información, vigencia y retirada.

Sustituye clave, dominio y URL del script por los de tu instalación y sirve la página desde el dominio autorizado. No basta con abrir un archivo file://. Las pruebas en localhost requieren además la configuración de desarrollo indicada en la guía de instalación.

<!doctype html>
<html lang="es">
  <head>
    <meta charset="utf-8" />
    <title>Prueba de eventos Limecount</title>
    <script
      defer
      referrerpolicy="no-referrer"
      crossorigin="anonymous"
      data-key="lc_xxxxxxxxxxxxxxxxxxxx"
      data-host="tu-web.example"
      data-enhanced="1"
      data-paths="/,/prueba-eventos"
      data-events="clic_contacto,registro_completado"
      data-props='{"ubicacion":["cabecera","pie"],"plan":["starter","pro"]}'
      src="https://lmcnt.eu/s.js"
    ></script>
  </head>
  <body>
    <h1>Prueba de eventos</h1>
    <p>
      El básico cuenta páginas. Si aceptas, esta prueba añade clics y acciones declaradas. Puedes
      retirar pulsando «Rechazar o retirar analítica».
    </p>
    <button type="button" id="aceptar">Aceptar analítica ampliada</button>
    <button type="button" id="rechazar">Rechazar o retirar analítica</button>
    <p id="estado" role="status">Esperando al tracker…</p>

    <button type="button" data-lc-event="clic_contacto" data-lc-prop-ubicacion="cabecera">
      Probar clic de contacto
    </button>
    <button type="button" id="registro-demo">Simular registro completado</button>

    <script>
      function mostrarEstado() {
        const modo = window.limecount?.getMode?.();
        document.getElementById('estado').textContent = modo
          ? 'Modo actual: ' + modo
          : 'El tracker todavía no está disponible.';
      }
      function elegir(estado) {
        if (window.limecount?.setConsent) {
          window.limecount.setConsent(estado);
        } else {
          window.limecount = window.limecount || {};
          window.limecount.q = window.limecount.q || [];
          window.limecount.q.push(['setConsent', estado]);
        }
        mostrarEstado();
      }
      document.getElementById('aceptar').addEventListener('click', () => {
        elegir('granted');
      });
      document.getElementById('rechazar').addEventListener('click', () => {
        elegir('denied');
      });
      document.getElementById('registro-demo').addEventListener('click', () => {
        // Solo simula el éxito para esta prueba. En tu aplicación real,
        // llama a track después de que tu operación confirme el éxito.
        window.limecount?.track?.('registro_completado', { plan: 'pro' });
      });
      document.querySelector('script[data-key]').addEventListener('load', mostrarEstado);
    </script>
  </body>
</html>

Resultado esperado: antes de aceptar, los dos botones de acción no envían eventos personalizados. Después de aceptar y ver Modo actual: enhanced, cada pulsación en contacto envía un clic_contacto; cada pulsación en la simulación envía un registro_completado. Después de rechazar, dejan de enviarse. El botón de simulación no crea ninguna cuenta real.

6. Comprueba que el evento ha llegado

  1. Prueba en tu web publicada, con la etiqueta actualizada, el tracker cargado y la analítica aceptada.
  2. Si necesitas diagnosticarlo, abre las herramientas del navegador en tu web, no en el panel. En la consola, window.limecount?.getMode?.() debe devolver enhanced para enviar eventos personalizados.
  3. En Red / Network, realiza la acción y busca un POST al endpoint de eventos de tu instalación, normalmente /api/e. El cuerpo debe incluir n: "clic_contacto" o n: "registro_completado" y m: "enhanced".
  4. Vuelve al panel, selecciona esa misma web y abre Resumen → Eventos y objetivos → Eventos. Elige un periodo que incluya hoy, quita filtros y actualiza después de unos segundos.

Una respuesta 202 del recolector no demuestra por sí sola que se haya contado: también responde de forma silenciosa a algunos descartes. Comprueba el recuento en el panel. No pegues ni compartas capturas con información personal de tus peticiones.

7. Convierte el evento en un objetivo

Solo si quieres tratar esa acción como conversión:

  1. Abre Objetivos → Nuevo objetivo de esa web.
  2. En Nombre, escribe una etiqueta para el panel, por ejemplo Contactos desde el botón.
  3. En Se cumple cuando, elige Se envía un evento.
  4. En Evento, selecciona clic_contacto. Si no ha llegado todavía, elige Otro nombre… y escribe ese nombre exacto. Si no hay eventos, el formulario permite escribirlo directamente.
  5. Guarda, vuelve a realizar la acción en tu web y consulta el recuento del objetivo.

Nombre del objetivo y nombre del evento son cosas diferentes: puedes llamar al objetivo «Contactos desde el botón», pero el código debe enviar clic_contacto. Crear o cambiar un objetivo no añade nombres a data-events, no instala código y no envía acciones. Las propiedades tampoco crean objetivos separados automáticamente.

También existe el objetivo por página, por ejemplo /gracias, sin evento personalizado. Consulta objetivos.

Si el evento no aparece

Lo que observas Qué revisar
window.limecount no existe Clave, dominio y src reales; script cargado; dominio autorizado; HTTPS y bloqueadores. Espera a que termine de cargar.
getMode() devuelve basic Falta aceptación válida o la etiqueta no tiene data-enhanced="1". Conecta el gestor y actualiza el snippet.
getMode() devuelve off Exclusión, DNT/GPC, ruta excluida o básico desactivado sin permiso ampliado. No fuerces la aceptación para eludir esas señales.
No sale la petición de un evento El nombre no está en data-events, es distinto en mayúsculas/minúsculas, o la acción ocurrió antes de cargar/aceptar.
Sale el evento pero faltan propiedades Clave, valor y tipo deben estar declarados exactamente en data-props. Los atributos HTML son cadenas de texto.
Hay 202 pero no recuento Comprueba modo habilitado en ajustes, dominio, exclusiones, filtros, periodo, cuotas, límites y el tiempo de actualización.
Cuenta dos veces No combines atributo HTML y track() para la misma acción; revisa que tu aplicación solo llame una vez.
Ya había acciones antes de instalar o aceptar No se reconstruyen ni se envían retroactivamente. Haz una acción nueva después de completar la instalación.

Límites y eventos automáticos

Usa nombres en minúsculas como clic_contacto, empezando por una letra y siguiendo con letras, números, _ o -, hasta 64 caracteres. No incluyas secuencias de seis o más dígitos ni datos personales. Los nombres pageview, outbound, download y los que empiezan por _ están reservados para el tracker.

Se admiten hasta diez propiedades categóricas declaradas y un cuerpo total de 2.048 bytes. La protección antes del envío omite lo que no coincide con los catálogos; las claves sensibles también se descartan. No envíes contenido de formularios, emails, teléfonos, cuentas, pedidos, tokens ni valores que identifiquen a una persona.

En ampliado aceptado, outbound mide enlaces externos con una categoría fija, y download mide enlaces a ficheros con una ruta o plantilla permitida. No necesitas declararlos como eventos personalizados. Una acción personalizada recibida cuenta para el límite del plan igual que una página vista; los eventos internos de tiempo o inicio de sesión no son facturables.

Las condiciones de privacidad, exclusiones y consentimiento siguen aplicándose: registrar un evento no concede una exención legal ni garantiza anonimización. Consulta limpieza antes del envío y texto para tu política.