Skip to content

Ecommerce analytics

Know which channel brings each Shopify sale.

twelvebit joins each paid order from Shopify or WooCommerce to the visit that led to it. You see revenue by channel, campaign, landing page and country, next to the traffic.

How it works

From the first visit to the paid order.

  1. Connect the store

    In the site's revenue settings, choose Shopify or WooCommerce. A Shopify store connects with a custom app. A WooCommerce store installs the twelvebit plugin for WordPress.

  2. The script marks the cart

    The script counts the visits and sends the goals add_to_cart and initiate_checkout. It also puts the visitor ID and the visit ID on the cart or the order.

  3. Each paid order finds its visit

    The store sends each paid order and each refund to twelvebit. The order carries the IDs, so twelvebit credits it to the visit that led to it.

Reports

What a store owner sees.

  • Sales by channel

    Revenue by channel, referrer, campaign, landing page and country, next to the visits. Each order counts once, so the rows add up.

  • Cart and checkout funnel

    Build a funnel from a product page to add_to_cart, initiate_checkout and payment. Each step shows the revenue of the people who reached it.

  • One customer's journey

    Open a person to see each visit, goal and payment before the order, with the source of each visit.

  • Refunds on the same visit

    A refund subtracts from the visit of the order that it reverses. The revenue chart can show net revenue, new payments or refunds only.

  • First touch or last touch

    The default is last touch: the visit before the order. The revenue page can switch to first touch: the person's first visit.

  • Questions to your agent

    The MCP server gives your coding agent the same data. Ask which channel brought the most revenue, or show the journey of the last customer.

How twelvebit gives the credit for each payment → Attribution models explained →

Setup

Shopify and WooCommerce, step by step.

Each paid order becomes a payment: the order total in the store currency, with the first product as the plan.

How Shopify and WooCommerce stores connect to twelvebit
StoreShopifyWooCommerce
How you connectA custom app with the scopes read_orders, write_script_tags, read_customersThe twelvebit plugin and a webhook secret
Script on the storePaste the tag with ?shopify=1 into theme.liquid. Shopify stops running script tags on 1 March 2027.The plugin adds it to every page.
Goals sent for youadd_to_cart, initiate_checkoutadd_to_cart, initiate_checkout
How the order finds the visitThe IDs go into the cart attributes. Shopify copies them to the order.The plugin saves the IDs on each new order, in classic and block checkout.
Orders sentThe orders/paid webhookWhen the status becomes Processing or Completed. twelvebit counts the order once.
Refunds sentThe refunds/create webhookEach refund
SignatureHMAC-SHA256 with the app's secretHMAC-SHA256 with the webhook secret
NeedsSettings → Apps → Develop apps in the Shopify adminWordPress 5.8 and PHP 7.4 or later

Shopify setup → WooCommerce setup →

Details

Script, privacy, price and limits.

Install the script

On Shopify, paste the twelvebit tag into theme.liquid, with ?shopify=1 in its address. That turns on Shopify mode: the script puts the visitor on the cart, so each order joins its visit. Then connect the store, so that twelvebit receives the orders: the checkout pages of Shopify do not load theme code, so a tag alone counts visits, not orders. The connection also adds a ScriptTag while Shopify still accepts new ones, but Shopify stops running script tags on 1 March 2027. If both copies run, the script runs once on each page, so visits do not count twice. See install.

Privacy for EU stores

The script stores a random visitor ID (_tb_vid, 1 year) and a random visit ID (_tb_sid, 30 minutes) in first-party cookies. It does not read form fields and does not record sessions or screens. IP addresses are not stored. The app runs in Frankfurt, Germany, and the database runs in Vienna, Austria. See security and data, and the guide Shopify analytics without a cookie banner.

Cookieless mode sets no cookies. Then the script puts no IDs on the cart, and an order joins a visit only when its email matches a visitor who identified. On Shopify, add data-cookieless="true" to the theme tag. The ScriptTag copy from the connection does not read that setting.

Price

Plans start at $9 a month for 10k events. Page views and goals count, including add_to_cart, initiate_checkout and each paid order. Pings (time on page), bot and AI crawler hits, identify calls and outbound links are free. See pricing.

What it does not do

  • No session replay and no click or scroll heatmaps. The heatmap shows visits by weekday and hour.
  • No multi-touch model. One order goes to one visit, not split across many visits.
  • No cohort or retention reports, and no A/B tests.
  • No export of raw events and no sync to a data warehouse. The API and the MCP server return totals, people and journeys.

Paste one prompt. Watch the first events arrive.

Start free. Your agent does the setup, and you see revenue next to the traffic that brought it.

14-day free trial · cancel any time