DocumentaciónLemon Squeezy

03 · Ingresos

Conecta Lemon Squeezy y vincula sus pedidos con visitas

Tally lee los pedidos y las facturas de suscripción de tu tienda, y añade su propio webhook.

01Conectar Lemon Squeezy

  1. Crea una clave de API en Lemon Squeezy

    Las claves de API de Lemon Squeezy no se pueden limitar, así que crea una solo para Tally: Tally solo lee los pedidos de tu tienda y añade su propio webhook, y puedes borrar la clave cuando quieras. En Lemon Squeezy, abre Settings, API y crea una clave. Esto es todo lo que Tally hace con ella:

    PermisoAccesoPor qué
    OrdersLecturaCada venta: su importe, impuestos y reembolsos, y el email del cliente (convertido en hash al instante, nunca guardado).
    Subscription invoicesLecturaRenovaciones y cambios de plan.
    WebhooksEscrituraTally añade su propio webhook a la tienda, para que los pagos lleguen en segundos.

    Una clave creada en modo de prueba solo ve pedidos de prueba: usa una para probar primero.

  2. Pega la clave de API

    En la página Integrations de tu sitio (o en el paso Payments al añadir un sitio), abre Lemon Squeezy y rellena:

    • API key: Tally la guarda cifrada y nunca vuelve a mostrarla.
    • Store (optional): solo si tu clave ve más de una tienda: su dirección, nombre o ID.

    Después pulsa Connect Lemon Squeezy.

  3. Tally lo comprueba e importa el último año

    Comprueba la clave contra tu tienda, añade su propio webhook para que los pedidos nuevos lleguen en cuanto ocurren e importa los últimos 365 días. Lemon Squeezy solo envía los datos personalizados de un checkout en los webhooks, así que los pedidos importados se vinculan por el email del cliente; los pedidos de ahora en adelante llevan el ID del visitante.

02Pasa el ID del visitante como datos personalizados

En las páginas con enlaces de compra, unas pocas líneas añaden el valor de la cookie _tally_vid como checkout[custom][tally_visitor_id] a cada enlace de checkout de Lemon Squeezy. Un checkout que crea tu servidor lo recibe en checkout_data.custom.

Mostrar el código para

// On pages with Lemon Squeezy buy links: add the visitor id as custom data.
const visitorId = (document.cookie.match(/(?:^|; )_tally_vid=([\w-]+)/) || [])[1];
for (const link of document.querySelectorAll('a[href*=".lemonsqueezy.com/checkout/buy/"]')) {
  const url = new URL(link.href);
  if (visitorId && !url.searchParams.has('checkout[custom][tally_visitor_id]')) {
    url.searchParams.set('checkout[custom][tally_visitor_id]', visitorId);
    link.href = url.href;
  }
}

// Express with cookie-parser, where you create a Lemon Squeezy checkout.
app.post('/checkout', async (req, res) => {
  const visitorId = req.cookies['_tally_vid'];
  const response = await fetch('https://api.lemonsqueezy.com/v1/checkouts', {
    method: 'POST',
    headers: {
      Accept: 'application/vnd.api+json',
      'Content-Type': 'application/vnd.api+json',
      Authorization: 'Bearer ' + process.env.LEMONSQUEEZY_API_KEY,
    },
    body: JSON.stringify({
      data: {
        type: 'checkouts',
        attributes: { checkout_data: { custom: visitorId ? { 'tally_visitor_id': visitorId } : {} } },
        relationships: {
          store: { data: { type: 'stores', id: '1' } },
          variant: { data: { type: 'variants', id: '1' } },
        },
      },
    }),
  });
  const { data } = await response.json();
  res.redirect(303, data.attributes.url);
});

03En un sitio sin cookies

Sin cookie no hay ID que añadir, así que identifica al comprador con el email con el que paga: objetivos e identify.

04Comprueba que funciona

05Lo que no se lee

¿Falta algo o no coincide con lo que ves? Escribe a support@tallybyoutpost.com y dinos qué página.