> ## Documentation Index
> Fetch the complete documentation index at: https://docs.senderz.app/llms.txt
> Use this file to discover all available pages before exploring further.

# WooCommerce

> Connect a self-hosted WooCommerce store via the Auth Endpoint or API keys, with webhooks and customer back-fill.

WooCommerce is self-hosted, so there's no platform OAuth app — each store mints its own REST keys. Senderz uses WooCommerce's Auth Endpoint for a smooth connect, with a paste-keys fallback.

## Connecting

<Tabs>
  <Tab title="Auth Endpoint (recommended)">
    Enter your store URL and click **Connect**. WooCommerce shows an approval
    screen; approving posts the keys back to Senderz and completes the
    connection. Requires your store on HTTPS with pretty permalinks.
  </Tab>

  <Tab title="Paste API keys">
    Generate a REST API key/secret in your WooCommerce admin
    (WooCommerce → Settings → Advanced → REST API) and paste them into
    Senderz.
  </Tab>
</Tabs>

## What happens on connect

<Steps>
  <Step title="Credentials are verified">
    Senderz validates the keys against your store before saving.
  </Step>

  <Step title="Webhooks are provisioned">
    `customer.created`, `order.created` and `order.updated` webhooks are
    created automatically, pointing at Senderz (existing topics aren't
    duplicated on reconnect).
  </Step>

  <Step title="Back-fill runs">
    Existing customers import via the shared importer; the last 60 days of
    order history back-fill.
  </Step>
</Steps>

## Order status → events

WooCommerce order status maps to canonical events:

| Status                           | Event                                    |
| -------------------------------- | ---------------------------------------- |
| `pending` / `on-hold` / `failed` | `checkout.started` (abandonment capture) |
| `processing`                     | `order.completed`                        |
| `completed`                      | `order.fulfilled`                        |
| `cancelled` / `refunded`         | lifecycle events                         |

<Info>
  You can override the status→event map per workspace. Unpaid statuses map to
  `checkout.started`, which captures Israeli external-payment-page
  abandonment (Grow, Cardcom, PayPlus).
</Info>

## Consent

WooCommerce core has no marketing-consent field on the customer object, so customers import **not subscribed** (sends still gate on consent). Guest-checkout-only buyers aren't in the customers collection — new buyers after connect arrive via the `customer.created` webhook.

## Disconnecting

Disconnect best-effort deletes the provisioned webhooks first (which needs the keys), then removes the credentials. A failure only leaves orphaned webhooks that no-op on inbound.

## Popups

WooCommerce popups are served by the **Senderz WordPress plugin**, which hooks the storefront footer. Install it and enter your workspace details. See [Popups & forms](/en/messaging/popups).
