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
Sign up with your name, your email and a password. 14 days free, no card needed.
Open the link in the email we send and press Confirm.
Add your first site: its name, its domain (its subdomains are counted too) and how its visitors are counted.
Mode What it does Cookie A first-party cookie recognises returning visitors across days. Cookieless No cookie. Each visitor is counted once per day. Consent first Cookieless 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:
<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:
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:
| Provider | What you paste |
|---|---|
| Stripe | A restricted key that can only read your payments. |
| Paddle | Paddle Billing: an API key with read permissions. |
| Lemon Squeezy | An API key, made just for Tally. |
| Polar | An organization access token with read scopes. |
| WooCommerce | Your store's address and a REST API key. |
| Squarespace | Connect with Squarespace, or a per-site API key. |
| Anything else | Post 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:
- Stripe CheckoutPass the visitor's id when your server creates a Checkout Session.
- Stripe Payment LinksThe snippet tags
buy.stripe.comlinks on its own. - PaddleThe visitor's id in
customDatawhere Paddle.js opens the checkout. - Lemon SqueezyThe visitor's id as custom data on buy links.
- PolarThe visitor's id in metadata, or as a checkout link's
reference_id. - WooCommerceThe snippet on the order-received page, and nothing else.
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.
$49.00
How this payment was tied to a visitor
- First visitgoogle.com · Nov 2
- Credited visitx.com · Nov 5
- Linked by checkout metadata
metadata.tally_visitor_id - 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:
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.
- Goals and identifyCount signups and other moments, and match customers by email.
- Privacy modes and consentWhat each mode keeps, and how consent mode listens to your banner.
- Serving it from your domainServe the script from your own domain.
- REST APIRead the same numbers from your own code.
Something missing, or not what you see? Write to support@tallybyoutpost.com and say which page.