> 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.

# Integrations

An **integration** is a source of events — something that sends data *into*
Pivolio. A [destination](/documentation/core-concepts/destinations-vs-integrations) is the
opposite end of the same pipe: it takes the enriched events and sends them *out*
to an ad platform's Conversions API.

Every integration authenticates with its own **write key**, minted when you
create it in **Integrations**. Events from all your sources land in the same
workspace stream, get the same identity resolution and attribution, and fan out
to the same destinations — so you can run the browser SDK and a server-side
source side by side without double-counting, as long as they agree on
`event_id`.

## Available now

#### [JavaScript SDK](/documentation/integrations/java-script-sdk)

First-party events from your site or app — the only source that captures
click IDs, UTMs and browser identity.

#### [Inbound webhook](/documentation/integrations/inbound-webhook)

POST events to an HTTPS endpoint from any backend, authenticated by a write
key.

#### [Shopify](/documentation/integrations/shopify)

Forward paid orders from your store as server-side conversions.

## Coming soon

The sources below are **not yet available**. They appear in the dashboard's
**Integrations** catalog as disabled cards so you can see what's planned — they
cannot be connected, and there is no write key to generate for them yet.

* **WooCommerce** — WordPress store events via the Pivolio plugin.
* **BigCommerce** — headless and hosted storefront order events.
* **HubSpot** — contacts, deals and lifecycle stages.
* **Salesforce** — leads, opportunities and account data.
* **Klaviyo** — email and SMS engagement events and profiles.
* **Stripe** — subscription, invoice and payment lifecycle events.
* **Snowflake** — warehouse-driven event loads.
* **Zapier** — connect anything Zapier can reach.
* **Segment** — forward an existing Segment stream.

Until one of these ships, the [inbound webhook](/documentation/integrations/inbound-webhook) covers the same
ground: anything that can make an authenticated HTTPS POST can be a source.

## Choosing a source

* **You want click IDs and attribution.** Use the
  [JavaScript SDK](/documentation/integrations/java-script-sdk). Click IDs (`gclid`, `fbclid`, `ttclid`
  and the rest) only exist on the landing page URL, and only a browser source
  can capture them.
* **Your conversion happens on the server.** Use the
  [inbound webhook](/documentation/integrations/inbound-webhook) — a refund window closing, a lead qualifying, a
  subscription renewing. Server-side events aren't blocked by ad-blockers or
  Safari ITP.
* **You sell on Shopify.** Use the [Shopify](/documentation/integrations/shopify) integration for paid
  orders, and the SDK on your storefront for everything before checkout.

Running both a browser source and a server source for the same conversion is
normal and recommended — send the same `event_id` from both and Pivolio
deduplicates on `(workspace, event_id)`, keeping whichever arrives first.