Connect your Shopware 6 shop to EcomCentral using the Admin API with an OAuth2 Integration (client credentials).
https://shop.example.com — EcomCentral appends /api)/api/oauth/token — a server-to-server flow using an Integration's
Access Key ID + Secret Access Key. Tokens are short-lived (~10 min) and refreshed automatically.
base_url = your shop URL ·
client_id = Access Key ID ·
client_secret = Secret Access Key
| Key | Required | Description | Example |
|---|---|---|---|
base_url |
Required | Shop URL (with or without a trailing /api — it's normalized) |
https://shop.example.com |
client_id |
Required | Integration Access Key ID | SWIAxxxxxxxx… |
client_secret |
Required | Integration Secret Access Key | aBcD… |
baseUrl / url for base URL;
clientId / access_key for the Access Key ID;
clientSecret / secret_key for the Secret Access Key.
| Operation | Method | Endpoint |
|---|---|---|
| Authenticate | POST | /api/oauth/token (client_credentials) |
| List / detail orders | POST | /api/search/order |
| List / detail products | POST | /api/search/product |
| Add tracking code | PATCH | /api/order-delivery/{id} |
| Change order state | POST | /api/_action/order/{id}/state/{transition} |
| Update stock | PATCH | /api/product/{id} |
POST /api/search/{entity}) with a body of
{ page, limit, total-count-mode }, returning { data: [...], total }.
Writes are issued by the entity's UUID (resolved from order number / SKU automatically).
Shopware drives orders through a state machine. EcomCentral exposes the four order states
and the transitions between them (process, complete,
cancel, reopen).
complete an order that hasn't been processed). EcomCentral surfaces
the API's error message when a transition isn't allowed.
| Feature | Supported | Notes |
|---|---|---|
| View orders (paginated) | ✅ | Sorted by orderDateTime DESC; exact total count |
| View order detail | ✅ | Billing + shipping address, line items, totals, payment state, tracking codes |
| Add tracking code | ✅ | PATCH the order delivery's trackingCodes |
| Change order state | ✅ | State-machine transition (process / complete / cancel / reopen) |
| View products (paginated) | ✅ | Name, productNumber (SKU), price, stock |
| Update stock quantity | ✅ | Resolves SKU → UUID, then PATCH product stock |
| Test connection | ✅ | OAuth round-trip + product count |
The Access Key ID or Secret Access Key is wrong, or the Integration was deleted. Recreate the Integration under Settings → System → Integrations and update the credentials.
The Integration's role lacks permission. Either enable Administrator on the Integration, or grant its ACL role read/write on Orders, Products and Deliveries.
Tracking codes attach to an order's delivery. Orders that have no delivery yet (e.g. fully digital orders) can't accept a tracking code. Process the order so a delivery exists first.
The requested state transition isn't valid from the order's current state. Follow the path
open → in_progress → completed; use reopen to return a completed/cancelled
order to open.
Your shop must serve a valid HTTPS certificate. Self-signed certs on staging will be rejected.
Use a trusted or Let's Encrypt certificate (for dev only you can disable peer verification in
Shopware6Client.php).