---
title: "WooCommerce extension"
description: "Move a WooCommerce catalog to Inttegro, then accept checkout payments and refunds."
canonical: "https://studio.inttegro.com/extensions/woocommerce"
format: inttegro-machine-docs/v1
language: "PHP"
sdk_version: "v12.0.0"
reader_profile: optional
reader_manifest: "https://studio.inttegro.com/machine/php/readers/index.json"
reader_identification: "Optional: declare your client only if known and your current-session capabilities; use reader_manifest for supplemental recommendations."
preamble_estimated_tokens: 312
model_token_report: "https://studio.inttegro.com/machine/token-report.json"
preamble_questions: 5
preamble_source: "general"
recommended_mcp_tools: []
estimated_tokens: 2027
token_estimate_method: "utf8_bytes_divided_by_4"
---

## Machine preamble

**Summary:** Move a WooCommerce catalog to Inttegro, then accept checkout payments and refunds. This PHP representation uses the selected SDK's native names wherever Studio has a verified mapping.

### Five questions

#### Q1. When should the reader use WooCommerce extension?

Use this page as orientation before selecting the narrower guide or reference that owns the implementation contract.

#### Q2. What is authoritative on this page?

Use this page for orientation; follow its canonical SDK, guide, API, or MCP links for exact contracts.

#### Q3. What page-specific constraint matters most?

Use the page to choose a canonical next source instead of treating summary material as a complete implementation contract.

#### Q4. Can Inttegro MCP materially help with this task?

No catalog ability is sufficiently specific to recommend for this page. Use the documentation directly; consult the MCP catalog only if the task later requires governed live account context or a supported operation.

#### Q5. How should the reader verify the answer and continue?

Select the narrowest linked guide or reference, apply its stated completion condition, and verify against authoritative resource state when the task changes data.

## Document content

![WooCommerce](/img/logos/extensions/woocommerce.svg)

# Connect your WooCommerce store

Move your existing catalog into Inttegro once, turn on Inttegro Checkout, and
keep using WooCommerce for carts, orders, and refunds. The setup guides you
through a preflight before anything is imported. [Download the WooCommerce ZIP](https://github.com/inttegro/inttegro-extensions/releases/download/v1.1.1/inttegro-woocommerce-1.1.1.zip) |              |                                                                            |
| ------------ | -------------------------------------------------------------------------- |
| Version      | 1.1.1                                                                      |
| Requirements | WooCommerce, Inttegro for WordPress 1.1.0, WordPress 6.5–7.1, and PHP 8.1+ |
| Availability | Ghana pilot                                                                |

## Before you migrate

Back up the store and choose a quiet migration window. You also need two
dedicated Inttegro keys:

| Key     | Intended permissions                                                              | Keep it for                                       |
| ------- | --------------------------------------------------------------------------------- | ------------------------------------------------- |
| Import  | `prices:create`, `products:create`                                                | The migration only; erase and revoke it afterward |
| Runtime | `orders:create`, `orders:read`, `products:read`, `refunds:create`, `refunds:read` | Checkout, catalog projection, and refunds         |

:::warning API-key scopes are not enforced yet

The permission sets above are the target design, not a security boundary
Inttegro currently enforces. Keep both keys separate from payout and account
administration systems. Remove the import key as soon as migration succeeds.

:::

## Connect WooCommerce

### 1. Install and connect

Download and activate the
[Inttegro WordPress plugin](https://github.com/inttegro/inttegro-extensions/releases/download/v1.1.0/inttegro-wordpress-1.1.0.zip),
then install the
[WooCommerce extension](https://github.com/inttegro/inttegro-extensions/releases/download/v1.1.1/inttegro-woocommerce-1.1.1.zip).
Configure the runtime key in `wp-config.php` as `INTTEGRO_API_KEY`, or save it
under **Settings → Inttegro** and test the connection.

### 2. Run catalog preflight

Open **WooCommerce → Inttegro**, enter the temporary import key, and select
**Run catalog preflight**. Fix every blocking item and review each warning before
you import anything.

Preflight is read-only. It shows what can move, what is already mapped, and
what needs attention.

### 3. Complete the one-time migration

Select **Start one-time migration**. Wait for the final summary, confirm that
the import key was erased from WordPress, then revoke it in Inttegro Studio.

After the import, the screen identifies Inttegro as the catalog authority and
does not offer a WooCommerce-to-Inttegro sync.

### 4. Enable Inttegro Checkout

Open **WooCommerce → Settings → Payments → Inttegro Checkout**, enable the
gateway, review the customer-facing title and description, then save.

### 5. Make a test purchase

Use a low-value product and a real test customer journey. At checkout, confirm
that **Mobile money** appears, the total is correct, and **Place
order** starts Inttegro Checkout.

:::warning The catalog handoff is permanent

Migration writes WooCommerce products to Inttegro once. After it completes,
Inttegro becomes the catalog authority: make future catalog edits in Inttegro,
and the hourly projection will update mapped WooCommerce products. WooCommerce
product creates, updates, and deletes are never written back to Inttegro.

:::

## Check the migration before taking payments

- \[ ] Every eligible simple product and variation has an Inttegro mapping.
- \[ ] Names, SKUs, descriptions, publication state, and current prices look
  correct in both systems.
- \[ ] The temporary import key is no longer stored and has been revoked.
- \[ ] A GHS checkout redirects to Inttegro and returns to the correct order.
- \[ ] A small partial refund is accepted and later reaches a terminal status.

When all five checks pass, Inttegro is ready to serve the catalog projection and
become the payment source of truth for new WooCommerce orders.

## Follow the test order through its lifecycle

The WooCommerce order is created as **Pending payment** while the customer is
completing Inttegro Checkout. The order records the selected payment method
without exposing credentials.

After Inttegro confirms the payment, reconciliation moves the order to
**Processing**, records the Inttegro order reference, and makes the order status
and paid amount agree with Inttegro.

Finally, submit a small partial refund from the order screen and wait for its
terminal state. The refund appears on the original order, including the refunded
amount and updated total.

## What moves—and what does not

The import includes names, descriptions, product type, SKU, first category,
public media URLs, attributes, publication state, and current price. Variable
parents remain containers; eligible variations are imported separately.

Stock quantities, additional categories, downloadable files, and sale schedules
appear as preflight warnings and are not synchronized. The current Inttegro
product contract cannot represent them completely.

Checkout sends the billing contact, WooCommerce order number, totals, line-item
labels and references, and return URLs to Inttegro. Refunds can be partial and
are retry-safe. Pending refunds are reconciled until terminal; a later failure is
added to the WooCommerce order notes for an operator to review.

## If a check fails

Return to preflight rather than forcing the migration. For checkout or refund
failures, keep the WooCommerce order number and its latest order note, then
contact [Inttegro support](mailto:support@inttegro.com). Never send either API
key in a support message.
