Cómo medir los leads y las ventas de Tu propia aplicación
Mide las altas de tu SaaS o web propia, atribuidas al link que las trajo.
EN RESUMEN
| Qué mide NEMO | Leads · Ventas |
|---|---|
| Conexión | Nativa — se activa desde la app de NEMO |
| Método | «El campo oculto del formulario» · Server-side · máxima fiabilidad |
| Pasos | 3 en total, con comprobación de un minuto al final |
| A tener en cuenta | EL nm_id ES OPCIONAL: si tu backend no lo tiene a mano, quítalo del cuerpo. El alta entra igual y se ve en Inicio, solo que «sin origen» — nunca es un error. Para que SÍ lo tenga, guarda en el alta el valor de window.nemo.id() (campo oculto del formulario, o una línea más en el cuerpo de tu fetch). |
Con Tu propia aplicación, NEMO mide qué link trae cada lead y qué link trae cada venta sin píxeles ni Google Analytics. Saber qué link tuyo trajo a cada persona que se da de alta o compra en tu propia aplicación, sin depender de Kit ni de una pasarela. Dos pasos. Pegas el script en tu web y, cuando el alta se confirma, tu servidor avisa a NEMO. Nada más: el email lo hashea NEMO con la clave de tu workspace y no hay ningún secreto que calcular. El método es «El campo oculto del formulario» (server-side · máxima fiabilidad): Tu formulario lleva un campo invisible (nemo_click_id) que viaja con cada alta hasta tu plataforma de email. NEMO lo recibe de servidor a servidor: el lead llega ya atribuido a su link de origen. EL nm_id ES OPCIONAL: si tu backend no lo tiene a mano, quítalo del cuerpo. El alta entra igual y se ve en Inicio, solo que «sin origen» — nunca es un error. Para que SÍ lo tenga, guarda en el alta el valor de window.nemo.id() (campo oculto del formulario, o una línea más en el cuerpo de tu fetch). La conexión completa son 3 pasos y se comprueba con un clic de prueba.
¿Cómo llega cada lead de Tu propia aplicación con su origen?
El campo oculto del formulario · Server-side · máxima fiabilidad
Dos pasos. Pegas el script en tu web y, cuando el alta se confirma, tu servidor avisa a NEMO. Nada más: el email lo hashea NEMO con la clave de tu workspace y no hay ningún secreto que calcular.
- Pega el script de NEMO en tu web — en la landing y en la app, una vez por página:
<script src="https://nemolink.app/nemo.js" defer></script> - Cuando tu servidor confirma el alta, avisa a NEMO. Tu URL de ingest lleva el token dentro (la tienes en la tarjeta «Tu propia aplicación» de Integraciones) — trátala como un secreto:
await fetch("https://nemolink.app/api/ingest/TU_TOKEN", { method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify({ event: "lead", email: usuario.email, nm_id: alta.nm_id }), });
Nota: EL nm_id ES OPCIONAL: si tu backend no lo tiene a mano, quítalo del cuerpo. El alta entra igual y se ve en Inicio, solo que «sin origen» — nunca es un error. Para que SÍ lo tenga, guarda en el alta el valor de window.nemo.id() (campo oculto del formulario, o una línea más en el cuerpo de tu fetch).
Nota: SI TU APP VIVE EN OTRO DOMINIO que tu landing (la landing en criptoterminal.com y la app en app.otro.com), declara el salto una vez en tu web: window.nemo.hosts(['app.otro.com']). Entre subdominios del mismo dominio no hace falta.
Nota: LA IDENTIDAD ES EL EMAIL, en claro. Como la llamada va autenticada por tu token, NEMO lo hashea con la clave de TU workspace (la misma identidad que ya usan los webhooks de Stripe o Kit) y no lo guarda en claro. No tienes que calcular nada.
Nota: CASO AVANZADO — si NO quieres mandar emails: manda un `external_id` OPACO en su lugar (HMAC de tu id interno con un secreto tuyo, en hex; nunca el email, un id numérico ni un uuid del payload). Es opcional: el email es el camino normal.
Nota: QUÉ GUARDAR en tu base de datos: el nm_id JUNTO al registro del usuario (una columna al lado del alta). Las UTM son TUYAS — NEMO no las necesita; guárdalas si las quieres para tu propia analítica.
Nota: CUÁNTO DURA: el ancla del origen vive 90 días en el navegador (lo que declara /legal/cookies). En el plan free ves 30 días de histórico en el panel; el dato se guarda igual, es la ventana visible la que se acorta.
Nota: EL LÍMITE DE hosts propios usa una lista de sufijos públicos RECORTADA (las familias de uso real: .co.uk, .com.br, .com.mx, .com.ar…), no la lista completa. Cubre la práctica totalidad de los dominios; si el tuyo es un ccTLD raro que no salta solo, decláralo con window.nemo.hosts(['tu.dominio']).
Nota: ¿PREFIERES QUE LO CABLEE TU ASISTENTE de código? La tarjeta «Tu propia aplicación» de Integraciones trae un mensaje listo para pegar en Claude Code o Cursor, con tu URL real ya dentro.
Nota: PRIVACIDAD — LO TUYO, QUE AQUÍ SON DOS TRATAMIENTOS: respondes del de tu WEB (donde corre nemo.js) y del de tu BACKEND (donde guardas el nm_id junto al usuario). El nm_id en tu base es un DATO PERSONAL SEUDONIMIZADO mientras puedas cruzarlo con tu tabla de usuarios: nómbralo en tu política de privacidad y en tu registro de actividades de tratamiento, aplícale tu base jurídica y tu plazo de conservación, y trátalo con el mismo cuidado que el resto de la ficha del usuario. NEMO recibe de ti el email para hashearlo con la clave de tu workspace —no lo persiste en claro— y el origen del click.
¿Cómo se atribuye cada venta de Tu propia aplicación?
El campo oculto del formulario · Server-side · máxima fiabilidad
La misma llamada, con event: "sale" y el importe en céntimos. Es una fuente AUTENTICADA (tu token), así que la venta cuenta de verdad — mueve dinero en tu panel.
- Cuando tu backend confirma un cobro, avisa igual que el alta pero como venta:
await fetch("https://nemolink.app/api/ingest/TU_TOKEN", { method: "POST", headers: { "content-type": "application/json" }, // el MISMO email del alta, y el importe en céntimos body: JSON.stringify({ event: "sale", email: usuario.email, amount_cents: 4900, nm_id: alta.nm_id }), });
Nota: El mismo email (o el mismo external_id, si usas el caso avanzado) para el alta y para la compra: así NEMO une el lead y la venta de esa persona. El email se hashea; no se guarda en claro.
Compruébalo en un minuto
- En la tarjeta «Tu propia aplicación» de Integraciones, pulsa «Enviar prueba»: recorre el circuito real y te dice qué se aceptó.
- Con un nm_id que resuelve, la respuesta trae "attributed": true; si trae "attributed": false, el que falla es el nm_id (caducado o no capturado), no tu llamada.
- Un alta de prueba desde tu backend devuelve {"ok":true} y aparece en Inicio, atribuida a su link. Manda otra SIN nm_id: también devuelve {"ok":true} y entra «sin origen».
Preguntas frecuentes
- ¿Qué hago si el alta entra pero llega «sin origen» (attributed:false)?
- El nm_id no llegó o no resuelve. Revisa que el frontend lo capture (window.nemo.id()) y lo pase a tu backend, y que el link fuera de NEMO. La llamada está bien; es el origen lo que falta.
- ¿Qué hago si la respuesta dice que mande el email de la persona?
- Falta el campo `email` (o llegó vacío o mal escrito). Es el único campo de identidad que necesitas: NEMO lo hashea con la clave de tu workspace y no lo guarda en claro. Si estás en el caso avanzado, el `external_id` tiene que ser opaco de verdad — la respuesta te dice cómo.
- ¿Qué hago si la respuesta dice que esa URL de ingest no existe?
- El token de tu URL no es válido (o lo rotaste). Copia la URL actual desde la tarjeta «Tu propia aplicación».
- ¿Qué hago si el nm_id no salta de mi landing a mi app en otro dominio?
- nemo.js solo decora hosts de tu MISMO dominio registrable. Si la app vive en otro dominio, decláralo: window.nemo.hosts(['app.otro.com']).
FUENTES OFICIALES
Guía verificada contra la documentación oficial el 2026-09-11.
TAMBIÉN SE INTEGRA CON
Mide Tu propia aplicación desde tu primer link.
Gratis durante el acceso anticipado. Los primeros usuarios tendrán condiciones especiales cuando lancemos los planes.