Skip to content

Affiliates

The affiliate program tracks the performance of influencer links. You mint a short, branded link for each influencer; it redirects to a destination on your store with UTM tags and a click id. On Shopify, when that click later turns into an order, Zubby matches it back to the influencer and reports clicks, conversions, attributed revenue, and commission owed. On WooCommerce and custom stores, clicks are counted but orders are not matched back yet (see below).

Affiliates vs. referrals

These are different programs. Affiliates are paid influencer links with a commission percentage, tracked by short URL. Referrals (give-and-get rewards between shoppers and their friends) are a separate program whose settings can be saved but which is not active - see Loyalty & referrals.

Where it lives

Dashboard → Affiliates. The top of the page is the performance report: a KPI strip (influencers, clicks, orders, attributed revenue) and a per-influencer table covering the last 30 days. Below it, the Affiliate links panel is where you mint, review, and manage the links themselves - everything lives on one page.

Minting a link

  1. In the Affiliate links panel, enter the influencer’s name and a short slug (letters, numbers, dashes - this becomes the shareable URL, so keep it memorable: jane10).
  2. Set the destination URL - it must be a page on your own store domain; off-domain redirects are rejected so the link can’t be abused as a phishing redirector.
  3. Optionally add UTM tags and a commission percentage (0–50%). Setting the commission up front means the report computes what you owe instead of you reconciling it in a spreadsheet later.
  4. Share the generated /go/<slug> URL (it carries a store parameter - share it exactly as shown). Clicks and conversions start reporting in the table above.

How a link works

  • Slug - the short path. Links resolve at /go/<slug> and are unique per store.
  • Influencer name - who the link belongs to; this is the row label in the report.
  • Destination URL - where the click lands on your store.
  • UTM source / medium / campaign - optional tags appended to the destination for your own analytics.
  • Commission % - optional. When set, the report computes commission owed; when unset, commission columns show a dash.

How attribution works

  1. A click on /go/<slug> records a unique click id, then redirects the shopper to the destination with that id appended as a sp_click URL parameter.
  2. On Shopify, the Zubby widget loader on your storefront reads sp_click, keeps it in the browser’s local storage for up to 30 days, and writes it into the cart’s attributes (sp_click_id).
  3. Cart attributes carry through to the order. When the order reaches Zubby, the click id is read from the order and the matching click is credited: the order’s revenue becomes the link’s attributed revenue and a conversion is counted.

What this does and does not prove

The match is keyed on a click id, not an analytics last-click estimate, so a credited order really did carry that link’s id. It is not tamper-proof: the id travels in the URL, browser storage, and cart attributes, all of which the shopper’s browser can see or change. Treat commission figures as a reconciliation aid, and review large or unusual payouts before paying them.

Shopify only today

Order matching needs the widget loader on a Shopify storefront. The WooCommerce plugin and custom/headless stores do not pass the click id through to orders, so on those stores the report shows clicks but orders, revenue, and commission stay at zero.

Reconcile before paying

The report selects clicks made during the last 30 days. The browser relay retains a click for up to 30 days, but the report window and a contractual commission window are different things. A later link visit can replace local storage; the Shopify relay also uses a session guard after writing the cart. Do not assume a universal first-click or last-click policy across competing links.

The current code rounds the received order total to whole units and displays the report in the store currency. It does not perform foreign exchange conversion despite older internal USD field names. Matching writes one order ID and value on the click row, rather than maintaining a full commission ledger. Refunds, cancellations, repeat orders, and missing click IDs need reconciliation with the platform before payment; no automatic clawback or payout should be inferred from this report.

Synthetic example: an eligible order total of 89.60 is stored as 90. At a 10% link rate the rounded estimate is 9 in the displayed currency. Compare that with the agreed commission basis, taxes, shipping, refunds, and order status before paying externally. Keep the order and link IDs with your reconciliation record. This estimate is not an invoice.

Reading the report

The per-influencer table is sorted by conversions and shows:

ColumnMeaning
InfluencerThe link owner’s name.
SlugThe link path, shown as /go/<slug>.
ClicksClicks in the last 30 days.
OrdersClicks that converted to an order.
CVRConversion rate = orders ÷ clicks.
RevenueRounded attributed order value, displayed with the store currency.
Comm. %The commission rate set on the link, or a dash.
CommissionRevenue × commission %, rounded - what’s owed.

When more than one link exists, a totals row sums clicks, orders, revenue, and commission across all influencers. The KPI strip at the top mirrors these totals for the whole window.

Gotchas

  • The report window is fixed at 30 days. Older clicks and conversions are not in these numbers.
  • Attributed revenue is tracked in whole currency units (no cents) and commission is rounded - treat the commission figure as an estimate for reconciliation, not an invoice.
  • Commission only computes when a percentage is set on the link. Links without one still track clicks, orders, and revenue.
  • Conversion matching depends on the Zubby widget loader running on the landing page (it is what records the click id), the click id surviving in browser storage until checkout (30 days), and the order reaching Zubby through the store connection. Cleared browser data, private browsing, a different device, or a page without the widget can under-attribute.
  • The shareable URL includes a store query parameter - a bare /go/<slug> without it won’t resolve, so copy the link exactly as the dashboard shows it.

Related

Missing something, or found an error on this page?

Contact support and include the URL of this page (/docs/affiliates).