Descubre qué fuente te trajo ingresos, y cómo lo sabemos.

Tally es analítica de ingresos que muestra su trabajo. Vincula cada venta de Stripe, Paddle, Lemon Squeezy, Polar, WooCommerce o Squarespace con la visita que trajo al comprador, y da a cada venta un comprobante: la evidencia, el método que la vinculó y qué tan seguro es. Una tienda de WooCommerce o Squarespace se conecta con un clic, y cualquier otro proveedor puede enviar sus ventas a la Payments API.

14 días gratis, sin tarjeta.

Ejemplo
  1. Googlegoogle.comRedditreddit.com/r/SaaSChatGPTchatgpt.comNewsletterutm_medium=emailx.comt.co
  2. Leyó /pricing Estados UnidosAustin · Safari en iOSLeyó /blog/stripe-fees AlemaniaBerlin · Firefox en LinuxLeyó /compare CanadáToronto · Chrome en macOSLeyó / Reino UnidoLeeds · Edge en WindowsLeyó /launch Países BajosUtrecht · Chrome en Android
  3. Venta de 49,00 US$ atribuida a GoogleVenta de 120,00 US$ atribuida a RedditVenta de 49,00 US$ atribuida a ChatGPTVenta de 19,00 US$ atribuida a NewsletterVenta de 79,00 US$ atribuida a x.com
yoursite.comDatos de ejemplo

Revenue

$1,636

28%vs the 7 days before

after $39 in refunds and chargebacks

Conversion

1.0%

5%vs the 7 days before

Revenue per visitor

$0.52

No changevs the 7 days before

Linked to a visitor

85%

6 payments, $234 not linked. See what to fix

Visitors

3,174

29%vs the 7 days before

Pageviews

8,306

29%vs the 7 days before

Engaged time per visit

46s

11%vs the 7 days before

Live now

4

visitors in the last 5 minutes

Visitors and revenue

  • Visitors
  • Revenue
  1. GoogleOrganic Search976$312
  2. Direct718$301
  3. x.comOrganic Social398$268
  4. RedditOrganic Social241$115
  5. ChatGPTAI Assistants235$175
  6. Hacker NewsOrganic Social184$83
  7. NewsletterEmail131$94
  8. PerplexityAI Assistants78$57

Pages

  1. /2,054$822
  2. /pricing1,129$299
  3. /blog/stripe-fees564$94
  4. /docs361$38
  5. /compare302$29
  6. /changelog184$67
  7. /blog/launch-week164$20
  8. /signup125$38

A page's revenue is what visitors who viewed it paid afterwards in this period. One sale counts on every page its buyer saw, so the column adds up to more than the total.

Countries

  1. United States1,111$414
  2. Germany342$273
  3. United Kingdom299$292
  4. India211$219
  5. Canada168$72
  6. France123$38
  7. Netherlands98$35
  8. Brazil94$63

Devices

  1. Desktop2,155$860
  2. Mobile1,129$505
  3. Tablet100$42

What Direct was

Last 7 days · 855 visitors with no referrer

Visits that came with no referrer, and our best reading of each: a guess from the page they landed on, the device and the browser, not a certainty.

Our best reading

Typed or bookmarked

416 visitors · 49% of Direct

Someone typed your address or opened a bookmark: people who already know where to find you.

How we read it: No referrer, a landing on your home page or a one-part path such as /pricing, on a desktop.

Our best reading

Back from checkout

79 visitors · 9% of Direct

A buyer coming back from the payment page in a new visit. They were already here; this visit isn't a new arrival.

How we read it: A payment provider as the referrer, or a landing on a checkout success address, at the start of a visit.

Our best reading

Instagram in-app browser

65 visitors · 8% of Direct

Opened inside Instagram's own browser, which keeps the post or profile the link was in to itself.

How we read it: Instagram's mark in the browser's user agent, and no referrer. Sources count these visits under Instagram, Organic Social.

Our best reading

TikTok in-app browser

36 visitors · 4% of Direct

Opened inside TikTok's own browser, which keeps the post or profile the link was in to itself.

How we read it: TikTok's mark in the browser's user agent, and no referrer. Sources count these visits under TikTok, Organic Social.

Our best reading

LinkedIn in-app browser

22 visitors · 3% of Direct

Opened inside LinkedIn's own browser, which keeps the post or profile the link was in to itself.

How we read it: LinkedIn's mark in the browser's user agent, and no referrer. Sources count these visits under LinkedIn, Organic Social.

Our best reading

Facebook in-app browser

14 visitors · 2% of Direct

Opened inside Facebook's own browser, which keeps the post or profile the link was in to itself.

How we read it: Facebook's mark in the browser's user agent, and no referrer. Sources count these visits under Facebook, Organic Social.

Míralo de cerca

  1. Vinculado a un visitanteCuántos ingresos están vinculados a una visita, con un enlace a la lista de arreglos para el resto.Cobertura
  2. Ingresos en cada filaCada fuente, página y país con el dinero que pagaron sus visitantes, y cada venta con su comprobante.Comprobantes
  3. Qué fue DirectVisitas sin referente, divididas en escritas a mano, enlaces compartidos, vueltas desde el checkout y navegadores dentro de apps.Tráfico
Fig. 1El propio panel, en un sitio de ejemplo con cifras inventadas. Elige un periodo, cambia entre fuentes y canales, pasa el cursor por el gráfico o elige una lectura de Direct.

Lo que solo hace Tally

DataFast, la analítica de ingresos que comparamos función por función en octubre de 2026, no hace ninguna de estas cuatro cosas.

  1. Ejemplo

    49,00 US$

    1. Primera visita2 oct
    2. Visita atribuida14 oct
    3. Vínculo14 oct
    4. Pago14 oct

    Metadatos del checkout, confianza alta

    Un comprobante por cada venta

    Las visitas que hay detrás, lo que vinculó el pago con ellas, el método y qué tan seguro es. Cuando nada vincula una venta, el comprobante lo dice: nunca se adivina.

    Ver un comprobante
  2. Ejemplo

    86 %vinculado

    ArregloCheckout Sessions sin ID de visitante9 pagos, 343 US$

    metadata: { tally_visitor_id: id }

    Cobertura, con su arreglo

    Cuántos de tus ingresos están vinculados a un visitante, cada motivo por el que el resto no lo está y el código que lo arregla.

    Ver la lista de arreglos
  3. Ejemplo

    Lo más clicado en /pricing

    1. #plan-pro .plan-cta424
    2. #billing-yearly31 de frustración236

    Grabaciones y mapas de calor junto al dinero

    Mira desde su comprobante la visita grabada detrás de una venta, y ve dónde hace clic la gente y hasta dónde lee.

    Ver grabaciones
  4. Ejemplo
    El ecosistema de clientes del sitio de ejemplo: miles de visitantes como partículas luminosas, reunidos en clústeres con nombre y coloreados según su salud.El ecosistema de clientes del sitio de ejemplo: miles de visitantes como partículas luminosas, reunidos en clústeres con nombre y coloreados según su salud.

    Labs: tus clientes, vivos

    Los visitantes como un ecosistema vivo que se mueve semana a semana, y un río en tonos pastel de la primera fuente a la venta, dibujados solo a partir de lo que hicieron.

    Ver Labs

01Tráfico

De dónde vienen los visitantes, con los nombres que tú usarías.

Los referentes se convierten en fuentes que reconoces: t.co es x.com, chatgpt.com es ChatGPT y news.ycombinator.com es Hacker News. Cada fuente pertenece a un canal, y quienes llegan enviados por asistentes de IA tienen un canal propio. Cada fila del desglose muestra sus visitantes y los ingresos que hay detrás.

Los rastreadores de IA se cuentan aparte, nunca como visitantes; la mayoría nunca ejecuta el script de una página, así que unas pocas líneas en tu servidor los registran. Otros bots y navegadores automatizados no se cuentan en absoluto. Y Direct, las visitas sin referente, se interpreta según lo que probablemente fue: escrita a mano o desde un marcador, un enlace compartido, una vuelta desde el checkout o el navegador propio de una app. El panel de arriba lo muestra.

  • t.co/3xYq…x.comOrganic Social
  • www.google.deGoogleOrganic Search
  • chatgpt.comChatGPTAI Assistants
  • news.ycombinator.comHacker NewsOrganic Social
  • ?utm_source=newsletterNewsletterEmail
  • Navegador integrado de InstagramInstagramOrganic Social

Aparte, no son visitantes

  • GPTBot
  • ClaudeBot
  • PerplexityBot
  • Bytespider
Fig. 2Cómo un referente en bruto se convierte en una fuente y un canal. Los rastreadores de IA aparecen aparte.

Horas punta reparte el periodo por día de la semana y hora, para visitas, ventas o ingresos, y nombra las tres horas con más actividad solo cuando los datos lo respaldan.

Ejemplo

Peak hours

Last 30 days · UTC

Busiest on Tuesdays, 14:00–17:00

1.9× the visits of an average three hours. Post around Tue 13:00 to be there as they arrive.

