> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.pivolio.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.pivolio.com/_mcp/server.

# Shopify

The Shopify integration forwards **paid orders** from your store into Pivolio as
server-side conversions. Because those events originate on Shopify's servers
rather than in the shopper's browser, they aren't lost to ad-blockers or Safari
ITP — the conversion arrives even when the pixel doesn't fire.

## Connect your store

#### Generate a write key

In the dashboard, go to **Integrations** and open **Shopify**, then
**Generate write key**. This key belongs to the Shopify source alone — it is
not your SDK write key, and it is the credential the app uses to
authenticate. Keep it secret.

#### Install the Pivolio app

From your **Shopify admin**, install the Pivolio app.

#### Paste the key

Open the app's **connect** screen and paste the write key you generated.
That's the whole handshake — the app calls Pivolio server-to-server with the
key, and Pivolio records your shop domain.

#### Come back to the dashboard

The wizard is polling. Once the app confirms, the card flips to **Store
connected** and shows the shop domain. You don't need to click anything.

## What gets sent

Paid orders arrive as `order_completed` conversion events, carrying the order ID
and revenue that destinations need for deduplication and value reporting. Being
a conversion event, each one earns attribution credit and triggers click
backfill: if the order carries no click IDs of its own, Pivolio looks for
unexpired clicks already recorded against that same person and attaches the most
recent one per platform.

That backfill is why the storefront SDK matters. Shopify's server knows the
order; only the browser knew the `gclid` or `fbclid` that led to it. Run
[`@pivolio/shopify`](/documentation/sd-ks/shopify) on your storefront alongside this
integration and the two halves meet at the person record.

> **Note**
>
> The Shopify source covers checkout. Everything before it — product views, cart
> adds, checkout starts — comes from the storefront Web Pixel extension. See
> [Shopify SDK](/documentation/sd-ks/shopify) for that half of the setup.

## Rotating the key

Creating the Shopify source again **rotates its key**, exposed as **Rotate key**
once a key exists. The old key stops working immediately, so paste the new one
into the app's connect screen straight away — otherwise your store goes quiet
and orders stop arriving. **Remove source** deactivates the key and disconnects
the store.

## Related

* [Shopify SDK](/documentation/sd-ks/shopify) — the storefront Web Pixel extension.
* [Integrations](/documentation/integrations/overview) — every available source.
* [Inbound webhook](/documentation/integrations/inbound-webhook) — for order events from a system Pivolio
  doesn't integrate with directly.