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

# Connect WooCommerce

> Connect your WooCommerce store with a REST API key so orders, customers and products sync into DMLY and store events can start automations.

Connecting WooCommerce lets store events drive your messaging: an order confirmation on
WhatsApp, a nudge for an unpaid order, a back-in-stock alert, and in-chat order-status
answers from real data. DMLY syncs your products, customers and recent orders, then keeps
listening as the store changes.

## Before you start

DMLY connects with a WooCommerce **REST API key**. The panel's **Setup guide** covers the
store side:

1. In your WordPress admin, go to **WooCommerce → Settings → Advanced → REST API** and add a
   key.
2. Give it **Read/Write** permissions; DMLY writes too (order notes, discount codes), not
   just reads.
3. Copy the **Consumer key** and **Consumer secret**.

Your store must be served over **HTTPS**. A plain-HTTP store can't be connected: the
credentials would travel unprotected, and event deliveries couldn't be trusted.

## Connect it

<Steps>
  <Step title="Open the WooCommerce tile">
    On the Integrations page, open the **Commerce** tab and select **Connect** on
    **WooCommerce**.
  </Step>

  <Step title="Enter the store details">
    Under **Store connection**, fill in the **Store URL** (your shop's address, e.g.
    `shop.example.com`), the **Consumer key** (starts `ck_`) and the **Consumer secret**
    (starts `cs_`).
  </Step>

  <Step title="Connect store">
    Select **Connect store**. DMLY calls your store's API to prove the credentials. Wrong
    ones fail here rather than quietly later.
  </Step>

  <Step title="Let the first sync run">
    On success you'll see *"Store connected — syncing products, customers and recent
    orders…"*, and (as the form notes) *"Webhooks are registered automatically on
    connect."* There is nothing to paste back into WooCommerce.
  </Step>
</Steps>

<Note>
  The automatic registration creates webhooks inside your own store: you'll find them under
  **WooCommerce → Settings → Advanced → Webhooks**, each named `Salesbot` plus the event.
  Leave them alone: deleting one silently stops that event reaching DMLY. Disconnecting from
  DMLY removes them properly.
</Note>

To change credentials later, reopen the tile and **Save & reconnect**. **Test connection**
re-runs the check any time.

## What syncs, and where you see it

The first sync imports all products, all customers, and orders from the **last 90 days**;
webhooks keep it current after that. DMLY keeps what messaging needs: order numbers, totals,
statuses and tracking; customer names, emails, phones and spend; product titles, prices and
stock.

The visible surface is small: the tile's **Synced data** panel (the **Products / Customers /
Orders** counts, last sync time, **Sync now**) and its **Recent activity** feed. **There is
no store-order browser**: synced orders don't appear under [Finance → Orders](/finance/orders),
which is for orders you create in DMLY. The synced data exists to power automations, product
pickers and in-chat order lookups.

<Note>
  **The initial sync never fires automations.** Backfilled orders don't trigger **Order
  placed**; only events after you connect do.
</Note>

Store customers are matched to your [Contacts](/contacts/overview) by phone, then email, at
the moment an automation fires. See
[Store automations](/automation/store-automations#who-the-flow-actually-reaches).

## The events DMLY listens for

DMLY registers webhooks for order, customer and product changes, and reads WooCommerce's
order statuses as the store's events: an order turning **processing** counts as paid,
**completed** as shipped, **failed** as a failed payment, **cancelled** and **refunded** as
themselves. They feed the **Store events** triggers listed in
[Triggers](/automation/triggers#store-events) and the `store.*`
[webhook topics](/api-reference/webhooks).

Two WooCommerce particulars:

* **Checkout abandoned** works differently here, because WooCommerce has no checkout object:
  an order that sits **pending** (created, never paid) for about an hour is what counts as an
  abandoned checkout. A customer who bought after abandoning is skipped.
* **Payment failed** does fire from WooCommerce (an order moving to **failed**); the same
  trigger never fires from Shopify.

Every delivery from the store is signature-checked before DMLY acts on it, so a forged event
can't start your automations.

## Disconnecting

**Disconnect** removes DMLY's webhooks from your store and wipes the stored credentials.
Already-synced data stays, so reconnecting later doesn't start from zero, but nothing
updates while disconnected.

## What to build with it

<Columns cols={2}>
  <Card title="Store automations" icon="robot" href="/automation/store-automations">
    Trigger filters, the store steps, and the order-status and COD templates.
  </Card>

  <Card title="Triggers" icon="bolt" href="/automation/triggers">
    The full store-event list alongside every other trigger.
  </Card>

  <Card title="Templates" icon="copy" href="/automation/templates">
    Install the abandoned-checkout and order-status flows in one click.
  </Card>

  <Card title="WhatsApp rules and limits" icon="whatsapp" href="/broadcasts/whatsapp-rules-and-limits">
    Why store-triggered messages should start with an approved template.
  </Card>
</Columns>