000102030405060708091011121314151617181920212223Total
Mon2,11723$954
Tue3,08636$1,417
Wed2,18123$997
Thu2,05722$942
Fri1,84421$874
Sat2,21324$1,007
Sun1,78620$827
All15,284169$7,019
Busiest three hours

Shades are each hour's average over the times this period holds it, so a weekday that comes round five times doesn't outshine one that comes round four. The totals beside and below are the period's actual sums, not averages.

Fig. 3Horas punta en el sitio de ejemplo, en los últimos 30 días. Cambia entre visitas, ventas e ingresos, o pasa el cursor por una hora.

02Visitantes

Cada visitante, de dónde vino y lo que pagó.

Una fila por visitante: un nombre amable y un avatar generados a partir de su ID, dónde está y con qué, de dónde vino su última visita y qué páginas vio, el tiempo activo por visita y lo que ha pagado. Abre una fila y ahí está cada visita; la página del recorrido tiene cada página, objetivo y pago.

Ordena por Likely to buy y la puntuación dice qué la impulsa: volver, y el tiempo en precios y en el checkout. En el modo sin cookies, una fila es una visita, y la página lo dice.

Ejemplo

11.293 visitantes · 133 de pago · últimos 30 días

  1. Glad HamsterCustomerBerlin, Germany · Desktop · FirefoxRedditOrganic Sociallatest visit: 4 pages/blog/stripe-fees+2/thanks3 visits3m 08s median6m 42s longest$49

    Visits, last 30 days

    Whole journey
    1. RedditOrganic Social
      /blog/stripe-fees/pricing/signup/thanks

      4 pages · 6m 42s engaged · 1 goal$49 credited to this visit

    2. Directtyped or bookmark
      /pricing/docs

      2 pages · 1m 36s engaged

    3. GoogleOrganic Search
      /blog/stripe-fees/

      2 pages · 3m 08s engaged

  2. Cosy CapybaraAustin, United States · Mobile · SafariGoogleOrganic Searchlatest visit: 2 pages//pricing1 visit1m 11s engaged–

    Visits, last 30 days

    Whole journey
    1. GoogleOrganic Search
      //pricing

      2 pages · 1m 11s engaged

  3. Spry BisonToronto, Canada · Desktop · ChromeChatGPTAI Assistantslatest visit: 4 pages/compare+2/docs/api2 visits3m 57s median5m 44s longest–

    Visits, last 30 days

    Whole journey
    1. ChatGPTAI Assistants
      /compare/pricing/docs/docs/api

      4 pages · 5m 44s engaged · 1 outbound click

    2. PerplexityAI Assistants
      /compare

      1 page · 2m 09s engaged

  4. Snug CapybaraCustomerLeeds, United Kingdom · Desktop · EdgeNewsletterEmaillatest visit: 2 pages/changelog/2 visits1m 41s median2m 34s longest$120

    Visits, last 30 days

    Whole journey
    1. NewsletterEmail
      /changelog/

      2 pages · 2m 34s engaged

    2. Directtyped or bookmark
      /

      1 page · 48s engaged

  5. Bubbly LlamaUtrecht, Netherlands · Mobile · Chromex.comOrganic Sociallatest visit: 1 page/blog/launch-week1 visit1m 04s engaged–

    Visits, last 30 days

    Whole journey
    1. x.comOrganic Social
      /blog/launch-week

      1 page · 1m 04s engaged

  6. Velvet PenguinBengaluru, India · Desktop · ChromeHacker NewsOrganic Sociallatest visit: 3 pages/blog/stripe-fees/docs/pricing1 visit4m 56s engaged–

    Visits, last 30 days

    Whole journey
    1. Hacker NewsOrganic Social
      /blog/stripe-fees/docs/pricing

      3 pages · 4m 56s engaged

  7. Keen KoalaCustomerSão Paulo, Brazil · Tablet · SafariDirecttyped or bookmarklatest visit: 3 pages//pricing/signup2 visits1m 49s median3m 03s longest$29

    Visits, last 30 days

    Whole journey
    1. Directtyped or bookmark
      //pricing/signup

      3 pages · 3m 03s engaged · 1 goal$29 credited to this visit

    2. Directtyped or bookmark
      /

      1 page · 35s engaged

Fig. 4La lista de visitantes del sitio de ejemplo, de la más reciente a la más antigua, con las visitas de un cliente desplegadas.

03Ingresos

Cada pago, de cualquier proveedor, en dólares y sin impuestos.

Conecta Stripe, Paddle, Lemon Squeezy o Polar con una clave que creas tú, limitada a lo que lee Tally y al permiso para añadir su propio webhook. Primero trae los últimos 365 días y después cada pago en cuanto ocurre.

Las tiendas de WooCommerce y Squarespace se conectan con un clic. Aprueba Tally en la propia pantalla de WooCommerce, desde la página Integrations o el plugin de WordPress de Tally, o en la página de confirmación de Squarespace, y entra un año de pedidos, reembolsos incluidos. Un pedido de WooCommerce se vincula con su visita mediante la página de pedido recibido, o el ID de visitante que el plugin guarda en el pedido al pagar; un pedido de Squarespace, mediante la página de estado del pedido, con las líneas de Tally en Code Injection. WooCommerce, paso a paso; Squarespace, paso a paso.

Stripe llega más lejos: Checkout, Payment Links, suscripciones y facturas, y el snippet etiqueta los Payment Links por sí solo. Paddle, Lemon Squeezy y Polar vinculan una venta por el ID de visitante que se pasa a su checkout, o por el email del comprador.

Cualquier otro proveedor, de Gumroad o FastSpring a tu propia facturación: tu servidor envía cada pago a la Payments API, con el cuerpo que acepta DataFast, y se vincula como el resto. Solo llega lo que envías; no se importa nada.

Se distinguen las ventas nuevas, renovaciones, mejoras de plan, reembolsos y contracargos. Los importes excluyen impuestos y se convierten a dólares estadounidenses al tipo del Banco Central Europeo de ese día. Un pago se cuenta una vez, lo informe como lo informe el proveedor.

  • Stripe

    Lee
    Checkout, Payment Links, suscripciones y facturas, con reembolsos y contracargos.
    Vincula una venta por
    El ID del visitante en los metadatos de Checkout, la etiqueta que el snippet añade solo a los Payment Links, el ID de sesión de Stripe en tu página de éxito o el email del comprador.
    Se conecta con
    Una clave restringida
  • Paddle

    Lee
    Transacciones y suscripciones, con reembolsos y contracargos.
    Vincula una venta por
    El ID del visitante en el customData de Paddle.js, o en el custom_data de una transacción, que las renovaciones conservan; o el email del cliente.
    Se conecta con
    Una clave de API con solo los permisos que necesita
  • Lemon Squeezy

    Lee
    Pedidos y facturas de suscripción, con reembolsos. Lemon Squeezy no informa de contracargos: reembolsa un pedido en disputa, y llega el reembolso.
    Vincula una venta por
    El ID del visitante en los datos personalizados de un enlace de checkout, o en el checkout_data de la API; o el email del cliente, que es lo único con lo que se pueden vincular los pedidos anteriores a la conexión.
    Se conecta con
    Una clave de API creada solo para esto (no tienen ámbitos)
  • Polar

    Lee
    Pedidos y suscripciones, con reembolsos, y las disputas perdidas como contracargos.
    Vincula una venta por
    Los metadatos del checkout, el reference_id de un enlace de checkout o el email del cliente.
    Se conecta con
    Un token de organización con solo los ámbitos que necesita
  • WooCommerce

    Lee
    Pedidos pagados y sus reembolsos, cada reembolso con el impuesto que devolvió. Cada 30 minutos lee los pedidos que cambiaron, así que un webhook perdido no pierde nada.
    Vincula una venta por
    La página de pedido recibido, con el snippet en la tienda; el ID de visitante que el plugin de WordPress de Tally guarda en el pedido al pagar; o el email del comprador.
    Se conecta con
    Un clic en la propia pantalla de aprobación de WooCommerce, desde Tally o el plugin de WordPress de Tally; o una clave de la API REST
  • Squarespace

    Lee
    Pedidos pagados y sus reembolsos: cada pedido nuevo en segundos si se conecta con un clic, cada 10 minutos con una clave de API.
    Vincula una venta por
    La página de estado del pedido, con el snippet y sus líneas de pedido en Code Injection; o el email del comprador.
    Se conecta con
    Un clic en la propia página de confirmación de Squarespace, o una clave de API creada en el sitio
  • Payments API

    Lee
    Los pagos de cualquier otro proveedor, enviados por tu servidor: Gumroad, FastSpring, PayPal o tu propia facturación, con renovaciones y reembolsos. Solo llega lo que envías.
    Vincula una venta por
    El ID de visitante que tu servidor envía con el pago, o el email del comprador.
    Se envía con
    Una clave de API que puede registrar pagos, con el cuerpo que acepta la API de DataFast
Fig. 5Lo que da cada proveedor y lo que vincula sus ventas con una visita. Para cotejar por email, tu app debe decirle al snippet quién ha iniciado sesión; solo se guarda un hash de la dirección.

