Saltar al contenido

Instala el SDK del navegador

Instala el SDK una vez mediante el mecanismo global de scripts de tu framework. La etiqueta siguiente es para HTML plano.

Script del SDK<script async src="https://cdn.splendorize.com/splendorize.js" data-site="pub_YOUR_SITE_KEY" ></script>

Los frameworks gestionan el head del documento. En Next.js App Router, usa next/script en el layout raíz. No renderices un head personalizado ni inyectes esta etiqueta con dangerouslySetInnerHTML.

Next.js App Routerimport Script from "next/script"; <Script id="splendorize-analytics" src="https://cdn.splendorize.com/splendorize.js" data-site="pub_YOUR_SITE_KEY" strategy="afterInteractive" />

Si puede haber llamadas antes de que cargue el SDK, copia desde la sección Tracking de tu proyecto el loader personalizado que las pone en cola de forma segura.

Abrir Splendorize

Llama a los dos métodos principales

window.splendorize.action("start_trial");

Una acción o decisión relevante del visitante.

window.splendorize.conversion("trial_started");

Un resultado completado, solo después de que la aplicación confirme el éxito.

Registra acciones

Usa JavaScript para comportamientos relevantes sin una activación equivalente en el DOM. Para enlaces, botones, controles y formularios, añade atributos HTML en su lugar.

Método JavaScript

Llama a action()

Para comportamientos relevantes sin una activación equivalente en el DOM.

JavaScript
window.splendorize.action(
  "change_billing_period",
  { placement: "pricing" },
);

Atributos HTML

Anota el elemento

Para enlaces, botones, controles y formularios. Splendorize sigue automáticamente su ciclo existente.

HTML
<a
  href="/signup"
  data-splendorize-action="start_trial"
  data-splendorize-action-placement="hero"
>
  Start trial
</a>

<form data-splendorize-action="request_demo">
  <!-- Existing fields and submit button -->
</form>

Los atributos HTML son para acciones, no para conversiones.

No existe data-splendorize-conversion. Usa conversion() después de confirmar el resultado, o la API de servidor cuando lo confirme tu backend.

Reglas para las acciones

  • Usa una clave de propósito en minúsculas que empiece por una letra, contenga letras, números y guiones bajos simples, y no supere los 64 caracteres.
  • Reutiliza la misma clave en distintas ubicaciones. Anota un formulario una sola vez, en el propio formulario, y nunca añadas una llamada programática para el mismo gesto.
  • Nunca generes claves ni ubicaciones a partir del texto visible, el idioma, datos del visitante, IDs de cuenta, marcas de tiempo o variantes de experimento.

Conversiones en el navegador

Llama a conversion solo después de que el flujo existente de la aplicación demuestre que se ha completado correctamente; por ejemplo, tras una respuesta satisfactoria de la API o al llegar a un estado que confirme el resultado.

Autoridad
Declarada por el cliente. Una ubicación correcta da significado al evento, pero el código del navegador no puede aportar la autoridad de un servidor autenticado.
Cuándo usarlo
Un registro, trial, alta en una lista de espera o solicitud de demo se ha completado realmente y el navegador es el único punto disponible que confirma el éxito. Nunca la llames en el clic o envío que inicia el proceso.
Resultado confirmado en el navegador
const result = await startTrial();

if (result.trialStarted === true) {
  window.splendorize.conversion("trial_started");
}

API autenticada del servidor

Cuando tu backend controla la transacción que confirma el éxito, envía la conversión mediante POST a /v1/conversion con la clave privada del sitio. Las solicitudes aceptadas devuelven 202. url es obligatorio y debe pertenecer a un dominio permitido del proyecto; name, occurredAt, referrer y los IDs de visitante, sesión y vista de página son opcionales.

