Connected marketplaces and what each one cannot do
More than twenty connectors. They all import orders and send stock, but differ in invoicing, confirmation, and cancellation.
The system has more than twenty marketplace connectors: Allegro, Kaufland, Zalando, Empik, eBay, Erli, eMAG, Otto, Modivo, Pigu, Trendyol, Bol, Cdiscount, AboutYou, Tradebyte, InPost, Temu, Ceneo, BRW, Home&you, Shoper, PrestaShop, WooCommerce, Shopify, Sellasist, IdoSell, Goshop, Turis, AliExpress, and the manual channel.
Step by step
Check which connectors are connected
- Open Integrations → Integrations, then the Available integrations tab.
- Set the Type filter to Marketplace. This leaves the marketplace connector catalog, grouped by type; each group shows its item count above it.
- Switch to My integrations — these are your connections, not the catalog of types. The same Type → Marketplace filter narrows this list in the same way. A tile shows your connection name, with the integration name in smaller text below it.
- A channel absent from My integrations is not connected, whether or not it appears in the catalog.
Check before promising a feature to a customer
- Find the channel in the comparison table below. It describes what that connector cannot do.
- If a channel is in a row marked “not available,” do not look for a switch on its connection screen — there is none. The feature is not disabled; it has not been implemented or the marketplace does not provide it.
- Trying the action anyway will not corrupt data — it ends with an unsupported-feature message and sends nothing.
- Before reporting a bug, check the matching group (see “Two ways to match an offer to a product”). A common case is not a missing feature, but a product with no linked offer on a channel in the first group.
What they all do
Practically all connectors support importing orders and sending stock levels. That is the common foundation.
Where the differences begin
| Feature | Notes |
|---|---|
| Send invoice | Not available for eBay, Otto, Tradebyte, AboutYou (AboutYou issues invoices), Ceneo, WooCommerce, Shopify, Sellasist, or AliExpress. Turis receives only the invoice number, not a PDF file. |
| Confirm order | The auto_confirm setting works the same on every channel and applies only to paid orders and cash-on-delivery orders — as its description in the panel says. Such an order is immediately “confirmed” in WMS, so Subiekt can see it and create a ZK reserving the stock. An unpaid order waits: nothing is sent for it, and it is confirmed automatically when payment arrives — either on the next order import or by periodic payment checks (the “Check payments” connection setting), which has also confirmed orders since 2026-09-21. Where the channel supports it, acceptance is sent to the marketplace during import (Empik, Modivo, BRW, Home&you, Allegro, Trendyol, eMAG, Kaufland, Ceneo, Cdiscount, Pigu, InPost, Tradebyte). Exception: Empik, Modivo, BRW, and Home&you charge the customer only after our acceptance, so acceptance is also sent there for an order that is not yet paid — WMS confirmation still waits for payment. Home&you reveals the customer address only after acceptance, so an order without an address is accepted directly from Home&you’s “waiting for acceptance” list on each order import, and reaches WMS when the channel provides the address. If acceptance fails, it is retried on the next import, and an issue containing the Home&you order number appears in the issue list. Channels that do not support acceptance: eBay, Otto, Zalando, AboutYou, IdoSell, Shoper, Bol, Erli, Temu, Turis, WooCommerce, Shopify, Sellasist, AliExpress. |
| Set shipping details | Not available for eBay or eMAG. |
| Cancel on marketplace | Only Kaufland, Temu, and Shopify. |
| Import returns | Not available for Goshop, PrestaShop, Ceneo, Turis, WooCommerce, Shopify, Sellasist, or AliExpress. Since 2026-09, IdoSell imports return requests from connected shops together with the date the customer reported the return — previously a return was created only when the parcel was scanned at the warehouse. A return shipment number is provided only when the customer sends the parcel through a parcel locker; if they arrange the return themselves, even the shop does not know the number. |
| Offer mirror | Since 2026-09, Ceneo has one, but only for products already in our catalog — the channel has no “my offers” list (details below). |
| Catalog of statuses to import | Only: AliExpress, Ceneo, InPost, PrestaShop, Sellasist, Shoper, Shopify, Temu, Turis, WooCommerce. |
| Catalog of categories to import | Only: Bol, eMAG, InPost, Modivo, Turis. |
A missing feature does not mean a bug — the marketplace does not provide it or it has not been implemented. In that case, the button reports that the operation is unsupported.
Ceneo is an exception worth highlighting
Ceneo has no “my offers” list. Offer import therefore asks Ceneo about our own products — by SKU (or EAN when SKU is missing), 300 at a time — and saves those Ceneo recognizes. A product that is not on Ceneo simply does not appear in the list.
Ceneo returns the entire product page, including competitors’ offers. The system identifies your own offer using the Shop name on Ceneo setting (for example, myshop.com). Without it, offers are imported but without price or stock — a competitor’s price is never saved as ours. The setting appears automatically in the Ceneo connection settings, in the synchronization section. An inactive offer (stock 0) is a product whose Ceneo offer is not currently displayed (usually because it is out of stock), or an offer Ceneo no longer returns.
Reading offers is the Ceneo price-analysis method — if your shop package does not include it, the import ends with a Ceneo API error (in the task log). If two of our products are linked to the same Ceneo product page, their prices and stock are not saved — Ceneo’s response does not tell us which offer belongs to which product. Stock is sent by SKU/EAN anyway, so the offer mirror is not needed for that.
Turis — B2B wholesaler, integration in both directions
Turis is a wholesale ordering platform: the buyer is an employee of a retail shop, the order belongs to their company, prices are wholesale, and payment is usually on terms. The integration:
- imports orders changed since the last import;
- sends status changes — each Turis shop has its own statuses, so map them first on the connection screen (the list loads after saving the API client secret or by clicking refresh statuses);
- sends a tracking link, not a shipment number — Turis has a single field for this per order. The link comes from the courier’s tracking page, or from the template in the connection settings if the courier has no tracking page. Without either, sending ends with a tracking error instead of silently succeeding;
- sends the invoice number to the order (number field, no PDF file);
- imports the offer mirror — each Turis product (each size and color separately) is one offer, matched to our product first by EAN, then by SKU;
- creates our products from unlinked offers — when you maintain the catalog in Turis and it does not yet exist here. A product with the same EAN or SKU is linked, never duplicated;
- sends stock by Turis SKU — requires imported offers (offer import and sending enabled) and a warehouse mapping with stock synchronization checked;
- sends net wholesale prices — link a net price group and choose “Wholesale price currency” in the connection settings. Turis has no promotional prices, so they are not sent;
- publishes products from PIM — the category comes from category mapping or the “Turis default category” setting. Ending an offer hides the product in Turis but does not delete it (its SKU remains occupied); images are sent only on first publication.
An order cancelled in Turis is imported as inactive only if its status is listed in “Turis statuses that mean cancellation.”
WooCommerce — your WordPress shop
Connection uses the shop’s REST API: the shop address (https only) and a key pair from WooCommerce (Settings → Advanced → REST API) with Read/Write permission. A read-only key can import orders, but the connection test warns that it cannot send anything. The integration:
- imports orders changed since the last import (requires WooCommerce 5.8 or later);
- sends status changes — it uses the shop’s statuses, including those added by plugins; the list loads after the secret key is saved;
- sends the shipment number as an order note — WooCommerce has no shipment-number field. By default this is a customer note that the shop emails to them; set the text in the connection. Optionally, the number also goes into a specified order meta field if a theme or plugin reads it;
- imports the offer mirror — a simple product is one offer; a variable product has one offer per variant. EAN is read from the GTIN field (WooCommerce 9.2+) or from the plugin field specified in settings;
- sends stock to imported offers and enables stock management for them;
- sends the regular price — only in the form (gross or net) used by the shop and only in the shop currency. It does not change the sale price.
NIP and parcel lockers have no native WooCommerce fields — plugins store them. The integration checks common keys; if your plugin uses others, add them in the connection settings. WooCommerce does not accept invoices, order acceptance, or returns.
AliExpress — seller account
Connect through an application in the AliExpress Open Platform console: enter the App Key and App Secret in the connection, then an authorization code. The seller opens the authorization link (instructions are in the field description), signs in, and pastes the code from the return URL. The code is valid for 30 minutes; after saving, the integration retrieves tokens and renews them before they expire. About every 60 days, AliExpress requires authorization again — imports then end with an error asking for a new code. The integration:
- imports orders changed since the last import (first import: 7 days back). New unpaid orders are not imported — they arrive when the buyer pays. New orders already shipped or completed on AliExpress are also not created, so they do not enter fulfillment;
- line-item VAT rate: AliExpress does not provide it. We use the buyer-country rate from “VAT rate by buyer country” (for example,
DE=19), and the default rate (23) for other countries; - cancels an order closed on AliExpress in WMS — AliExpress uses a single “completed” status for both orders received by the buyer and closed orders; orders closed without buyer receipt arrive in WMS as “Closed” and are cancelled;
- changes status to “shipped” — the only status a seller can set on AliExpress: map it in status mapping, and a WMS status change will declare shipment with the shipment number. Other statuses (cancellation, closing, cancellation acceptance) can only be changed in Seller Center — the integration logs this instead of claiming success;
- sends the shipment number (shipment declaration) in one of two ways, selected under “Shipment declaration method”: cross-border (AliExpress logistics service; without a courier mapping, the number is sent as “other carrier” with a tracking link) or local delivery (DBS) — your own courier in the buyer’s country, such as InPost or DPD, matched to the AliExpress carrier by name or through a
COURIER=CODElist. With local delivery, an order with multiple parcels gets one number (the first parcel’s); - imports the offer mirror — an offer corresponds to a product SKU. A SKU without a seller code is visible, but stock and price cannot be sent for it. Countries with their own price (already set on AliExpress or listed under “Countries with own AliExpress price”) create an additional offer per country, for example
1005001:MUG-1@DE; - sends stock, base price, sale price (and its removal), and country-specific prices — a price configuration for DE writes the German country price. The following are rejected: a sale price that is not lower than the regular price, a country price below 70% of the base price (AliExpress rule), another currency, or another price type (gross/net). If there are several price configurations by country, use
price_sync_countryless_offersto select the country whose price is the base price; - publishes products through the publication wizard: categories and their attributes are imported from AliExpress; a product is created with one SKU and immediately made available for sale. Before the first publication, choose a shipping template in the connection settings (without one, the product cannot be published) and the offer language — AliExpress does not accept Polish text, so the title and description come from the product translation (English by default). If AliExpress creates the product but refuses to activate it for sale, the offer ends with an error and the product number — activate it in Seller Center instead of publishing a duplicate. Variants (colors and sizes) are currently published as separate products.
Parcel lockers: AliExpress does not provide the seller with the pickup point selected by the buyer (the API has no such field), so the order always arrives with a delivery address. AliExpress does not accept invoices or order confirmations through its API; this version does not yet import returns or disputes.
Shopify — a shop on the Shopify platform
Connect through an application created in the Shopify Dev Dashboard, in the same Shopify organization as the shop. Enter the name.myshopify.com address (a custom shop domain will not work), plus the application’s Client ID and Client secret. The app must have access to protected customer data (name, email, phone, address) and must be installed in the shop. read_orders and read_products are required; sending shipment numbers, cancellations, stock, and prices requires additional permissions — the connection test lists which ones are missing and what will not work without them. A shop in a different Shopify organization (public app, installed through OAuth) cannot yet be connected. The integration:
- imports orders changed since the last import — on the first connection, from the last 7 days (configurable, up to 60). Test orders are skipped;
- does not import orders without customer data — if the app cannot access protected customer data, the import ends with an explicit error, and the connection test lists the blocked fields. Orders resume automatically once access is granted;
- imports only what remains to be shipped — line items or quantities already fulfilled in Shopify are not imported. The second address line is never lost: it is added to the house number (“12/4”) or the street;
- shows a status calculated from payment and fulfillment — Shopify has no single order status. The fixed set is: cancelled, refunded, payment voided, fulfilled, partially fulfilled, on hold, paid, authorized, cash on delivery, pending payment. Cancelled, refunded, payment-voided, pending-payment, on-hold (Shopify does not allow fulfillment) and fulfilled in Shopify are inactive by default — so an order already shipped by another route is not shipped again. A skipped order returns automatically when it changes in Shopify, for example after payment or release from hold. Status is not sent to Shopify — there is nowhere to save it;
- recognizes cash on delivery by the payment method name — “Cash on Delivery (COD)” by default. If your shop calls this method something else, such as “Pay on delivery,” add its name to “Cash-on-delivery payment methods” in the connection; otherwise the COD order looks like it is awaiting payment and will not arrive;
- sends shipment numbers as order fulfillment — all parcels go in one fulfillment. Shopify recognizes InPost, DPD, DHL, GLS, UPS, FedEx, and Packeta and builds the tracking link itself; for other couriers, the link comes from the courier template in WMS. The customer shipping email is sent only if you enable it in the connection. All parcels in one order must use the same courier — Shopify will not accept multiple couriers in one fulfillment, so the numbers remain unsent with an issue to resolve. The same applies to an order cancelled or on hold in Shopify;
- cancels the order in Shopify — without refunding money or restoring shop stock (the shop handles those); the WMS reason is added as a staff note;
- imports the offer mirror — each product variant is a separate offer;
- sends stock to one shop location, selected in the connection (“Stock location”). Without a selected location, stock is not sent. A variant that does not track stock in Shopify or is not stocked at this location is skipped with a message explaining what to enable in Shopify;
- sends the variant price — only in the form (gross or net) used by the shop and only in its currency. It does not change the compare-at (sale) price.
You can create Shopify products using Create products from unlinked offers on the offers page after importing the offer mirror: first the system matches by EAN and SKU; if there is no match, it creates a product with name, SKU, EAN, images, brand, size, color, and weight. The description is not imported.
Order amounts are in the currency the customer paid in. Cash on delivery is recognized by the payment method name (list in connection settings) and is never treated as prepaid. NIP and parcel lockers have no native Shopify fields — the integration looks for them in order attributes under the keys in connection settings. Shopify does not accept invoices, order confirmation, or returns.
Manual channel
The Manual entry does not query anything. It is for entering orders outside an integration so they follow the normal warehouse process. There are no synchronization settings to look for.
Two ways to match an offer to a product
Connectors fall into two groups:
- Require a linked offer — stock is sent only for a product with a matched, active offer (Linking a listing to a product — without it, nothing gets sent). This is how most connectors work, including Allegro, Kaufland, eBay, Zalando, and PrestaShop.
- Work by product codes — send stock by EAN or SKU without a linked offer. Examples include AboutYou (by SKU), Ceneo, Shoper, Temu, and Tradebyte. AboutYou still imports an offer list; without it, prices cannot be changed.
This distinction explains the common “it works here but not there”: in the first group, a product without a linked offer is simply skipped.
Sellasist — Sellingo shop orders collected in Sellasist
Sellasist collects orders from several channels at once: from a Sellingo shop, but also from Allegro or Erli. Create the connection using the Sellasist panel address (for example myshop.sellasist.pl — paste it as-is; it is not the shop address) and the API key from Sellasist (Integrations → API keys). After saving the key, order statuses from the account are loaded.
The integration:
- imports orders only from selected shops and channels — the “Shops and channels to import” list is in the Connection tab. It includes Sellingo shops, marketplace accounts, and other order sources collected in Sellasist (such as Allegro and Erli). Select only sources not already connected directly to WMS: a channel connected both here and directly (for example Allegro) will enter WMS twice. Moving a channel from a direct connection to Sellasist? After selecting it, orders from recent days will also arrive (the “How many days back to check for changes” setting), including orders already imported by WMS from the direct connection — set this to 1 day for the first import or select the channel after old orders have shipped. Until you select anything, nothing is imported and an issue appears in the issue list;
- saves the order number the customer knows — for a marketplace order, that is the number from the channel (for example Allegro). A Sellingo shop order arrives without a shop order number, so the Sellasist order number is used instead; use it to find the order in the Sellasist panel;
- refreshes status and payment changes for orders from recent days (the “How many days back to check for changes” setting, 14 by default). Older orders are not refreshed automatically;
- cancels an order in WMS when its Sellasist status changes to one marked as cancellation;
- sends status changes and shipment numbers to Sellasist. Forwarding the status to the channel the order came from is disabled by default;
- sends stock by product symbol (SKU) or EAN — choose in settings.
Sellasist does not accept invoices as files, so the integration does not send them.
Implementation note
The connector is identified by its symbol. Changing the symbol in the database or reseeding the catalog can break mappings and stop jobs. This is not something to change in the panel.
Want to see this with your orders? We’ll show you NOXTI with your sales channels and warehouse.
Book a demo