Pagos, del lun 2 al sáb 7 de nov

Ejemplo
DíaTipoOrigenSin impuestos
lun 2 novNuevaStripeCheckout49,00 US$
lun 2 novNuevaLemon SqueezyEnlace de checkout120,00 US$
mar 3 novMejoraStripeCambio de plan, prorrateado30,00 US$
mié 4 novRenovaciónPaddleSuscripción mensual49,00 US$
jue 5 novNuevaPolarCheckout, 45,00 € al tipo de ese día48,65 US$
jue 5 novNuevaWooCommercePedido de tienda39,00 US$
vie 6 novNuevaSquarespacePedido de tienda59,00 US$
vie 6 novReembolsoStripeDe una venta del 30 de oct−49,00 US$
sáb 7 novRenovaciónPayments APIEnviado por tu servidor15,00 US$
sáb 7 novContracargoPaddleDisputado por el banco de la tarjeta−19,00 US$
Ingresos de la semana341,65 US$
Fig. 6Una semana de pagos de un sitio de ejemplo, de cada proveedor y de la Payments API. Los reembolsos y contracargos restan el día en que ocurren.

04Comprobantes

Cada venta llega con su comprobante.

Una cifra de ingresos que no puedes comprobar es una suposición. Abre cualquier venta y Tally te muestra la cadena que hay detrás: la primera visita del comprador, las visitas posteriores, la que se lleva el mérito, lo que vinculó el pago con ese navegador y el pago, cada uno con un ID que puedes consultar en tu proveedor de pagos.

Después, el método que la vinculó y qué tan seguro es. Cuando nada vincula una venta, el comprobante lo dice. Nunca se adivina.

Tres ventas de ejemplo

49,00 US$Plan Pro, nueva suscripciónMetadatos del checkout, confianza alta120,00 US$Plan Team, pagado con facturaCoincidencia de email, confianza media29,00 US$Plan Starter, nueva suscripciónNinguno: sin vincular

Una venta se atribuye a la última visita del comprador que no fue directa. Las renovaciones y los reembolsos siguen a la venta a la que pertenecen.

ComprobanteEjemplo

49,00 US$

Plan Pro, nueva suscripción, pagado el 14 oct, 16:42

  1. Primera visita2 oct, 09:14

    Desde Google, llegó a /blog/stripe-fees

    visitante7Hq2mK…xR

  2. 2 visitas más6 oct, 14 oct

    Direct y después Reddit

  3. Visita atribuida14 oct, 16:31

    Desde reddit.com/r/SaaS, llegó a /pricing. La última visita que no fue directa.

    sesión0192f3a1-7c…

  4. Vínculo14 oct, 16:40

    La Checkout Session lleva el ID del visitante en sus metadatos.

    checkoutcs_test_b1Fz…

  5. Pago14 oct, 16:42

    49,00 US$, sin impuestos

    pagopi_3QJx8L…

Método
Metadatos del checkout
Confianza
Alta
Atribuida a
Reddit, Organic Social

ComprobanteEjemplo

120,00 US$

Plan Team, pagado con factura, pagado el 2 oct, 11:20

  1. Primera visita, atribuida28 sept, 20:05

    Desde ChatGPT, llegó a /compare. La última visita que no fue directa.

    visitanteQm81Zt…c4

  2. 1 visita más1 oct

    Direct, con sesión iniciada en la app

  3. Identificación1 oct, 09:12

    La app le dijo a la etiqueta quién había iniciado sesión. Solo se guarda un hash de la dirección.

  4. Vínculo2 oct, 11:20

    El cliente de la factura tiene el mismo hash de email. Ningún checkout llevaba un ID.

    hash del email5d41402a…2a

  5. Pago2 oct, 11:20

    120,00 US$, sin impuestos

    facturain_1QH7tA…

Método
Coincidencia de email
Confianza
Media
Atribuida a
ChatGPT, AI Assistants

ComprobanteEjemplo

29,00 US$

Plan Starter, nueva suscripción, pagado el 6 nov, 08:12

  1. Primera visitaDesconocida

    Nada vincula al comprador con una visita.

  2. Visita atribuidaNinguna

    No se atribuye ninguna visita, y no se adivina ninguna.

  3. VínculoNo encontrado

    Ningún ID de visitante en el checkout, ningún Payment Link etiquetado, ninguna visita a la página de éxito, ningún email que coincida.

  4. Checkout6 nov, 08:11

    Creado por tu servidor sin el ID del visitante.

    checkoutcs_test_c9Ld…

  5. Pago6 nov, 08:12

    29,00 US$, sin impuestos

    pagopi_3QK2rB…

Método
Ninguno
Confianza
Ninguna
Atribuida a
A nadie. Resta cobertura.

La lista de cobertura dice por qué y qué cambiar: ver 05 Cobertura

Fig. 7Tres ventas de ejemplo y sus comprobantes: vinculada por los metadatos del checkout, por coincidencia de email y sin vincular.

05Cobertura

Te decimos lo que no podemos ver.

La cobertura es la parte de tus ingresos vinculada a un visitante. Debajo está la lista de arreglos: cada motivo por el que no se pudo vincular un pago, cuántos pagos y cuánto dinero implica, y el código que lo arregla.

Un pago que nada vincula queda sin vincular y resta cobertura. Si la evidencia llega más tarde, como la visita del comprador a tu página de éxito, se vincula en ese momento.

Cobertura, últimos 30 días

Ejemplo

86 %

3294 US$ de 3830 US$ en los últimos 30 días están vinculados a un visitante. 14 pagos, 536 US$, no lo están.

Arréglalo

  1. Checkout Sessions sin ID de visitante9 pagos, 343 US$

    Pasa el ID del visitante al crear la sesión, también en la suscripción, para que las renovaciones lo sigan. Snippets para Node, Next.js, Python, Ruby y PHP.

    const id = req.cookies._tally_vid;
    
    await stripe.checkout.sessions.create({
      // …your line items and URLs
      metadata: { tally_visitor_id: id },
      subscription_data: {
        metadata: { tally_visitor_id: id },
      },
    });
  2. Una página de éxito que no dice de qué checkout viene3 pagos, 95 US$

    Añade el ID de sesión de Stripe a la página a la que vuelven los compradores, y la visita allí vincula la venta.

    success_url:
      "https://yoursite.com/thanks?session_id={CHECKOUT_SESSION_ID}"
  3. Pagos sin checkout, como las facturas2 pagos, 98 US$

    Dile a la etiqueta quién ha iniciado sesión. La dirección se convierte en hash al llegar y se compara con la del comprador; la dirección en sí nunca se almacena.

    tally('identify', { email: user.email });
Fig. 8La cobertura de un sitio de ejemplo y su lista de arreglos, con el código de cada arreglo.

06Camino a la compra

Cómo te encuentran los compradores y quién cierra la venta.

El camino a la compra es el recorrido detrás de las ventas nuevas del periodo: cuánto tardan los compradores desde su primera visita, cuántas visitas y páginas necesitan y cuántos compran en la primera visita. El diagrama de flujo va de la fuente que trajo primero a cada comprador a la que se lleva la venta.

El valor de vida del cliente cuenta a cada cliente bajo la fuente de su primera visita, con todo lo que ha pagado desde entonces, renovaciones, mejoras de plan y reembolsos incluidos.

Ejemplo

Path to purchase

Last 30 days · 112 of 133 new sales, the ones linked to a visitor

Median time to buy

3days

from their first visit

Median visits

3visits

the one they paid in included

Bought on the first visit

14%

16 of 112

Pages before buying

10.5

median pages viewed

Where buyers came from, and who closed the sale

112 new sales: where each buyer first came from, and the source credited with the sale.

51% of new sales were credited to the source that first brought the buyer in. Hover or focus a flow for its numbers.

  1. Googlecredited toGoogle27
  2. x.comcredited tox.com11
  3. Other (3 sources)credited toOther (3 sources)11
  4. Directcredited toOther (3 sources)10
  5. ChatGPTcredited toChatGPT10
  6. Redditcredited toReddit9
  7. Other (3 sources)credited toNewsletter9
  8. Googlecredited toNewsletter6

6 smaller flows in the table below.

Show the flows as a table
112 new sales: where each buyer first came from, and the source credited with the sale.
Brought them inCredited with the saleNew salesShare
GoogleGoogle2724%
x.comx.com1110%
Other (3 sources)Other (3 sources)1110%
DirectOther (3 sources)109%
ChatGPTChatGPT109%
RedditReddit98%
Other (3 sources)Newsletter98%
GoogleNewsletter65%
DirectGoogle54%
x.comGoogle54%
RedditGoogle44%
DirectReddit22%
ChatGPTGoogle22%
Other (3 sources)ChatGPT1<1%