Autoridad
Procedencia autenticada a nivel de proyecto. Es más sólida que una declaración del navegador, pero no demuestra la identidad de una persona.
Cuándo usarlo
Tu backend ha confirmado un resultado no relacionado con un pago. Mantén la clave privada en el servidor y elige esta vía en lugar de emitir la misma conversión desde el navegador.
Solicitud de conversión solo desde el servidor
const response = await fetch("https://cdn.splendorize.com/v1/conversion", {
  method: "POST",
  headers: {
    authorization: "Bearer " + process.env.SPLENDORIZE_PRIVATE_SITE_KEY,
    "content-type": "application/json",
  },
  body: JSON.stringify({
    name: "trial_started",
    url: "https://example.com/welcome",
    occurredAt: new Date().toISOString(),
  }),
});

if (response.status !== 202) {
  throw new Error("Splendorize rejected the conversion");
}

Ingresos de Stripe

Conecta Stripe, obtén stripeMetadata() después de que cargue el SDK del navegador y valida en tu backend las claves de atribución admitidas. Para Checkout en modo suscripción, adjúntalas tanto a los metadatos de Checkout Session como a los de la suscripción. Los eventos firmados invoice.payment_succeeded aportan el importe bruto, la moneda y el momento del pago; los webhooks de reembolso y disputa ajustan el valor neto, mientras que los webhooks de suscripción añaden señales de cancelación y churn. No se importan facturas históricas.

Autoridad
Respaldada por el proveedor para el estado de la factura pagada, el importe bruto, la moneda y el momento del pago. Los metadatos de Splendorize conectan el recorrido del visitante; no demuestran el pago.
Cuándo usarlo
Necesitas medir compras respaldadas por facturas de Stripe cobradas correctamente o ingresos recurrentes por suscripción. No informes de importes proporcionados por el navegador ni emitas una segunda conversión desde el navegador solo para atribuirte el mismo pago.
Enlace de atribución del navegador
const attribution = window.splendorize.stripeMetadata();

await fetch("/api/checkout", {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({ attribution }),
});
Metadatos de Checkout validados
const attribution = Object.fromEntries(
  [
    "splendorize_site_id",
    "splendorize_visitor_id",
    "splendorize_session_id",
    "splendorize_page_view_id",
  ].flatMap((key) => {
    const value = requestBody.attribution?.[key];
    return typeof value === "string" && value.length <= 120
      ? [[key, value]]
      : [];
  }),
);

await stripe.checkout.sessions.create({
  mode: "subscription",
  line_items,
  success_url,
  cancel_url,
  metadata: attribution,
  subscription_data: { metadata: attribution },
});

Referencia del SDK

Llama a estos métodos en window.splendorize. Con el loader personalizado, todos excepto stripeMetadata() pueden ponerse en cola antes de que cargue el SDK.

action(actionKey, { placement? })
Registra una acción estable basada en el propósito, con una ubicación opcional. No declara que un resultado se haya completado.
conversion(name?, properties?)
Registra una conversión declarada por el cliente. Llámala solo después de que la aplicación haya confirmado el éxito.
payment({ email })
Genera un hash del email de checkout para enlazar el recorrido actual del visitante. Nunca demuestra el pago, el importe ni los ingresos.
stripeMetadata()Después de cargar el SDK
Devuelve los IDs de atribución de Splendorize para añadirlos a los metadatos de Stripe. No demuestra el pago.

El loader generado también admite comandos invocables como window.splendorize("action", "start_trial"). En el código de la aplicación, prioriza los métodos con nombre anteriores porque son más fáciles de leer.

Checklist de privacidad e implementación

Mantén la implementación acotada y haz que cada señal signifique exactamente una cosa.

  • Instala un único loader global y conserva el comportamiento de consentimiento y CSP del sitio.
  • Mantén la clave privada del sitio en el servidor; la clave pública del sitio puede aparecer en el código del navegador.
  • Nunca envíes valores de formularios, emails, nombres, teléfonos, IDs de clientes ni secretos en los metadatos de acciones o conversiones.
  • Emite una única acción semántica por gesto y elige una sola fuente de referencia para cada resultado.
  • Trata la atribución del pago como un enlace de identidad, nunca como autorización ni como prueba del pago.

Usa la fuente más cercana a la verdad.

Empieza con las instrucciones de instalación personalizadas de tu proyecto. Splendorize mantiene separadas las acciones, los resultados confirmados y los ingresos pagados para que tus agentes razonen a partir de pruebas, no de suposiciones.