Works with the store you already run.

Three ways an order can reach Partnely. Shopify, WooCommerce and Stripe send orders directly. Every other platform uses the same snippet and API, on every plan.

Order webhook
The platform posts each order to Partnely. Nothing runs on your storefront. Landing URL, cart attributes and coupon codes arrive on the order.
Thank-you page snippet
One script tag in the theme keeps the click id on the shopper's device; a second line on the confirmation page reports the order.
Server API
Your server posts the order to the API with the click id it kept. Same rules, same ledger, no browser involved.
  • Shopify

    Order webhook

    Shopify posts each order to Partnely, signed with the store's webhook secret. The tracking snippet in the theme keeps the click on the shopper's device and writes it to the cart, so the order carries it alongside the landing URL and any discount code. A custom pixel reports the click for Buy it now and express checkouts, which skip the cart. The catalog loads from the public products.json, or from the store's sitemap when that is off.

    Landing URL
    works out of the box
    Cart stamp
    works out of the box
    Coupon code
    works out of the box
    Snippet or API
    works out of the box
    Catalog: one-click import
    Setup steps
    1. Add the tracking snippet below to the theme: Online Store → Themes → Edit code → theme.liquid, just before </head>. It keeps the click and writes it to the cart so the order carries it.
    2. In Shopify admin open Settings → Notifications → Webhooks and choose Create webhook.
    3. Create one webhook for each event: Order creation, Order payment, Order update, Order cancellation, Refund creation. Format JSON, latest API version. Paste the webhook URL below into each one. Order update keeps a pending order's commission in step with edits: items added count once the difference is paid, and removing items from a paid order lowers the commission only when the store refunds the difference.
    4. Required: copy the signing secret shown at the bottom of the Webhooks page and save it below. Partnely refuses unsigned deliveries, so no order is recorded until the secret is saved.
    5. If the store asks shoppers for cookie consent, the snippet follows the store's banner through Shopify's Customer Privacy API and stores nothing until the shopper allows marketing.
    6. Creator discount codes: create each creator's code in Shopify (Discounts → Create discount) and enter the same code on the creator's page in Partnely. Orders using it are attributed even without a click.
    7. Recommended: Buy it now, Shop Pay and other express buttons skip the cart, so those orders do not carry the click. Add the custom pixel below under Settings → Customer events → Add custom pixel, require Marketing permission under Customer privacy, save and connect it. It reports the click when the order is placed; an order whose only creator reference came from the pixel stays unverified and is approved by hand. When Shopify's signed order arrives after the report, it sets the store's amount. When it arrived first, the report is matched to it by order id, taking Shopify's amount and currency, only if it carries the creator's click from before the order and arrives within a day. Check that the creator is right before approving. Try it on a development store first: open a creator link, close the tab, come back to the store later without the link, buy with Buy it now, and look for a snippet postback with that order id in the tracking log. A development store's order is a test order: it is recorded as proof and reversed at once, so it never earns.
  • WooCommerce

    Order webhook

    WooCommerce posts each order to Partnely, with any coupon code on it. For links, WooCommerce's order attribution keeps only the landing page of the visit that ends in the order, so a shopper who comes back another day or through a search loses the click. The tracking snippet and the order meta code below keep it on the order for the whole attribution window.

    Landing URL
    works out of the box
    Cart stamp
    via snippet
    Coupon code
    works out of the box
    Snippet or API
    works out of the box
    Catalog: one-click import
    Setup steps
    1. In WordPress admin open WooCommerce → Settings → Advanced → Webhooks and choose Add webhook.
    2. Create one webhook for each topic: Order created, Order updated and Order deleted. Status Active, API version WP REST API v3. On a store running WooCommerce Subscriptions, add one for Subscription created too; it is required when the store pays commission on renewals and the order meta code below is not installed, since it links each renewal to the creator of the subscription's first order.
    3. Paste the delivery URL below into each one.
    4. Required: type the same secret into each webhook's Secret field and save that secret below. WooCommerce signs every delivery with it; Partnely refuses unsigned deliveries, so no order is recorded until it is saved.
    5. Add the tracking snippet below to every page (the theme header, or a header-scripts plugin), and the order meta code below to the theme's functions.php or a code snippets plugin. The snippet keeps the click in first-party cookies for the attribution window, and the code copies it onto each order at checkout, classic or block.
    6. Keep order attribution enabled (WooCommerce → Settings → Advanced → Features). It stores the landing URL our links carry, which still credits an order placed in the same visit.
    7. Now and then check that WooCommerce still shows every webhook as Active. It switches a webhook to Disabled after more than five failed deliveries in a row and does not send those orders again.
  • BigCommerce

    Thank-you page snippet

    BigCommerce's conversion tracking box runs our code on the order confirmation page, where it reports the order id and subtotal with the click that led to it. That page cannot read discount codes, so orders with only a creator's code need the API.

    Landing URL
    via snippet
    Cart stamp
    via snippet
    Coupon code
    via snippet
    Snippet or API
    works out of the box
    Catalog: CSV upload or API
    Setup steps
    1. Add the tracking snippet in Storefront → Script Manager → Create a script, location Head, on the storefront pages, and a second script with the same snippet on the Order confirmation page.
    2. Open Settings → Data solutions → Affiliate Conversion Tracking, choose Connect and paste the confirmation-page code below into the Conversion Tracking Code field. BigCommerce fills in %%ORDER_ID%% and %%ORDER_SUBTOTAL_DISCOUNTED_IN_CENTS%%, the subtotal after discounts in cents, without tax and shipping.
    3. Place one real order through a creator link and check its order id and amount in the tracking log before creators rely on it.
    4. Orders with only a creator's code and no link click: send them from your server to POST /api/v1/conversions with coupon_codes.
    5. Load your catalog from a CSV export (Products → Export) or through the API.
  • Squarespace

    Thank-you page snippet

    Squarespace's order status page runs our code with the order id and subtotal, which is all it needs to report the order. Discount codes are not available there, so orders with only a creator's code need the API.

    Landing URL
    via snippet
    Cart stamp
    via snippet
    Coupon code
    via snippet
    Snippet or API
    works out of the box
    Catalog: CSV upload or API
    Setup steps
    1. Add the tracking snippet under Settings → Advanced → Code Injection → Header.
    2. Paste the order status code below under Code Injection → Order Status Page. It runs for physical, digital and service products, and its {.if firstPageView} wrapper reports the order once, not each time the shopper reopens the page. Squarespace fills in {orderId} and {orderSubtotalCents}. The code loads the tracking snippet itself, since the header injection is not guaranteed to run on the order pages; if the header's snippet tag carries data-consent="wait", add it to these tags too.
    3. Selling subscriptions, memberships or gift cards: paste the order confirmation code below under Code Injection → Order Confirmation Page as well, since those checkouts show that page instead.
    4. Link tracking needs the checkout on the site's own domain. Place one real order through a creator link and check its order id and amount in the tracking log before creators rely on it.
    5. Load your catalog from a CSV export (Commerce → Inventory → Export).
  • Wix

    Thank-you page snippet

    On Wix Stores the snippet goes in the site header, and a few lines of Velo keep the click and report the order from the thank-you page, with any creator code it used.

    Landing URL
    via snippet
    Cart stamp
    via snippet
    Coupon code
    via snippet
    Snippet or API
    works out of the box
    Catalog: CSV upload or API
    Setup steps
    1. Add the tracking snippet under Settings → Custom code, loading on all pages in the head.
    2. Enable Velo dev mode, paste the first part of the page code below into masterPage.js and the second part into the Thank You page's code. The masterPage part keeps the click only while Wix's consent policy allows advertising cookies, which the site's cookie banner sets, and removes it when the visitor withdraws.
    3. Wix is moving stores to new order fields, and the code reads both the older and the newer ones. Before creators rely on it, place one real order through a creator link and one with a creator's code, and check both in the tracking log.
    4. Load your catalog from a CSV export (Store Products → Export).
  • Stripe

    Checkout webhook

    For brands selling through Stripe Checkout or Payment Links, Stripe posts each completed payment to Partnely, subscriptions included. A creator's tracked link carries the click to a Payment Link on its own; Checkout Sessions the brand's own code creates need the click passed in.

    Landing URL
    via snippet
    Cart stamp
    via snippet
    Coupon code
    works out of the box
    Snippet or API
    works out of the box
    Catalog: CSV upload or API
    Setup steps
    1. In the Stripe dashboard open Developers → Webhooks and choose Add endpoint.
    2. Paste the endpoint URL below and select the events checkout.session.completed, checkout.session.async_payment_succeeded, charge.refunded, invoice.paid and invoice_payment.paid. The last two are needed for subscriptions: the first paid invoice is the order (a free trial is not), and refunds of subscription payments are matched through them.
    3. Required: copy the endpoint's signing secret (starts with whsec_) and save it below. Use the live-mode endpoint: test-mode events are logged, not recorded. Partnely refuses unsigned deliveries, so no order is recorded until it is saved.
    4. Payment Links: when a creator's tracked link opens a Payment Link (on buy.stripe.com, made from the brand's page, or on the store's own domain), the redirect adds the click as client_reference_id, and the tracking snippet on the store's own pages hands it to Payment Link buttons and Buy Buttons there. Leave client_reference_id free for it.
    5. Checkout Sessions your own code creates: set metadata.pn_click from Partnely.attribution() on your page, or put the click id in client_reference_id (for subscriptions, also in subscription_data.metadata). Add metadata.coupon for code-based deals.
    6. Creator promotion codes: Stripe sends only the id behind a promotion code, not the code the buyer typed. Save each creator's promotion code ID (promo_…) on the creator's page in Partnely, next to their code; orders using it are credited once it is saved.
    7. Load your products from a CSV or through the API. Stripe product ids work as external ids.
    8. Gift cards: orders Stripe sends do not mark gift cards, so a gift card sold through Stripe Checkout or a Payment Link earns commission like any other product, whatever the store's gift card setting.
  • Magento / Adobe Commerce

    Server API

    Magento stores usually have a developer on hand. An observer on order placement posts the order to the API with the click id from the shopper's session; the snippet on the success page works as a no-code alternative.

    Landing URL
    via snippet
    Cart stamp
    via snippet
    Coupon code
    works out of the box
    Snippet or API
    works out of the box
    Catalog: API or CSV
    Setup steps
    1. Generate an API key below and keep it on your server.
    2. Add the tracking snippet to the default head so the shopper's click id is stored. Your server can read it from the first-party cookie pn_click (and pn_ref) on the store's domain; in the browser it is in localStorage key "pn_attr" or the pn_click URL parameter. Keep it with the quote.
    3. On sales_order_place_after, POST the order to /api/v1/conversions with order id, subtotal, currency, click id, coupon codes and line items.
    4. Load your catalog through POST /api/v1/products/import or a CSV export.
  • WordPress

    Thank-you page snippet

    WordPress sites selling without WooCommerce (SureCart, Easy Digital Downloads, MemberPress, form plugins) run the snippet in the theme header and report the order from the confirmation page or from a small server hook.

    Landing URL
    via snippet
    Cart stamp
    via snippet
    Coupon code
    via snippet
    Snippet or API
    works out of the box
    Catalog: CSV upload or API
    Setup steps
    1. Add the tracking snippet to the theme header (Appearance → Theme file editor → header.php, or a header-scripts plugin).
    2. On the purchase confirmation page, add the code below with the order id, subtotal and any creator codes your plugin exposes, or POST from PHP to /api/v1/conversions.
    3. Load your products from a CSV or add them by hand.
  • Custom or headless

    Server API

    Any stack works: the snippet stores the click id on the shopper's device, and your server or checkout page posts each order to the API. Same ledger, same rules.

    Landing URL
    via snippet
    Cart stamp
    via snippet
    Coupon code
    works out of the box
    Snippet or API
    works out of the box
    Catalog: API or CSV
    Setup steps
    1. Add the tracking snippet to every page so the click id and link code survive the shopper's visit.
    2. On your order confirmation page queue the order with window.Partnely.q.push(...) (see "Report an order from any page"), or POST /api/v1/conversions from your server with the click id you kept.
    3. Load your catalog through POST /api/v1/products/import, a CSV, or by hand.

Signals: a green dot means the signal works as soon as setup is done; grey means it works once the snippet is installed. Coupon codes work everywhere the order includes the code. Details for developers are in the API reference.

Not on the list? It still works.

Any checkout that can run a script or make an HTTP request can report orders. The redirect and the ledger do not care where the order came from.

POST /api/v1/conversions
Authorization: Bearer pn_live_…

{
  "order_id": "1001",
  "subtotal": 129.00,
  "currency": "USD",
  "click_id": "<pn_click from the landing URL>",
  "coupon_codes": ["AVA12"],
  "line_items": [{ "sku": "MS-VITC", "quantity": 1, "price": 129.00 }]
}

Connect the store in an afternoon.

Pick the platform at sign-up and the Install page shows only the steps that apply.