# Crossdeck for WooCommerce

> Source: https://cross-deck.com/docs/woocommerce/ · Crossdeck developer docs (generated from the published page).

Setup
Install the plugin, paste one key · automatic identity + order revenue
·
~5 min read
·
Updated August 5, 2026

Everything from install to identity to revenue — from one plugin. Install **Crossdeck for WooCommerce** and paste a single **Secret key**: the web SDK loads on **every storefront page**, logged-in customers are identified **automatically** via WordPress, and every **paid WooCommerce order** books as **revenue** — normalized to USD, refunds reversed — on the same identity graph as your analytics and errors. This doc covers install & connect, verifying, custom domains, automatic identity, and how order revenue joins.

One plugin, one key.

WooCommerce runs on your own WordPress server, so the connector is a WordPress **plugin**. You paste your Crossdeck **Secret key** (`cd_sk_`) once in the plugin settings — it stays server-side on your store and is never exposed to a browser. The plugin fetches your project's publishable key from Crossdeck, injects the storefront SDK, and starts booking orders. Nothing else to configure.

## TL;DR

- **Install the plugin.** Download [the free plugin zip](https://cross-deck.com/docs/woocommerce/crossdeck-for-woocommerce.zip) and upload it in **Plugins &rarr; Add New &rarr; Upload**, then activate it. No marketplace gate.

- **Paste one key.** In **WooCommerce &rarr; Settings &rarr; Crossdeck**, paste your **Secret key** (`cd_sk_…`) and save. That links the store to your Crossdeck project.

- **Secret key stays server-side.** It lives in your WordPress config, never in a browser. The storefront SDK uses the *publishable* key the plugin fetches for you.

- **Identity is automatic.** WooCommerce is WordPress, so a logged-in customer's email resolves them to a known person **server-side** — no attributes, no snippets.

- **Order revenue is automatic.** Each paid order books as revenue (normalized to USD from the order's own currency); refunds reverse it; it counts toward your Crossdeck billing like any other rail.

- **Verify from the first real visit.** Open your store, click around, then watch a live visitor land in **Overview** / **People**. That first heartbeat also locks your Allowed Origins.

## What the connector does

The Crossdeck plugin does three things on your WooCommerce store. First, it loads the Crossdeck web SDK on **every storefront page** — so page analytics, journeys, and front-end error impact start flowing with no per-page setup. Second, because WooCommerce is WordPress, it identifies **logged-in customers automatically** from the server-side session. Third, it books each **paid order** as revenue. Because Crossdeck joins **identity, revenue, errors, and analytics** on one identity graph, you can answer questions no single-layer tool can — for example, *&ldquo;which paying customers hit checkout errors last week,&rdquo;* or *&ldquo;which campaign brought the shoppers who actually bought.&rdquo;*

The order events are **signed and verified** (HMAC, fail-closed) — the plugin reads the authoritative order from WooCommerce server-side and signs it, so Crossdeck never books money from an unverified payload.

## Step 1 — Install & connect

### A. Install the plugin

- **Download the plugin** — [crossdeck-for-woocommerce.zip](https://cross-deck.com/docs/woocommerce/crossdeck-for-woocommerce.zip).

- In **WordPress admin &rarr; Plugins &rarr; Add New &rarr; Upload Plugin**, upload the zip and click **Install Now**.

- Click **Activate**.

[Download the plugin (.zip) &darr;](https://cross-deck.com/docs/woocommerce/crossdeck-for-woocommerce.zip)

Free, and no marketplace gate.

The plugin is free and installs directly from the zip — no WooCommerce Marketplace approval or wordpress.org review to wait on. (A Marketplace listing may follow later; it's never required to use Crossdeck.)

### B. Connect with your Secret key

- In the [Crossdeck dashboard](https://app.cross-deck.com) — or with `crossdeck init` in the CLI — create a **project + app** and copy your **Secret key** (starts `cd_sk_`).

- In your store, open **WooCommerce &rarr; Settings &rarr; Crossdeck**, paste the Secret key, and click **Save**.

- The plugin verifies the key with Crossdeck, links the store to your project, injects the storefront SDK, and registers order events. You're connected.

Use the Secret key here — and only here.

The plugin runs on your server, so the `cd_sk_` secret key belongs in the plugin settings (never in a theme, block, or any client-side code). Crossdeck stores no raw key it doesn't need: the storefront loads only your *publishable* key, and order events are authenticated with a per-store signing secret derived at connect — not your secret key.

## Step 2 — Verify it's working

Open your store and click around. Crossdeck's first heartbeat **auto-learns your store's origin**. Then open the Crossdeck dashboard &rarr; **Overview** / **People** — you'll see a live visitor with geo, and the pages they viewed. Place a test order (or wait for a real one) and watch it land in **Revenue**, joined to the customer. (Data begins from the **first real visit** — that first heartbeat also locks your Allowed Origins to that domain.)

Nothing showing yet?

Check that the plugin is **active** and shows **Connected** in **WooCommerce &rarr; Settings &rarr; Crossdeck**, that the Secret key was saved without error, and that the environment you're viewing in the dashboard matches the key (a `cd_sk_test_` key is sandbox). The first heartbeat can take a few moments.

## Step 3 — Custom domain

Your WooCommerce store already runs on its own domain, so the origin auto-learns on the first heartbeat. If you later move the store to a *different* domain, add the new one to your Allowed Origins — 20 seconds:

&rarr; [Add a domain to your Allowed Origins](https://cross-deck.com/docs/allowed-origins/index.html)

The origin lock happens on the first heartbeat — then it locks.

The store learns *that* origin on its first heartbeat. It will **not** auto-learn a domain you move to *later* — add the new domain to your Allowed Origins yourself, or traffic from it won't be accepted.

## Step 4 — Identity (automatic on WooCommerce)

Identity is **automatic** — this is the WordPress advantage. When a customer is logged in, the plugin reads their email from the server-side WordPress session and identifies them to Crossdeck on page load. No attributes to add, no snippet to wire. Anonymous visitors stay anonymous until they log in or check out; a checkout carries the buyer's email, so even a first-time guest buyer joins to their order.

Why email is the anchor.

Crossdeck keys identity on **email** — the no-backend join rail — so the same customer is one person across their on-site journey, their WooCommerce orders, errors, and analytics. (See [How identity works](https://cross-deck.com/docs/how-identity-works/index.html) for the full model.)

## Step 5 — Revenue (WooCommerce orders, automatic)

Revenue needs **no extra setup**. The plugin listens for order status changes and, for each one, reads the authoritative order from WooCommerce and sends it to Crossdeck, signed:

- **Order paid** &rarr; recorded as revenue, normalized to **USD** from the order's own currency, and joined to the buyer (by email) so it lands on the same person who browsed.

- **Order refunded** &rarr; the revenue is reversed (full or partial), keeping your totals honest.

WooCommerce revenue shows up in the dashboard's **Revenue** surface alongside every other rail, and counts toward your Crossdeck billing just like Stripe, Apple, or Wix revenue — one portfolio, every rail.

Already take payments through Stripe?

If your WooCommerce checkout runs on Stripe, you can also connect the **Stripe** rail in **Developers &rarr; Rails**. Crossdeck deduplicates by order so revenue is never double-counted — use whichever gives you the cleanest join.

## How this differs from the other connectors

- **WooCommerce** (this): install the **plugin**, paste your Secret key. Identity is **automatic** (WordPress session); order revenue is **automatic** (signed order events).

- **Wix:** one-click App Market install &rarr; project + keys auto-created &rarr; SDK injected, plus automatic Wix Stores revenue. Identity for Members via a Velo snippet.

- **WordPress** (no store): the same automatic server-side identity, for content/membership sites without WooCommerce.

- **Webflow:** one-click OAuth marketplace install &rarr; SDK injected. Identity via a `data-crossdeck-identify-email` binding.

- **Framer / Squarespace:** paste a Custom Code / Code Injection snippet. Identity best-effort via `data-crossdeck-identify-email`.

Every connector loads the **same** Crossdeck SDK and feeds the **same** dashboard — only the install, identity binding, and store-revenue path differ per platform.

Crossdeck for WooCommerce — WordPress plugin (paste your Secret key once), storefront SDK injected on every page, automatic server-side identity via the WordPress session, custom-domain add via [Allowed Origins](https://cross-deck.com/docs/allowed-origins/index.html), and automatic WooCommerce order revenue (paid + refunded, normalized to USD, HMAC-signed and verified) on the shared identity graph (August 5, 2026). Related: [Identify users](https://cross-deck.com/docs/identify-users/index.html), [Connect Stripe](https://cross-deck.com/docs/connect-stripe/index.html).
