All docs

Analytics

Views, unique views, clicks, CTR — what's counted, what's not.

What's tracked

Every table records two event types:

  • view — fired by the embed JS once per page-load via navigator.sendBeacon
  • click — fired when a visitor clicks a product CTA. Server logs it before 302-redirecting to Amazon, so click counts are reliable even if the visitor immediately closes the tab.

Both events store:

  • the table ID
  • the product ASIN (clicks only — views are not per-product yet)
  • a salted SHA-256 hash of the visitor's IP, for unique counting
  • a truncated user-agent

No cookies, no LocalStorage, no third-party tracking IDs.

Where to see it

Open any table → Stats tab. Four big numbers up top:

  • Views — total impressions in the window
  • Unique views — count of distinct IP hashes
  • Clicks — total CTA clicks in the window
  • CTR — clicks ÷ views, displayed as a percentage

Then a sparkline of daily views, then a per-product table sorted by clicks descending.

Period toggle: 7 days, 30 days, all time.

The tables list page also shows a 30-day views column.

Uniqueness reset

The salt used in the IP hash rotates every day at 00:05 UTC. So a visitor who came back two days ago will count as a fresh unique view today — yesterday's count and today's count don't overlap. This is the privacy-preserving alternative to cookie-based unique counting.

Retention by plan

| Plan | History kept | |---|---| | Free | 7 days | | Tables Monthly | 90 days | | Tables Annual | 90 days |

A daily cleanup cron deletes events older than the plan's retention. If you upgrade, events from before the upgrade aren't recovered — only events from that point on benefit from the longer retention.

Latency

  • Views appear in stats within ~5 seconds of the page load.
  • Clicks appear within ~1 second of the click.

Stats are not cached (the embed JSON is cached for 5 min at Cloudflare; the stats endpoint is per-request).

Per-product CTR notes

Per-product views = total table views, because the embed renders every product at once. So if a table has 100 views and Product A got 8 clicks while Product B got 2, the breakdown is:

| Product | Views | Clicks | CTR | |---|---|---|---| | A | 100 | 8 | 8.0% | | B | 100 | 2 | 2.0% |

This is how Lasso, AAWP, and similar tools report it. It tells you which product converts best among visitors who saw the same table. We do not (yet) fire a separate beacon per product card via intersection-observer.

What we don't track yet

  • Geography / country
  • Referrer
  • Device class beyond user-agent string
  • Per-product view events (intersection-observer style)

These are post-launch items.