> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tryoto.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Sync inventory to your sales channels

> Push available stock from OTO to every connected sales channel automatically, check that the sync worked, and compare your catalog with each channel.

> [!NOTE]
>
> **Where to find it:** Main → Integrations → Sales Channels — [Open in OTO ↗](https://app.tryoto.com/sales-channels)

Every storefront you sell on quotes a stock number. Sync is how those numbers come from one place instead of five, and it is the difference between a catalog that is roughly right and one that is right.

## What it does

When stock changes for any reason — a sale on one channel, a return, a receipt, a count correction — OTO calculates the new availability and pushes it out to every connected channel. The merchant does not update anything anywhere.

Synchronization is available for **Salla**, **Zid**, **Shopify**, **WooCommerce** and **Magento**.

> [!TIP]
>
> **The oversell that sync prevents is the expensive one**
>
> A stockout costs you a sale you never knew you had. An oversell costs you a sale you already took: a cancellation email, a refund, a marketplace metric, and a customer who now knows your stock numbers cannot be trusted. Multi-channel sellers do not oversell because they are careless — they oversell because the same unit was on sale in four places at once.

## Setting it up

Sync is configured per channel, at **Integrations → Sales Channels** → the channel’s **⋯** menu → **Inventory Sync Settings**.

![The Inventory Sync Settings form](https://mintcdn.com/oto/ft-bRlLvOnJkbVoC/images/inv-7-sync-settings.png?fit=max\&auto=format\&n=ft-bRlLvOnJkbVoC\&q=85\&s=2efd9d14a56b661f966e02268f9f799a)

Fig. 1 — One form per channel: what number to send, how often to send it, whether to send it at all, and which of your locations maps to which of theirs.

| Field | What it decides |
| - | - |
| **Sales Channel** <sup>required</sup> | Which channel these settings belong to. Fixed — you reach this form from the channel itself. |
| **Inventory Calculate Method** <sup>required</sup> | What number to send. |
| **Inventory Update Method** <sup>required</sup> | How often to send it. |
| **Inventory Sync** | The master switch. Off, and nothing is pushed to this channel at all. |
| **Multi-Location** | Whether stock is attributed to specific locations on the channel, or pooled. |
| **Pickup Locations** | The mapping between your warehouses and theirs. |

> [!TIP]
>
> **Inventory Sync is a per-channel switch, not a global one**
>
> That matters during onboarding and during trouble. A new channel can be connected, configured and left with sync off until the catalog is aligned; a channel behaving badly can be isolated without touching the other four.
>
> It also means an unexplained stale stock figure has an obvious first thing to check.

### Inventory Calculate Method — what number to send

![The Inventory Calculate Method options](https://mintcdn.com/oto/YkJay8Y-1RDv8ciw/images/inv-8-calc-method.png?fit=max\&auto=format\&n=YkJay8Y-1RDv8ciw\&q=85\&s=3b524ec309a0807b9bdc5ef9feb8d71f)

Fig. 2 — Two methods, each with a Magento-specific variant.

| Method | What the channel is told | When to choose it |
| - | - | - |
| **All Inventory** | The available inventory, in full. | When you would rather sell the last unit than protect it, and your counts are reliable. |
| **Min Inventory** | Available inventory with the minimum stock level deducted. | When a cancellation costs more than a missed sale — marketplaces with performance penalties, or lines you cannot restock quickly. |
| **Magento – Minimum Inventory** **Magento – All Inventory** | The same two choices, in the form Magento expects. | On a Magento storefront. |

**Min Inventory** is where the figure from [inventory tracking](https://docs.tryoto.com/modules/inventory-management/inventory-tracking.md) earns its keep: the buffer you set per SKU is held back from what the storefront sees, so the last few units exist only for you.

> [!NOTE]
>
> **Why Magento has its own entries**
>
> Magento models stock differently from the other platforms, so the same intention — send everything, or hold back the safety buffer — has to be expressed to it in its own terms. The choice you are making is still one of the two; the Magento rows simply exist so that the integration does not have to guess.

### Inventory Update Method — how often to send it

![The Inventory Update Method options](https://mintcdn.com/oto/ft-bRlLvOnJkbVoC/images/inv-9-update-method.png?fit=max\&auto=format\&n=ft-bRlLvOnJkbVoC\&q=85\&s=81f2c3c3793c2cf6b975d72c7fbfa3c6)

Fig. 3 — Push each change as it happens, or batch them.

| Method | Behavior | When to choose it |
| - | - | - |
| **Realtime Update** | Sends the update immediately after a change. | High volume, fast-moving lines, or anywhere two orders can arrive within a minute of each other. |
| **Bulk Inventory Update** | Consolidates changes and sends them at scheduled intervals. | Large catalogs with steady movement, or a channel whose API you would rather not call on every transaction. |

### Multi-location and pickup locations

If you hold stock in more than one warehouse or branch, enable **Multi-Location** and fill in the **Pickup Locations** table beneath it. One row per location, added with **Add New Row**:

| | |
| - | - |
| **Warehouse** <sup>required</sup> | Yours, chosen by search. |
| **Branch** | Optional — for stock held at a branch rather than a warehouse. |
| **Sales Channel Location ID** <sup>required</sup> | Theirs. The identifier the channel uses for the same place. |
| **Location Active** | Whether this mapping is live. A location can be set up and left switched off. |

This mapping is what makes a location-aware storefront work properly. Without it, a channel that offers pickup or per-store availability has no way to know which of your buildings its stock figure refers to — so it either shows a single pooled number, or it shows the wrong one per store.

> [!WARNING]
>
> **Map the locations before you go live, not after**
>
> Turning multi-location on with the mapping half-finished is worse than leaving it off: the channel starts attributing stock to locations that do not correspond to yours, and the resulting discrepancies look like sync failures rather than configuration.

## Checking that it worked

Sync activity is logged at **Settings → Logs → System Logs**, on the **Inventory Sync Logs** tab — one of six log tabs alongside shipment errors, webhook errors, pickup requests, product sync and route automation.

![The Inventory Sync Logs tab](https://mintcdn.com/oto/ft-bRlLvOnJkbVoC/images/inv-10-sync-logs.png?fit=max\&auto=format\&n=ft-bRlLvOnJkbVoC\&q=85\&s=b5c0c9331ac9446afc16a4f25cdf3856)

Fig. 4 — Every column filters, which is what makes this usable as an investigation tool rather than a wall of entries.

| | |
| - | - |
| **SKU** | What was synced. |
| **QTY** | The number that was sent. Filters by a **Min**/**Max** range — which is how you find everything that went out as zero. |
| **Sales Channels** | Where it went. |
| **All Locations** · **Branch Name** · **Warehouse Name** | Which location the figure came from. |
| **Date** | When. |
| **Status** | Whether the channel accepted it. |
| **Error Definition** | Why not, when it did not. |

A failed sync is a silent problem — the channel keeps selling against the last number it was given — so this log is worth a scheduled look rather than a look when something goes wrong.

> [!TIP]
>
> **Filter on quantity, not on status**
>
> Status tells you what failed. The **QTY** range tells you something more useful: filter to a maximum of zero and you have every SKU that was pushed out as unavailable. Some of those will be genuine; the ones that are not are your stockouts that never were, and they will not appear as errors anywhere.

## Catalog comparison

Stock sync only works for products the two systems agree exist. **Synchronize Products**, on the Products page, pulls product information from your connected channels so that SKUs, names and prices line up on both sides.

This is the unglamorous prerequisite for everything else on this page. A SKU that is listed on a channel but absent from OTO gets no stock updates at all, and it will go on selling from whatever number it had when it was set up. Comparing the catalogs is how you find those before a customer does.

> [!TIP]
>
> **Run the comparison after every channel change**
>
> New listings, renamed SKUs and merged variants all break the link quietly. The listings that stop syncing are rarely the ones anyone is watching — which is precisely why they are the ones that oversell.

## Related

* [Sales Channels](https://docs.tryoto.com/modules/sales-channels/overview.md) — connecting the channels in the first place.
* [Inventory tracking](https://docs.tryoto.com/modules/inventory-management/inventory-tracking.md) — where the number comes from.
* [Product configuration](https://docs.tryoto.com/modules/inventory-management/product-configuration.md) — the catalog that sync depends on.


## Related topics

- [Connect and sync a sales channel](https://docs.tryoto.com/modules/sales-channels/sync.md)
- [Order sync: how orders get into OTO](https://docs.tryoto.com/modules/omnichannel-oms/order-sync.md)
- [Sales Channels](https://docs.tryoto.com/modules/sales-channels/overview.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.