Connect your Ecwid or Lightspeed E-Series store to EcomCentral using Bearer token authentication with your app's secret token and numeric store ID.
Ecwid was acquired by Lightspeed in 2021 and rebranded as Lightspeed E-Series. The REST API v3 remains unchanged — all endpoints, authentication, and response shapes described in this guide apply equally to both Ecwid and Lightspeed E-Series stores.
https://app.ecwid.com/api/v3/{storeId} as the base URL with the same
Authorization: Bearer {secret_token} header.
read_orders, update_orders, read_catalog, and update_cataloghttps://my.ecwid.com/cp/#/products when logged in shows it as the subdomain segment, or via Profile → store URL| Scope | Purpose |
|---|---|
read_orders | List orders and fetch individual order details |
update_orders | Write tracking numbers to orders (add_tracking op) |
read_catalog | List products and fetch individual product details |
update_catalog | Update product stock quantities (update_stock op) |
| Key | Required | Description | Example |
|---|---|---|---|
store_id |
Required | Numeric store ID — found in your Control Panel URL or profile page | 12345678 |
secret_token |
Required | App access token (Bearer token) with the required scopes installed on your store | secret_AbCdEfGhIjKlMnOpQrSt |
storeId for the store ID;
secretToken or token for the secret token.
| Operation | Method | Endpoint |
|---|---|---|
| Test connection / store profile | GET | /profile |
| List orders | GET | /orders?offset=O&limit=N |
| Order detail | GET | /orders/{orderId} |
| Add / update tracking | PUT | /orders/{orderId} with { "trackingNumber": "…", "fulfillmentStatus": "SHIPPED" } |
| List products | GET | /products?offset=O&limit=N |
| Product detail | GET | /products/{productId} |
| Update stock quantity | PUT | /products/{productId} with { "quantity": N } |
https://app.ecwid.com/api/v3/{storeId}. The storeId is interpolated
from your stored credentials at connection time.
trackingNumber but does not document a writable carrier-name field. EcomCentral
therefore accepts only a tracking number for the add_tracking operation — no carrier
input is presented in the UI or sent to the API.
| Status | Meaning |
|---|---|
| Awaiting Processing | Order received; not yet picked or packed |
| Processing | Order is being picked and packed |
| Shipped | Order has been dispatched; tracking number typically available |
| Delivered | Order confirmed delivered to the customer |
| Out For Delivery | Package is with the final-mile carrier en route to the customer |
| Ready For Pickup | Click-and-collect order is ready for the customer to collect |
| Will Not Deliver | Order cannot be fulfilled and will not be shipped |
| Returned | Item(s) have been returned by the customer |
| Status | Meaning |
|---|---|
| Paid | Payment has been captured successfully |
| Awaiting Payment | Order placed but payment not yet received |
| Partially Refunded | A partial refund has been issued |
| Cancelled | Order has been cancelled |
| Refunded | Full refund has been issued |
| Incomplete | Order was started but not completed (e.g. abandoned during payment) |
| Feature | Supported | Notes |
|---|---|---|
| View orders (paginated) | ✅ | Order number, date, payment status, fulfillment status, total |
| View order detail | ✅ | Customer, billing person, shipping address, shipping method, line items, current tracking number |
| Add / update tracking | ✅ | Tracking number only — carrier name is NOT accepted by the Ecwid API and is not sent |
| View products (paginated) | ✅ | Product ID, SKU, name, price, stock quantity |
| View product detail | ✅ | Full record: thumbnail, SKU, price, weight, stock, description (HTML stripped), store link |
| Update stock quantity | ✅ | By numeric product_id passed directly from the detail view — no SKU lookup needed |
| Test connection | ✅ | Calls GET /profile; verifies store name, currency, and store URL |
fulfillmentStatus to SHIPPED on the order. If your fulfilment
workflow uses a different status, update it manually in the Ecwid Control Panel after saving
the tracking number here.
The token is valid but the app is missing the required OAuth scope for the requested operation.
Go to Apps → My Apps in the Ecwid Control Panel, open your app, and verify
that all four required scopes (read_orders, update_orders,
read_catalog, update_catalog) are granted. Re-install the app on
your store after adding scopes.
The requested order or product ID does not exist in the store identified by the store_id
credential. Verify that the correct store ID is saved in EcomCentral. The store ID is numeric
and visible in your Control Panel URL.
Ecwid enforces a rate limit of 600 requests per minute per app token. If you exceed this limit, requests will be rejected with HTTP 429. Reduce the number of simultaneous operations or wait 60 seconds before retrying.
The secret_token is invalid, expired, or the app has been uninstalled from the store.
Re-install the app on your store to receive a fresh access token, then update the EcomCentral
connection with the new token.