Theme

Start for free
DocsGet started in 4 steps

01 · Get started

Get started in four steps

From signing up to a sale you can trace back to its visit. Each step says what to do, what you'll see, and how to check it worked.

Step 1: Create your account and add your site

Do

  1. Sign up with your name, your email and a password. 14 days free, no card needed.

  2. Open the link in the email we send and press Confirm.

  3. Add your first site: its name, its domain (its subdomains are counted too) and how its visitors are counted.

    ModeWhat it does
    CookieA first-party cookie recognises returning visitors across days.
    CookielessNo cookie. Each visitor is counted once per day.
    Consent firstCookieless until your banner reports consent, then a cookie.

    Not sure? Cookie mode shows the most. In the EU and the UK a cookie that isn't strictly necessary usually needs consent, which consent-first mode asks for. How the modes differ.

You'll see

The setup steps across the top: Your site, The snippet, Payments. You can leave at any step; signing in again brings you back to it.

Check it worked

The next page is Add the snippet to yoursite.com, with your site's own tag on it. The tag also stays on the site's Setup page.

Step 2: Add the script

Do

Paste the tag into the <head> of every page. It loads with defer, so it never holds up your page. Choose your platform:

Show the code for

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

Paste it into the <head> of every page.

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

In app/layout.tsx, the root layout: inside its <head>.

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

In index.html, inside <head>: every route of the app shares it.

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

In a classic theme's header.php, just before </head>, or in a header-code plugin.

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

Site settings › Custom code › Head code, then publish.

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

Site settings › General › Custom code, at the end of the <head> tag, then publish.

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

Online Store › Themes › Edit code › layout/theme.liquid, just before </head>.

This is an example site's tag: yours carries your site's id. Each platform has its own page.

You'll see

The page waits for the first visit, then says where it came from:

Example

It works. Receiving visits.

First visitor: Berlin · Chrome on macOS · from x.com

The live check on yoursite.com's Setup page

Check it worked

Open your site in a browser while the page is open: it checks every 2 seconds. In your browser's developer tools, the Network tab shows a request to /api/event for each page, answered with 202.

Still waiting? A visit from your own machine counts only with data-allow-localhost (testing on localhost), and an ad blocker may stop the script (serve it from your domain). Nothing showing up lists the rest.

Step 3: Connect payments

Do

Choose the provider you sell through. You make a key that can do only what Tally needs, and paste it:

ProviderWhat you paste
StripeA restricted key that can only read your payments.
PaddlePaddle Billing: an API key with read permissions.
Lemon SqueezyAn API key, made just for Tally.
PolarAn organization access token with read scopes.
WooCommerceYour store's address and a REST API key.
SquarespaceConnect with Squarespace, or a per-site API key.
Anything elsePost each payment from your server with an API key that can record payments.

Each provider's page lists the permissions to give the key and where to make it.

You'll see

Tally checks the key with real calls and names any permission that's missing. Then it adds its own webhook, so new payments arrive as they happen, and imports the past 365 days, showing how far it has got.

Check it worked

The provider shows as connected on the Integrations page, with how many payments it has read and when the last one arrived. Past payments appear on Sales as they're imported.

The import brings history. To tie the sales that come next to the visit that earned them, your checkout carries the visitor's id. Your provider's page has the code:

Step 4: See your first receipt and coverage

Do

Open Sales and choose a payment. Then open Coverage and fixes.

You'll see

Each payment unfolds into its receipt: the buyer's first visit, the visit that gets the credit, what tied the payment to that browser, and the payment, each with an id you can look up with your provider. When nothing links a sale, the receipt says why.

Example

$49.00

How this payment was tied to a visitor

  1. First visitgoogle.com · Nov 2
  2. Credited visitx.com · Nov 5
  3. Linked by checkout metadatametadata.tally_visitor_id
  4. PaymentStripe · Nov 5

Checkout metadata · High confidence

Coverage is the share of sales tied to a visitor, and a fix for each kind that isn't, with the code to add:

Example

82% of the last 30 days' sales are linked to a visitor.

Check it worked

Make a test purchase from a browser that has visited your site (a test-mode key sees test payments). Within a minute or so its receipt says Linked by checkout metadata, or your checkout's own method, with High confidence.

Four strokes and the fifth across: that's a tally.

Something missing, or not what you see? Write to support@tallybyoutpost.com and say which page.