Time from first visit to purchase

  1. 16Same visit: 16 sales (14%), bought in their first visit
  2. 13Same day: 13 sales (12%), a later visit, under 24 hours after the first
  3. 311–3 days: 31 sales (28%), 1 to 3 days after the first visit
  4. 204–7 days: 20 sales (18%), 4 to 7 days after the first visit
  5. 161–2 weeks: 16 sales (14%), 8 to 14 days after the first visit
  6. 112–4 weeks: 11 sales (10%), 15 to 28 days after the first visit
  7. 51–3 months: 5 sales (4%), 29 to 90 days after the first visit
  8. 03+ months: 0 sales (0%), 91 days or more after the first visit

Pages buyers saw before paying

Share of the 112 buyers who viewed each page before paying

  1. /pricing96%, 108 of 112 buyers
  2. /71%, 80 of 112 buyers
  3. /signup64%, 72 of 112 buyers
  4. /docs38%, 43 of 112 buyers
  5. /blog/stripe-fees26%, 30 of 112 buyers
  6. /compare22%, 25 of 112 buyers
  7. /changelog8%, 10 of 112 buyers
  8. /blog/launch-week6%, 7 of 112 buyers

Only new sales count here. Renewals and upgrades belong to the visit that won the subscription, so counting them would count that journey again.

Fig. 9El camino a la compra en el sitio de ejemplo: las medianas, el flujo de la primera fuente a la atribuida, el tiempo que lleva y las páginas que vieron los compradores. Pasa el cursor por un flujo.
Ejemplo

Lifetime value by first source

All time: every payment since 1 Nov 2025. The period above doesn't apply.

First sourceCustomersLifetime revenueAverage valueRenewalsRepeat rate
GoogleOrganic Search285$35,568$12574152%
ChatGPTAI Assistants110$18,396$16734161%
Direct156$15,964$10232844%
NewsletterEmail83$15,330$18531569%
Hacker NewsOrganic Social74$10,343$14020055%
x.comOrganic Social101$8,949$8914133%
RedditOrganic Social74$7,942$10714141%
PerplexityAI Assistants37$5,587$1518957%
Every source920$118,081$1282,29651%

A customer is a visitor linked to a sale, counted under the source of their first visit. Lifetime revenue is net of refunds and chargebacks; repeat rate is the share who paid more than once (a renewal, an upgrade or another purchase). $11,540 from 374 payments not linked to a visitor is in no row.

Fig. 10Valor de vida por primera fuente en el sitio de ejemplo.

07Qué leen

El tiempo en una página, contado solo mientras alguien lee.

El reloj corre mientras la pestaña está a la vista y el visitante ha desplazado, escrito, tocado o movido el puntero en los últimos 30 segundos. Una pestaña abierta detrás de otras durante 8 horas no suma nada. El panel muestra la mediana por visita, así que una pestaña olvidada no puede inflarla.

Una vista de página

Ejemplo

Abierta8 min 35 s

Activo2 min 05 s

  1. 1 min 10 sLeyendo y desplazándoseContado
  2. 30 sAún sin interacción: el reloj sigue 30 segundosContado
  3. 2 min 30 sSigue sin interacción: el reloj se detieneNo contado
  4. 4 min 00 sOtra pestaña delanteNo contado
  5. 25 sDe vuelta, desplazándose otra vezContado
Fig. 11Una vista de página de ejemplo: abierta 8 minutos y 35 segundos, activa 2 minutos y 5.

Pages añade hasta dónde se desplaza la gente: el tiempo de lectura y la profundidad de cada página, cuántos llegan al final y cómo leen una página los compradores antes de pagar frente a quienes no compraron.

Ejemplo

Reading time

38s

median per pageview

Scroll depth

59%

average depth, of 25,694 views measured

Read to the end

27%

of measured views reached 90% or more

What they read

27,628 pageviews · last 30 days

Open a page to see how far down people read it, and how buyers read it before paying.

  1. /pricing5,217 views78% scrolled on average58s reading time, median

    58s

    reading time, median per view

    78%

    scrolled, on average

    5,217 views · 4,904 with a measured depth

    How far down they read

    Share of measured views that scrolled at least this far

    1. 25% — reached a quarter of the page:95%
    2. 50% — reached half of the page:84%
    3. 75% — reached three quarters of the page:69%
    4. 90%+ — reached the end of the page:48%

    Buyers before paying vs didn't buy

    • Buyers, before paying159 views · 114 buyers96% scrolled on average,1m 41s reading time, median
    • Didn't buy5,020 views · 3,585 visitors61% scrolled on average,44s reading time, median

    38 views by buyers after paying are left out of both.

    Buyers are visitors whose first sale came after viewing this page; only their views before that payment count.

Reading time runs only while the tab is visible and the visitor is active; it's the median per view. A view with no engagement report counts as 0s of reading. Its scroll depth is unknown, so it's left out of every scroll figure rather than counted as 0%. 25,694 of 27,628 pageviews have a measured depth.

Fig. 12Qué leen en el sitio de ejemplo, con la página de precios abierta: hasta dónde se lee, y los compradores frente al resto.

08Grabaciones y mapas de calor

Mira la visita que compró, y ve dónde hace clic todo el mundo.

Activa las grabaciones en un sitio y sus visitas grabadas se reproducen con cada página, objetivo, clic de frustración y pago en la línea de tiempo. El recorrido de un comprador y su comprobante enlazan directamente a la grabación. Cada campo se enmascara y las contraseñas nunca se graban.

Los mapas de calor dibujan los clics, los clics de frustración, los clics muertos y la profundidad de scroll sobre la propia página, para escritorio, tableta y móvil.

Fig. 13Visitas grabadas en el sitio de ejemplo; cada una abre el reproductor.
Ejemplo
Un mapa de calor de clics de la página de precios del sitio de ejemplo: los clics brillan sobre los botones de los planes, con clics de frustración en el selector de facturación.Un mapa de calor de clics de la página de precios del sitio de ejemplo: los clics brillan sobre los botones de los planes, con clics de frustración en el selector de facturación.
Fig. 14Un mapa de calor de clics de la página de precios del sitio de ejemplo, dibujado sobre la página de una visita grabada: dónde hace clic la gente y dónde hace clic con frustración.

Mapa de calor de /pricing, últimos 30 días

Ejemplo

09En directo

Quién está en el sitio ahora mismo.

Los últimos cinco minutos en un globo o un mapa plano, con una lista al lado: la bandera, la página, la ciudad y la fuente de cada visitante. Una nueva llegada aparece con un anillo; una venta estalla en coral en la ciudad del comprador. Haz clic en un visitante para encontrarlo y reproduce las últimas ocho horas en pasos de 15 minutos.

Ejemplo
El globo en directo del sitio de ejemplo: los visitantes de los últimos cinco minutos marcados en sus ciudades, en Europa y América, con una venta que estalla en coral.El globo en directo del sitio de ejemplo: los visitantes de los últimos cinco minutos marcados en sus ciudades, en Europa y América, con una venta que estalla en coral.

Live

The globe and the map need JavaScript. The list beside them is as of loading this page.

5 visitors

in the last 5 minutes, from 4 countries

Fig. 15La vista en directo del sitio de ejemplo: quién está en los últimos cinco minutos, marcado donde está, con la lista al lado. Reproducir enciende el globo real.

10Labs

Tus clientes, como un ecosistema vivo y un río.

Dos vistas experimentales, dibujadas solo a partir de señales que tiene Tally. El ecosistema sitúa a cada visitante de los últimos 90 días según lo que hizo, los agrupa en clústeres nombrados por lo que destaca y los colorea según su salud; reprodúcelo y se mueve semana a semana.

El río sigue a los visitantes desde la fuente que los trajo, a través de las páginas a las que llegaron, hasta si compraron, semana a semana, coloreado por fuente, por experiencia o por resultado. La salud es nuestra lectura de renovaciones, reembolsos, contracargos y actividad reciente, nunca una predicción.

Ejemplo

Labs

Customer ecosystem

Experimental

5,000 most recent of 32,059 visitors from the last 90 days. Each is placed by what they did, gathered with the ones most like them, and coloured by health.

El ecosistema de clientes del sitio de ejemplo: miles de visitantes como partículas luminosas, reunidos en clústeres con nombre y coloreados según su salud.El ecosistema de clientes del sitio de ejemplo: miles de visitantes como partículas luminosas, reunidos en clústeres con nombre y coloreados según su salud.

more engaged time, more visits, longer visits than the median

more revenue, more renewals, more quick exits

The picture needs JavaScript and WebGL 2. Everything it shows is in the table below.

What the picture shows, and what feeds it

Reading it

  • Position: Each particle is a visitor of the last 90 days, placed by its signals (below), standardised and projected to two directions with PCA, computed on our server the same way every time. Particles near each other did similar things.
  • Left to right: more engaged time, more visits, longer visits than the median (48% of the variation). The other way: less engaged time, fewer visits, shorter visits than the median.
  • Bottom to top: more revenue, more renewals, more quick exits (15% of the variation). The other way: less revenue, fewer renewals, fewer quick exits.
  • Clusters: k-means on the picture's three main directions, with the number of clusters chosen by how cleanly they separate (silhouette). Names come from each cluster's standout traits by fixed rules.
  • Size: for customers, lifetime net revenue; for everyone else, the visitor list's likely-to-buy score (a point a visit up to 10, two a minute on pricing and checkout pages up to 20).
  • Glow: how recently they were seen, brightest today and gone after two weeks.
  • Weeks: the slider replays the particles shown as they were at the end of each week. Each appears from its first visit in the 90 days, so the early weeks hold only those already around then.
  • Trails: where a particle was in the three weeks before the one shown, for the cluster you pick, and faintly for everyone while the weeks play.

