Docs/Shops/WooCommerce

WooCommerce#

The WooCommerce integration uses Karla's public API and WooCommerce's native webhooks. You don't need a plugin — just point WooCommerce's webhook system at Karla and you're done.

What you need#

  • A WooCommerce store (WordPress 5.0+ with WooCommerce 3.5+)
  • Admin access to your WooCommerce dashboard
  • A Karla API key (generate one under Settings → API Keys in your Karla portal — the viewer role is sufficient)
  • Your Karla shop slug

Overview#

Karla ingests your orders through a single WooCommerce-native webhook: Order created. WooCommerce signs every delivery with an HMAC-SHA256 signature (the X-WC-Webhook-Signature header), and Karla verifies it against a webhook secret generated specifically for your shop. Integration is a matter of configuration — no code, no plugin.

Orders arrive in Karla without shipment data; tracking numbers are attached later (see Tracking numbers below).

Step 1 — Generate your Karla API key#

  1. Sign in to the Karla Portal.
  2. Navigate to Settings → API Keys.
  3. Click Create API Key, pick the viewer role, and copy the generated secret. Note the username shown alongside it — the Karla API uses HTTP Basic authentication.
  4. Note your shop slug — it appears at the top of every Karla portal page.

Step 2 — Fetch your webhook configuration#

Karla generates the webhook delivery URL and secret for your shop. Retrieve both with one API call:

curl "https://api.gokarla.io/v1/shops/{your-shop-slug}/woocommerce/webhook-config" \
  -u "{username}:{api-key-secret}"

The response contains everything you'll paste into WooCommerce:

{
  "delivery_url": "https://api.gokarla.io/api/woocommerce/orders/hook/create/<your-shop-uuid>",
  "webhook_secret": "wcs_..."
}

The delivery URL embeds your shop's unique ID, and the secret (a wcs_... string) is what WooCommerce uses to sign each webhook request.

Step 3 — Configure the WooCommerce webhook#

  1. In your WordPress admin, go to WooCommerce → Settings → Advanced → Webhooks.

  2. Click Add webhook and use these settings:

    FieldValue
    NameKarla — Order created
    StatusActive
    TopicOrder created
    Delivery URLThe delivery_url from Step 2
    SecretThe webhook_secret from Step 2 (wcs_...)
    API VersionWP REST API Integration v3 (latest)
  3. Click Save webhook.

Only the Order created topic is ingested — you don't need webhooks for order updates or deletions.

Step 4 — Verify#

  1. Place a test order in your WooCommerce store.
  2. Open the Karla Portal → Orders view — your test order should appear within a few seconds.

If an order doesn't appear, check WooCommerce → Settings → Advanced → Webhooks → Logs for delivery errors. A 404 response means the Secret or Delivery URL doesn't match what Karla expects (Karla answers invalid signatures with a 404 to prevent probing) — re-copy both values from the webhook-config response in Step 2.

Tracking numbers#

WooCommerce orders reach Karla without shipment data. To attach tracking numbers, push them to Karla via the shipments endpoint, or use a connected carrier or WMS integration.

Next steps#

Was this helpful?