How the Linnworks integration works
Once the Linnworks app is installed, Fulify creates and updates Linnworks stock items from your products. This page explains how products map to stock items, which fields Fulify writes, when it pushes, and where Fulify deliberately stops.
The short version: Fulify owns product content, Linnworks owns stock. Data only flows one way, from Fulify to Linnworks.
Matching on SKU
Fulify recognises a stock item by its SKU. Every push is create-or-update:
- If a stock item with that SKU exists, Fulify updates it.
- If not, Fulify creates it.
Pushing the same product ten times gives you one stock item, not ten. If you install the app on a Linnworks account that already holds your products, Fulify finds and updates the existing items rather than duplicating them.
If someone deletes a stock item in Linnworks, Fulify creates it again on the next push.
A product with no SKU can't be sent. It shows in the Sync status panel on the Linnworks card with the reason, and on the Actions page.
Variants become separate stock items
Linnworks counts and picks individual sellable units, so Fulify flattens variants:
- A simple product becomes one stock item.
- A product with variants becomes one stock item per variant, with no extra item for the parent. A T-shirt in three sizes creates three stock items.
Each variant's stock item:
- keeps the variant's own SKU
- gets a title made of the product name and its option values, for example Blue Jeans 32W 32L
- carries the product's SKU in a Parent ID extended property, so you can group the variants in Linnworks
Variants that have their own SKU but no option values (common in supplier feeds) are also sent as their own stock items. Their title is the product name followed by the variant SKU.
A variant with a blank SKU is skipped, and the product's status says how many were skipped.
Variant title separator
By default the product name and option values are joined with a space. Set Variant title separator in the app's settings to put a character between them. Enter - and you get Blue Jeans - 32W 32L. The change applies to titles written from then on.
When a product changes shape
If a simple product gains variants, or a variant is removed or its SKU changes, the old stock item no longer matches anything Fulify sends. Fulify never deletes it, because it may hold stock, sit on a purchase order or be listed on a channel. Instead it appears as a left-over item in Linnworks in the Sync status panel and on the Actions page, with the product name and the SKU to search for in Linnworks. Review it in Linnworks, then click Mark handled. Marking it handled doesn't change anything in Linnworks.
Which fields Fulify writes
You decide which fields Fulify owns. Open Settings → Apps, click Settings on the Linnworks card, and use the toggles under Field mapping.
| Setting | Default | What it does |
|---|---|---|
| Write SKU | Always on | The match key. It can't be switched off. |
| Write product title | Always on | Keeps the same name in Fulify, your channels and Linnworks. |
| Write barcode | Off | Sends the GTIN, or the UPC if there's no GTIN. Leave off if Linnworks holds its own scannable barcodes. |
| Write weight | Off | Leave off if the warehouse maintains weights. |
| Write dimensions | Off | Height, width and depth. |
| Write cost price | Off | Sends your cost price to the Linnworks purchase price. |
| Write retail price (RRP) | Off | Sends your retail price to the Linnworks retail price. |
| Write brand | Off | Writes the product's brand to a Brand extended property on each stock item. |
| Write images | Off | Copies product images into Linnworks, up to 12 per item. |
| Variants without images use the product images | On | Only applies when Write images is on. |
| Linnworks manages inventory | On | See Inventory ownership below. |
| Country specific tax rate | Leave as set in Linnworks | Sets the Country specific rate checkbox beside Tax on each stock item. |
Anything switched off is read from Linnworks and written back unchanged, so the warehouse keeps its own value. Fulify never blanks a field it doesn't own.
A few details worth knowing:
- Barcodes belong to one unit. A variant only ever sends its own barcode, never the product's.
- Variants inherit weight, dimensions, cost price and retail price from the product when they don't have their own, the same way they do on your sales channels.
- Brand is written to every stock item of the product. A product with no brand leaves any value already in Linnworks alone.
- Images are only ever added, never removed, so images the warehouse added by hand survive. The first image is marked as main only if the item had none. If an item already has at least as many images as Fulify would send, Fulify skips the upload.
- Country specific tax rate has three choices. Leave as set in Linnworks means Fulify never touches the checkbox. Choosing On or Off makes Fulify set that value on every push, including on items someone changed by hand in Linnworks.
Choosing which products go to Linnworks
Not every product belongs in the warehouse system, so each product has its own opt-in, and it's off by default. A product reaches Linnworks only when all three are true:
- its master Sync switch is on
- it has a SKU
- Sync to Linnworks is on for it
To opt in one product, open it and switch on Sync to Linnworks under Apps in Visibility & Status. To opt in many, select them on the Products list, click Channel in the bulk bar, and switch on Linnworks in Channel & App Assignments. The dialog shows how many of the selected products are already enabled.
Switching the opt-in off stops future pushes. Nothing already in Linnworks is removed.
Pushes that happen from the product editor also need the product's Channel Sync switch. Saving a product, or switching on Sync to Linnworks in the editor, pushes it to Linnworks only when Channel Sync is on as well. The Sync button, bulk runs and the Fulify API don't check Channel Sync.
When Fulify pushes
- When you opt a product in. Turning on Sync to Linnworks for one product pushes it straight away, as long as its Channel Sync is on. A bulk opt-in queues a background run instead.
- When you save. Saving an opted-in product with Channel Sync on pushes it in the background. Your save never waits for Linnworks.
- When you press Sync. The Sync button on a product pushes to Linnworks first, so a problem on a sales channel can't stop the warehouse getting the product.
- When you sync the whole catalog. On the Linnworks card, Sync whole catalogue shows how many products are eligible. Click Sync all products to push them all in the background, and Stop to end the run after the current batch. Only one run can happen at a time.
Bulk runs are paced to stay within Linnworks' API limits, so a large catalog can take a while. You can leave the page while one runs. When it finishes, the card shows how many items were created, updated, failed or skipped for having no SKU, with a list of the products that couldn't sync.
The Fulify API can also switch products' Linnworks opt-in on, which queues the same kind of background run.
Pricing ownership
Fulify doesn't send any price to Linnworks unless you ask it to. Linnworks usually prices per sales channel, so both price toggles are off by default:
- Write cost price sends your cost to the Linnworks purchase price, which Linnworks uses for margin reporting.
- Write retail price (RRP) sends your retail price to the Linnworks retail price.
These two toggles are the only price controls for Linnworks. If another system such as an ERP owns your prices, leave both off and Fulify won't touch them.
Inventory ownership
Fulify never sends stock quantities, to Linnworks or to your sales channels. Linnworks owns physical stock and pushes quantities to your channels itself.
What Fulify does control is whether your channels track inventory for a product, because a channel with tracking off ignores the quantities Linnworks sends. That's what Linnworks manages inventory is for:
- On (default): when Fulify pushes a product to Linnworks and the product's Inventory Tracking is set to Don't track inventory, Fulify switches it to Track by product for a simple product or Track by variant for a product with variants. Your sales channels pick up the tracking level on the product's next channel sync. A tracking level you set yourself is never changed.
- Off: Fulify leaves tracking alone. Use this if Linnworks handles orders or pricing but stock is managed somewhere else.
Nothing comes back into Fulify
The integration is one-way. Changes you make in Linnworks, including stock, titles and prices, stay in Linnworks and are never written into Fulify. Product data only enters Fulify when someone edits it, from a CSV import, or through the Fulify API. That keeps your product history in Fulify complete: every change has a person, an import or an API key behind it.