Colour: customers' health

  • RenewingA customer whose last purchase or renewal is within their renewal cycle (30 days until they have one), or who has visited within it.
  • QuietA customer with no renewal and no visit for longer than their renewal cycle (30 days until they have one) and a few days' grace.
  • LostA customer whose most recent payment was refunded or charged back, with no purchase since.

Colour: everyone else's engagement

  • HotNot a customer; engagement 0.75 or more.
  • WarmNot a customer; engagement 0.5 to 0.75.
  • CoolNot a customer; engagement 0.25 to 0.5.
  • ColdNot a customer; engagement under 0.25.

Engagement is half engaged time a visit against the site's median, a quarter recency and a quarter return visits. Health and engagement are our reading of renewals, refunds, chargebacks and recency, not a prediction.

Signals

  • Visits · visits in the last 90 days
  • Engaged time · engaged time (the tracker's visible-and-active clock), outlier visits left out
  • Pages a visit · pageviews ÷ visits
  • Days since the last visit · days from the last visit to the snapshot
  • From search · share of visits from Organic and Paid Search
  • From social and video · share of visits from Organic and Paid Social and Video
  • From AI assistants · share of visits from AI assistants (ChatGPT, Claude, Perplexity …)
  • Direct · share of visits with no referrer
  • From links, email and ads · share of visits from referrals, email, affiliates and display
  • Pricing page views · views of pricing and plans pages
  • Checkout page views · views of checkout, cart, buy, upgrade, subscribe and billing pages
  • Goals completed · goals sent by the site's tag
  • Net revenue · payments linked to the visitor, refunds taken off (all time, US dollars)
  • Renewals · renewal payments
  • Refunds and chargebacks · refunds and chargebacks
  • Rage clicks · rage clicks per recorded visit (only where sessions were recorded)
  • Dead clicks · dead clicks per recorded visit (only where sessions were recorded)
  • Quick exits · share of visits with one page and under 10 s engaged
  • Engaged time against the site's median · the visitor's median engaged time a visit ÷ the site's median
  • Scroll depth · how far down pages were scrolled, on average (where the tag reports it)

Not yet: support tickets and reviews. They aren't connected, so nothing here is read from them.

The ecosystem as a table

The same clusters, with customers first by lifetime revenue and everyone else by likely to buy. Names open each journey.

Clusters, now
ClusterMembersCustomersNet revenueWhat sets it apart
Quick leavers2,0190$0Engaged time against the site's median: 0.1× on average, against 3.4× across everyone; Scroll depth: 33% on average, against 64% across everyone; Engaged time: 8s on average, against 11m 35s across everyone; Mostly from Google: 37% of them
Deep readers1,5070$0Scroll depth: 86% on average, against 64% across everyone; Quick exits: 0% of visits, against 31% across everyone; Engaged time against the site's median: 3.8× on average, against 3.4× across everyone; Mostly from Google: 42% of them
Deep readers who come direct1,0680$0Pages a visit: 5.5 on average, against 2.7 across everyone; Engaged time: 32m 05s on average, against 11m 35s across everyone; Visits: 4.3 on average, against 2.4 across everyone
Paying renewers who come direct406406$48,881Net revenue: $120 on average, against $9.78 across everyone; Goals completed: 9.2 on average, against 1.1 across everyone; Renewals: 2.1 on average, against 0.2 across everyone
Quick leavers: the first 3 of 2,019 visitors
VisitorHealthValueVisitsLast seen
Zippy Raccoon CoolLikely to buy 2 of 302
Sincere Ibex CoolLikely to buy 2 of 302
Calm Moose CoolLikely to buy 2 of 302
Deep readers: the first 3 of 1,507 visitors
VisitorHealthValueVisitsLast seen
Twinkly Fennec HotLikely to buy 14 of 304
Dandy Fennec HotLikely to buy 14 of 303
Rustic Squirrel HotLikely to buy 13 of 304
Deep readers who come direct: the first 3 of 1,068 visitors
VisitorHealthValueVisitsLast seen
Nifty Fennec HotLikely to buy 28 of 308
Glad Lynx HotLikely to buy 28 of 308
Upbeat Wombat HotLikely to buy 28 of 308
Paying renewers who come direct: the first 3 of 406 visitors
VisitorHealthValueVisitsLast seen
Merry Hare Renewing$693 lifetime11
Spry Raccoon Renewing$693 lifetime10
Curious Gecko Renewing$594 lifetime10
Fig. 16Labs: el ecosistema de clientes del sitio de ejemplo. Cada visitante de los últimos 90 días situado según lo que hizo, agrupado y nombrado por lo que distingue a cada grupo, coloreado según su salud.
Ejemplo

Labs

Flow riverExperimental

Where visitors come from, where they go, what it earns and how it went, week by week.

21,486 visitors · $8,806 net revenueLast 8 weeks

Flows · Last 8 weeks

First touchLanding pageKey page reachedOutcomeGoogle → /: 1,214 visitors (6%), $361 net revenue, Cool (−0.20)Google → /blog/*: 2,882 visitors (13%), $365 net revenue, Cool (−0.23)Google → /docs/*: 639 visitors (3%), $277 net revenue, Warm (+0.37)Google → /pricing: 622 visitors (3%), $494 net revenue, Neutral (+0.10)Google → /compare/*: 361 visitors (2%), $293 net revenue, Neutral (−0.05)Google → /changelog: 251 visitors (1%), $51 net revenue, Cool (−0.22)Google → /signup: 251 visitors (1%), $446 net revenue, Warm (+0.32)Direct → /: 2,540 visitors (12%), $914 net revenue, Cool (−0.16)Direct → /blog/*: 298 visitors (1%), $114 net revenue, Neutral (−0.09)Direct → /docs/*: 535 visitors (2%), $254 net revenue, Warm (+0.34)Direct → /pricing: 628 visitors (3%), $644 net revenue, Warm (+0.19)Direct → /compare/*: 94 visitors (<1%), $34 net revenue, Neutral (−0.03)Direct → /changelog: 136 visitors (<1%), $0 net revenue, Cool (−0.24)Direct → /signup: 319 visitors (1%), $516 net revenue, Warm (+0.27)x.com → /: 1,359 visitors (6%), $400 net revenue, Cool (−0.51)x.com → /blog/*: 754 visitors (4%), $127 net revenue, Cool (−0.40)x.com → /docs/*: 50 visitors (<1%), $79 net revenue, Warm (+0.27)x.com → /pricing: 159 visitors (<1%), $142 net revenue, Neutral (+0.01)x.com → /compare/*: 53 visitors (<1%), $0 net revenue, Cool (−0.18)x.com → /changelog: 150 visitors (<1%), $42 net revenue, Cool (−0.38)x.com → /signup: 49 visitors (<1%), $68 net revenue, Neutral (+0.10)Reddit → /: 389 visitors (2%), $196 net revenue, Cool (−0.13)Reddit → /blog/*: 844 visitors (4%), $41 net revenue, Cool (−0.16)Reddit → /docs/*: 180 visitors (<1%), $78 net revenue, Warm (+0.37)Reddit → /pricing: 89 visitors (<1%), $168 net revenue, Warm (+0.21)Reddit → /compare/*: 90 visitors (<1%), $37 net revenue, Neutral (+0.01)Reddit → /changelog: 71 visitors (<1%), $0 net revenue, Cool (−0.28)Reddit → /signup: 35 visitors (<1%), $44 net revenue, Warm (+0.22)ChatGPT → /: 417 visitors (2%), $137 net revenue, Cool (−0.13)ChatGPT → /blog/*: 154 visitors (<1%), $75 net revenue, Neutral (+0.01)ChatGPT → /docs/*: 122 visitors (<1%), $63 net revenue, Warm (+0.39)ChatGPT → /pricing: 239 visitors (1%), $162 net revenue, Warm (+0.20)ChatGPT → /compare/*: 516 visitors (2%), $252 net revenue, Neutral (+0.01)ChatGPT → /changelog: 16 visitors (<1%), $0 net revenue, Neutral (−0.04)ChatGPT → /signup: 44 visitors (<1%), $81 net revenue, Warm (+0.39)Hacker News → /: 282 visitors (1%), $88 net revenue, Neutral (−0.03)Hacker News → /blog/*: 663 visitors (3%), $93 net revenue, Neutral (−0.07)Hacker News → /docs/*: 124 visitors (<1%), $45 net revenue, Warm (+0.33)Hacker News → /pricing: 61 visitors (<1%), $14 net revenue, Warm (+0.32)Hacker News → /compare/*: 64 visitors (<1%), $0 net revenue, Neutral (+0.11)Hacker News → /changelog: 50 visitors (<1%), $0 net revenue, Cool (−0.16)Hacker News → /signup: 24 visitors (<1%), $41 net revenue, Warm (+0.32)Other sources → /: 937 visitors (4%), $387 net revenue, Cool (−0.13)Other sources → /blog/*: 1,089 visitors (5%), $193 net revenue, Neutral (−0.09)Other sources → /docs/*: 540 visitors (3%), $162 net revenue, Warm (+0.37)Other sources → /pricing: 337 visitors (2%), $375 net revenue, Warm (+0.35)Other sources → /compare/*: 312 visitors (1%), $161 net revenue, Neutral (+0.04)Other sources → /changelog: 351 visitors (2%), $177 net revenue, Cool (−0.13)Other sources → /signup: 102 visitors (<1%), $115 net revenue, Warm (+0.35)/ → Signup: 664 visitors (3%), $929 net revenue, Warm (+0.30)/ → Pricing: 1,740 visitors (8%), $1,320 net revenue, Neutral (+0.07)/ → Docs: 507 visitors (2%), $161 net revenue, Warm (+0.25)/ → No key page: 4,227 visitors (20%), $75 net revenue, Cool (−0.44)/blog/* → Signup: 268 visitors (1%), $412 net revenue, Warm (+0.40)/blog/* → Pricing: 677 visitors (3%), $530 net revenue, Warm (+0.21)/blog/* → Docs: 348 visitors (2%), $14 net revenue, Warm (+0.19)/blog/* → No key page: 5,391 visitors (25%), $51 net revenue, Cool (−0.33)/docs/* → Signup: 177 visitors (<1%), $334 net revenue, Warm (+0.43)/docs/* → Pricing: 145 visitors (<1%), $136 net revenue, Warm (+0.44)/docs/* → Docs: 1,868 visitors (9%), $489 net revenue, Warm (+0.35)/pricing → Signup: 660 visitors (3%), $1,127 net revenue, Warm (+0.31)/pricing → Pricing: 1,475 visitors (7%), $872 net revenue, Neutral (+0.12)/compare/* → Signup: 179 visitors (<1%), $341 net revenue, Warm (+0.43)/compare/* → Pricing: 587 visitors (3%), $396 net revenue, Warm (+0.17)/compare/* → Docs: 75 visitors (<1%), $39 net revenue, Warm (+0.32)/compare/* → No key page: 649 visitors (3%), $0 net revenue, Cool (−0.40)/changelog → Signup: 61 visitors (<1%), $164 net revenue, Warm (+0.53)/changelog → Pricing: 113 visitors (<1%), $67 net revenue, Warm (+0.24)/changelog → Docs: 103 visitors (<1%), $40 net revenue, Warm (+0.28)/changelog → No key page: 748 visitors (3%), $0 net revenue, Cool (−0.46)/signup → Signup: 824 visitors (4%), $1,311 net revenue, Warm (+0.31)Signup → Bought: 138 visitors (<1%), $4,616 net revenue, Warm (+0.54)Signup → Goal: 1,471 visitors (7%), $0 net revenue, Warm (+0.48)Signup → Left: 1,224 visitors (6%), $0 net revenue, Warm (+0.28)Pricing → Bought: 100 visitors (<1%), $3,322 net revenue, Warm (+0.49)Pricing → Goal: 771 visitors (4%), $0 net revenue, Warm (+0.55)Pricing → Left: 3,866 visitors (18%), $0 net revenue, Neutral (+0.07)Docs → Bought: 23 visitors (<1%), $742 net revenue, Very warm (+0.66)Docs → Goal: 412 visitors (2%), $0 net revenue, Warm (+0.56)Docs → Left: 2,466 visitors (11%), $0 net revenue, Warm (+0.34)No key page → Bought: 5 visitors (<1%), $126 net revenue, Warm (+0.38)No key page → Goal: 337 visitors (2%), $0 net revenue, Warm (+0.33)No key page → Left: 10,673 visitors (50%), $0 net revenue, Cool (−0.43)
SourceLandingKey pageOutcomeGoogle → /: 1,214 visitors (6%), $361 net revenue, Cool (−0.20)Google → /blog/*: 2,882 visitors (13%), $365 net revenue, Cool (−0.23)Google → /docs/*: 639 visitors (3%), $277 net revenue, Warm (+0.37)Google → /pricing: 622 visitors (3%), $494 net revenue, Neutral (+0.10)Google → /compare/*: 361 visitors (2%), $293 net revenue, Neutral (−0.05)Google → /changelog: 251 visitors (1%), $51 net revenue, Cool (−0.22)Google → /signup: 251 visitors (1%), $446 net revenue, Warm (+0.32)Direct → /: 2,540 visitors (12%), $914 net revenue, Cool (−0.16)Direct → /blog/*: 298 visitors (1%), $114 net revenue, Neutral (−0.09)Direct → /docs/*: 535 visitors (2%), $254 net revenue, Warm (+0.34)Direct → /pricing: 628 visitors (3%), $644 net revenue, Warm (+0.19)Direct → /compare/*: 94 visitors (<1%), $34 net revenue, Neutral (−0.03)Direct → /changelog: 136 visitors (<1%), $0 net revenue, Cool (−0.24)Direct → /signup: 319 visitors (1%), $516 net revenue, Warm (+0.27)x.com → /: 1,359 visitors (6%), $400 net revenue, Cool (−0.51)x.com → /blog/*: 754 visitors (4%), $127 net revenue, Cool (−0.40)x.com → /docs/*: 50 visitors (<1%), $79 net revenue, Warm (+0.27)x.com → /pricing: 159 visitors (<1%), $142 net revenue, Neutral (+0.01)x.com → /compare/*: 53 visitors (<1%), $0 net revenue, Cool (−0.18)x.com → /changelog: 150 visitors (<1%), $42 net revenue, Cool (−0.38)x.com → /signup: 49 visitors (<1%), $68 net revenue, Neutral (+0.10)Reddit → /: 389 visitors (2%), $196 net revenue, Cool (−0.13)Reddit → /blog/*: 844 visitors (4%), $41 net revenue, Cool (−0.16)Reddit → /docs/*: 180 visitors (<1%), $78 net revenue, Warm (+0.37)Reddit → /pricing: 89 visitors (<1%), $168 net revenue, Warm (+0.21)Reddit → /compare/*: 90 visitors (<1%), $37 net revenue, Neutral (+0.01)Reddit → /changelog: 71 visitors (<1%), $0 net revenue, Cool (−0.28)Reddit → /signup: 35 visitors (<1%), $44 net revenue, Warm (+0.22)ChatGPT → /: 417 visitors (2%), $137 net revenue, Cool (−0.13)ChatGPT → /blog/*: 154 visitors (<1%), $75 net revenue, Neutral (+0.01)ChatGPT → /docs/*: 122 visitors (<1%), $63 net revenue, Warm (+0.39)ChatGPT → /pricing: 239 visitors (1%), $162 net revenue, Warm (+0.20)ChatGPT → /compare/*: 516 visitors (2%), $252 net revenue, Neutral (+0.01)ChatGPT → /changelog: 16 visitors (<1%), $0 net revenue, Neutral (−0.04)ChatGPT → /signup: 44 visitors (<1%), $81 net revenue, Warm (+0.39)Hacker News → /: 282 visitors (1%), $88 net revenue, Neutral (−0.03)Hacker News → /blog/*: 663 visitors (3%), $93 net revenue, Neutral (−0.07)Hacker News → /docs/*: 124 visitors (<1%), $45 net revenue, Warm (+0.33)Hacker News → /pricing: 61 visitors (<1%), $14 net revenue, Warm (+0.32)Hacker News → /compare/*: 64 visitors (<1%), $0 net revenue, Neutral (+0.11)Hacker News → /changelog: 50 visitors (<1%), $0 net revenue, Cool (−0.16)Hacker News → /signup: 24 visitors (<1%), $41 net revenue, Warm (+0.32)Other sources → /: 937 visitors (4%), $387 net revenue, Cool (−0.13)Other sources → /blog/*: 1,089 visitors (5%), $193 net revenue, Neutral (−0.09)Other sources → /docs/*: 540 visitors (3%), $162 net revenue, Warm (+0.37)Other sources → /pricing: 337 visitors (2%), $375 net revenue, Warm (+0.35)Other sources → /compare/*: 312 visitors (1%), $161 net revenue, Neutral (+0.04)Other sources → /changelog: 351 visitors (2%), $177 net revenue, Cool (−0.13)Other sources → /signup: 102 visitors (<1%), $115 net revenue, Warm (+0.35)/ → Signup: 664 visitors (3%), $929 net revenue, Warm (+0.30)/ → Pricing: 1,740 visitors (8%), $1,320 net revenue, Neutral (+0.07)/ → Docs: 507 visitors (2%), $161 net revenue, Warm (+0.25)/ → No key page: 4,227 visitors (20%), $75 net revenue, Cool (−0.44)/blog/* → Signup: 268 visitors (1%), $412 net revenue, Warm (+0.40)/blog/* → Pricing: 677 visitors (3%), $530 net revenue, Warm (+0.21)/blog/* → Docs: 348 visitors (2%), $14 net revenue, Warm (+0.19)/blog/* → No key page: 5,391 visitors (25%), $51 net revenue, Cool (−0.33)/docs/* → Signup: 177 visitors (<1%), $334 net revenue, Warm (+0.43)/docs/* → Pricing: 145 visitors (<1%), $136 net revenue, Warm (+0.44)/docs/* → Docs: 1,868 visitors (9%), $489 net revenue, Warm (+0.35)/pricing → Signup: 660 visitors (3%), $1,127 net revenue, Warm (+0.31)/pricing → Pricing: 1,475 visitors (7%), $872 net revenue, Neutral (+0.12)/compare/* → Signup: 179 visitors (<1%), $341 net revenue, Warm (+0.43)/compare/* → Pricing: 587 visitors (3%), $396 net revenue, Warm (+0.17)/compare/* → Docs: 75 visitors (<1%), $39 net revenue, Warm (+0.32)/compare/* → No key page: 649 visitors (3%), $0 net revenue, Cool (−0.40)/changelog → Signup: 61 visitors (<1%), $164 net revenue, Warm (+0.53)/changelog → Pricing: 113 visitors (<1%), $67 net revenue, Warm (+0.24)/changelog → Docs: 103 visitors (<1%), $40 net revenue, Warm (+0.28)/changelog → No key page: 748 visitors (3%), $0 net revenue, Cool (−0.46)/signup → Signup: 824 visitors (4%), $1,311 net revenue, Warm (+0.31)Signup → Bought: 138 visitors (<1%), $4,616 net revenue, Warm (+0.54)Signup → Goal: 1,471 visitors (7%), $0 net revenue, Warm (+0.48)Signup → Left: 1,224 visitors (6%), $0 net revenue, Warm (+0.28)Pricing → Bought: 100 visitors (<1%), $3,322 net revenue, Warm (+0.49)Pricing → Goal: 771 visitors (4%), $0 net revenue, Warm (+0.55)Pricing → Left: 3,866 visitors (18%), $0 net revenue, Neutral (+0.07)Docs → Bought: 23 visitors (<1%), $742 net revenue, Very warm (+0.66)Docs → Goal: 412 visitors (2%), $0 net revenue, Warm (+0.56)Docs → Left: 2,466 visitors (11%), $0 net revenue, Warm (+0.34)No key page → Bought: 5 visitors (<1%), $126 net revenue, Warm (+0.38)No key page → Goal: 337 visitors (2%), $0 net revenue, Warm (+0.33)No key page → Left: 10,673 visitors (50%), $0 net revenue, Cool (−0.43)
What the river shows

Colour: first touch

  • Googlepeach
  • Directperiwinkle
  • x.comlilac
  • Redditmint
  • ChatGPTrose
  • Hacker Newsbutter
  • Other sourcesgrey

Each first touch has its own pastel, and its visitors keep it through every stage, so you can follow a source from where it lands to how the week ended. Each band fades a little toward the page it reaches. Point at a source to follow it alone.

A source keeps its colour from week to week, in every segment and on every visit; well-known sources have the same colour on every site. The colour says where visitors came from, nothing about how it went: colour by experience for that. Every band also names itself when you point at it, and the table lists every flow.

Width

Visitors: each counts once in each week they came, in exactly one node of every stage.

Every visitor is counted; nothing is sampled. Sources and landing pages past the six busiest are grouped as Other.

Glow

A coral glow around a flow, over any colouring, is the net revenue credited to its visits by attribution: every payment, refunds and chargebacks taken off. The more revenue, the stronger the glow; no revenue, no glow.

Stages

First touch is the source of the visitor's first visit Tally has. The landing page is the week's first visit's entry page, by its first path segment. The key page is the furthest of signup or checkout, pricing and docs pages the week's visits reached, by the words in their paths. The outcome is bought (a purchase credited to the week's visits), else a goal completed, else left.

How it went: the experience temperature

Cool: friction, worse than this site's usualWarm: better than usual

Grey: no signal could be read. It is never guessed.

In every hover card and in the table (colour by experience paints the river with it). Each flow is read against this whole site over the same weeks: the average of the signals below that it has, each from −1 to +1. A flow with few visits leans toward the site's usual, as if it had ten more visits like the site's, so a handful of visits can't paint it.

  • Engaged timeVisits longer than the site's median visit, against shorter ones: three in four longer reads fully warm on a busy flow, three in four shorter fully cool.Site median: 52s
  • Quick exitsVisits of one page with under 10 s engaged. 25 points fewer than the site's share is fully warm, 25 more fully cool.Site: 24% of visits
  • Scroll depthHow far down their pages visitors scrolled. 25 points deeper than the site's average is fully warm.Site average: 62% over 64,847 pages
  • Rage clicksThree or more clicks within a second in one spot, in recorded sessions only. 10 points fewer of the recorded visits than the site's share is fully warm.Site: 3% of 5,538 recorded visits
  • Dead clicksA click that changed nothing within a second, in recorded sessions only. 20 points fewer than the site's share is fully warm.Site: 3% of 5,538 recorded visits
  • Refunds and chargebacksRefunds and chargebacks per purchase credited to the flow. 25 points fewer than the site's rate is fully warm.Site: 20% of 266 purchases

Not yet: support tickets, reviews. They aren't connected, so they never colour a flow.

Fig. 17Labs: el río de flujo del sitio de ejemplo durante ocho semanas, del primer contacto al resultado. El ancho son los visitantes, el color el primer contacto, y el brillo los ingresos.

11Alertas

Un mensaje por cada venta, donde sea que los leas.

Un mensaje por cada venta, con de dónde vino el comprador y cómo se vinculó la venta; un pico o una caída frente a lo habitual para esa hora; problemas con un proveedor de pagos; y un resumen diario o semanal. Las horas de silencio los retienen hasta la mañana.

Ejemplo

Una venta

Asunto: yoursite.com: New sale: $49.00 from Reddit

First came from Google on 1 Nov; 3 visits; bought on a visit from Reddit: /blog/stripe-fees → /pricing → /signup → /thanks.͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ 

El resumen diario

Asunto: yoursite.com: Tuesday 10 November

Hacker News sent 36 visitors, up from 7 the day before.͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ ͏‌ 
  • SlackUn webhook entrante a un canal.
  • DiscordEl webhook de un canal.
  • TelegramTu propio bot, a un chat o canal.
  • WebhookJSON a tu endpoint, firmado.
Fig. 18Una alerta de venta y un resumen diario del sitio de ejemplo, tal como los escribe el producto, y los cinco lugares adonde pueden ir.

12API, CLI y MCP

Tus cifras en tus propias herramientas.

Crea una clave de solo lectura en la página Setup de un sitio; solo se guarda un hash. La API REST responde con las mismas cifras del panel, la línea de comandos las imprime como tablas y el servidor MCP permite que un asistente de IA haga sus propias preguntas. Marca Record payments y una clave también permite que tu servidor envíe a la Payments API pagos de cualquier otro proveedor.

Ejemplo

REST API

$ curl -H "Authorization: Bearer $TALLY_API_KEY" \
    "$TALLY_API_URL/api/v1/sites/k3xq2mfa7twp/breakdown/source?period=30d&sort=revenue"
{
  "dimension": "source",
  "linked_revenue": { "cents": 529030, "currency": "USD", "exponent": 2 },
  "rows": [
    {
      "channel": "Organic Search",
      "label": "Google",
      "paying_visitors": 29,
      "payments": 29,
      "revenue": { "cents": 111800, "currency": "USD", "exponent": 2 },
      "share": 0.2686,
      "value": "Google",
      "visitors": 3033
    },
    …
  ],
  "sort": "revenue",
  "total_visitors": 11293
}

Línea de comandos

$ tally sources --by revenue --period 30d
Last 30 days · 2026-10-13 to 2026-11-11 · UTC
11,293 visitors · by revenue

SOURCE       CHANNEL         VISITORS  SHARE    REVENUE  SALES
Google       Organic Search     3,033  26.9%  $1,118.00     29
Direct       –                  2,218  19.6%  $1,070.48     27
x.com        Organic Social     1,273  11.3%    $988.40     25
ChatGPT      AI Assistants        806   7.1%    $692.18     18
Reddit       Organic Social       880   7.8%    $483.66     12
Newsletter   Email                432   3.8%    $358.23      9
Hacker News  Organic Social       671   5.9%    $348.86      9
Perplexity   AI Assistants        274   2.4%    $230.48      6

Servidor MCP: 16 herramientas de solo lectura

  • list_sites
  • get_overview
  • get_breakdown
  • compare_periods
  • list_sales
  • get_receipt
  • get_coverage
  • list_visitors
  • get_visitor
  • get_realtime
  • get_goals
  • get_funnels
  • get_customer_value
  • get_peak_hours
  • get_engagement
  • get_purchase_paths
Fig. 19Las fuentes del sitio de ejemplo por ingresos en los últimos 30 días, desde la API y desde la línea de comandos, y las herramientas del servidor MCP.

13Privacidad

Tres formas de contar, y lo que cada una no ve.

Elige un modo para cada sitio. Elijas el que elijas:

  • La dirección IP del visitante se usa para saber su ciudad y luego se descarta. Nunca se almacena, se registra ni se escribe en disco.
  • El modo sin cookies no necesita ninguna cookie. Cuenta a un visitante por un hash de la dirección IP y el navegador, con una sal que cambia cada día y después se borra, así que nadie puede ser seguido de un día a otro. Se guarda el hash; la dirección, nunca.
  • Los ID de visitante nunca aparecen en los registros.

El aviso de privacidad (en inglés) explica qué se guarda, durante cuánto tiempo y quién lo trata, y el acuerdo de tratamiento de datos (en inglés) cubre los datos de tus visitantes.

Con cookie

Una cookie propia reconoce a los visitantes que vuelven de un día a otro.

Cookie
Una cookie propia, durante un año
Visitantes que vuelven
Reconocidos de un día a otro
Stripe Payment Links
Etiquetados con el visitante, así que la venta se vincula

Sin cookies

Sin cookie. Cada visitante se cuenta una vez al día.

Cookie
Ninguna
Visitantes que vuelven
Contados una vez al día
Stripe Payment Links
Sin etiquetar, porque no hay ID de visitante que añadir

Primero el consentimiento

Sin cookies hasta que tu banner informe del consentimiento; después, una cookie.

Cookie
Ninguna hasta que tu banner diga que sí
Visitantes que vuelven
Reconocidos desde la visita en la que dan su consentimiento
Stripe Payment Links
Etiquetados en cuanto dan su consentimiento
Fig. 20Los tres modos y lo que muestra cada uno.

14Cambiar desde DataFast

¿Vienes de DataFast? Cambia una etiqueta.

Tally lee lo mismo que la etiqueta de DataFast, así que el código de tus páginas sigue funcionando: objetivos con window.datafast(), atributos data-fast-goal con sus propiedades data-fast-goal-* y data-website-id en lugar de data-site.

Los visitantes que vuelven conservan su datafast_visitor_id, así que el código de checkout que ya lo lee sigue vinculando ventas, y también el datafast_visitor_id de tus metadatos de Stripe.

  1. Quitar: <script defer data-website-id="dfid_…" data-domain="yoursite.com" src="https://datafa.st/js/script.js"></script>
  2. Añadir: <script defer data-site="k3xq2mfa7twp" src="https://t.tallybyoutpost.com/script.js"></script>
  3. <button data-fast-goal="signup">Start free</button>
  4. window.datafast("checkout_started", { plan: "pro" });
Fig. 21La única línea que cambia en tus páginas. Las de debajo siguen funcionando tal cual.

15Configuración

Una etiqueta, y mira cómo llega la primera visita.

La etiqueta pesa unos 3 KB, se carga con defer y no tiene dependencias, así que nunca frena tu página. Incluye el tiempo activo, los objetivos y los clics en enlaces a otros sitios. Un objetivo es tally('signup') o un atributo data-tally-goal en un botón.

  1. Añade tu sitio

    Su nombre, su dominio y cuál de los tres modos cuenta sus visitantes.

  2. Pega una etiqueta

    En el head de cada página. Las rutas de las apps de una sola página se siguen solas.

  3. Mira la primera visita

    La página de configuración la espera y dice de dónde vino.

  4. Conecta los pagos

    Stripe, Paddle, Lemon Squeezy, Polar, WooCommerce o Squarespace, con una clave que creas tú; primero llegan los últimos 365 días. Tu servidor envía los pagos de cualquier otro proveedor a la Payments API.

<script defer data-site="k3xq2mfa7twp" src="https://t.tallybyoutpost.com/script.js"></script>

Funciona. Recibiendo visitas.

Primer visitante: AlemaniaBerlin · Chrome en macOS · desde x.com

Ejemplo
Fig. 22La configuración y la comprobación en directo de la página de configuración, aquí con un primer visitante de ejemplo.

16Precios

Un plan. Todos los sitios. Precio por eventos.

Todo lo que hace Tally, en tantos sitios como tengas. El precio depende de cuántos eventos envían tus sitios en un mes, y un evento es una vista de página o un objetivo.

9 US$ al mes

Hasta 10 mil eventos al mes, facturados mensualmente.

Empieza gratis

14 días gratis, sin tarjeta. Elige un plan antes de que termine la prueba; cancela cuando quieras.

Todos los planes incluyen

  • Todos tus sitios, en un solo plan
  • Ingresos por fuente, con comprobante y cobertura para cada venta
  • Stripe, Paddle, Lemon Squeezy, Polar, WooCommerce, Squarespace y la Payments API
  • La lista de visitantes, objetivos y embudos
  • Grabación de sesiones y mapas de calor
  • Alertas y resúmenes por email, Slack, Discord, Telegram o webhook
  • Una API REST, una CLI y un servidor MCP
Todos los escalones, en dólares estadounidenses
Eventos al mesMensualAnual
10 mil9 US$81 US$6,75 US$ al mes
100 mil19 US$171 US$14,25 US$ al mes
200 mil29 US$261 US$21,75 US$ al mes
500 mil49 US$441 US$36,75 US$ al mes
1 M69 US$621 US$51,75 US$ al mes
2 M89 US$801 US$66,75 US$ al mes
5 M129 US$1161 US$96,75 US$ al mes
10 M169 US$1521 US$126,75 US$ al mes
  • Anual

    Doce meses por el precio de nueve.

  • Miembros fundadores

    Los primeros 100 clientes tienen un 30 % de descuento con el código FOUNDING mientras sigan suscritos.

  • Clientes de Outpost

    Un 50 % de descuento mientras también tengas un plan de Outpost.

Los descuentos de fundador y de Outpost no se combinan: recibes el mayor. Ambos se aplican a los planes anuales. ¿Más de 10 M eventos al mes? Escribe a hello@tallybyoutpost.com.

Preguntas

  • ¿Cuánto cuesta?

    Un plan con todos los sitios, con precio según los eventos: desde 9 US$ al mes por 10 mil eventos hasta 169 US$ al mes por 10 M. El pago anual cuesta 9 meses. Cada cuenta empieza con una prueba gratuita de 14 días, sin tarjeta: elige un plan antes de que termine para seguir midiendo, y cancela cuando quieras.

  • ¿Qué pagos lee?

    Los de Stripe, Paddle, Lemon Squeezy, Polar, WooCommerce y Squarespace, cada uno conectado con una clave que creas tú (WooCommerce y Squarespace también con un clic), y los de cualquier otro proveedor que tu servidor envíe a la Payments API. Stripe llega más lejos: Checkout, Payment Links, suscripciones y facturas, con reembolsos y contracargos. Las ventas de Paddle, Lemon Squeezy y Polar se vinculan por el ID de visitante que se pasa a su checkout, o por el email del comprador; los pedidos de WooCommerce, por la página de pedido recibido, con el snippet en la tienda; los de Squarespace, por la página de estado del pedido, con el snippet en Code Injection.

  • ¿Funciona con WooCommerce?

    Sí. Conecta la tienda con un clic en la propia pantalla de aprobación de WooCommerce, desde la página Integrations o con el botón Connect WooCommerce to Tally del plugin de WordPress de Tally; una clave de la API REST también sirve. Entra un año de pedidos, reembolsos incluidos, y después cada pedido en segundos. El plugin además añade la etiqueta a cada página y guarda el ID de visitante del comprador en el pedido, así que cada venta se vincula con su visita.

  • ¿A qué se atribuye una venta si el comprador vino varias veces?

    A su última visita que no fue directa, o a su última visita si todas lo fueron. La primera visita también se registra, y el comprobante muestra ambas.

  • ¿Necesito un banner de cookies?

    El modo sin cookies no pone ninguna cookie. El modo con cookie pone una cookie propia, que en la UE y el Reino Unido suele requerir consentimiento; el modo «primero el consentimiento» sigue sin cookies hasta que tu banner llama a tally('consent', true).

  • ¿La etiqueta ralentiza mi sitio?

    Pesa unos 3 KB comprimida, se carga con defer y nunca retrasa una página ni un enlace.

  • ¿Qué registra sobre mis visitantes?

    Páginas, tiempo activo, profundidad de scroll, objetivos y clics en enlaces a otros sitios, con la ciudad y el navegador. La dirección IP se usa para saber la ciudad y se descarta; nunca se almacena. La grabación de sesiones está desactivada hasta que la actives; enmascara cada campo y nunca graba una contraseña.

  • ¿Quién lo hace?

    Tally lo hace el equipo detrás de Outpost, la plataforma de crecimiento, en Tesseract Systems Corporation. Es un producto propio.

Cualquier otra cosa: hello@tallybyoutpost.com