# Cin7 Omni

{% hint style="info" %}
**Quick Answer:** The Cin7 Omni integration syncs your inventory, sales, and purchase orders to Moselle automatically. Setup currently requires assistance from Moselle support.
{% endhint %}

## What is the Cin7 Omni Integration?

**The Cin7 Omni integration** connects your warehouse management system directly to Moselle's planning engine. It automates the flow of critical supply chain data, ensuring your forecasts and replenishment plans are based on real-time stock levels.

### Key Benefits:

* **Automated Sync:** Daily updates of inventory, sales, and orders.
* **Unified Planning:** View all your warehouse data in one dashboard.
* **Accurate Forecasting:** Use historical sales data from Cin7 to predict future demand.

## Prerequisites

**Time Required:** 5-10 minutes (with Support) **Difficulty:** Easy

Before you begin, ensure you have:

* [ ] Admin access to your Cin7 Omni account
* [ ] Your **Cin7 Omni Account ID**
* [ ] An **API Application Key** from Cin7

## How to Connect

Currently, the setup process is handled by our team to ensure proper configuration of your warehouse mappings.

{% stepper %}
{% step %}

#### Gather Your Credentials

Log in to Cin7 Omni and retrieve your Account ID and generate an API Application Key.
{% endstep %}

{% step %}

#### Contact Support

Email <support@moselle.io> with your credentials and request the Cin7 Omni integration activation.
{% endstep %}

{% step %}

#### Verification

Once configured, our team will confirm that data is flowing correctly. You should see your products and inventory populate in Moselle within 24 hours.
{% endstep %}
{% endstepper %}

## Data Synchronization Details

### Sync Schedule

Moselle performs a full sync **daily**. This ensures your "Stock on Hand" and order statuses are current.

### Data Sync Strategy: The 90-Day Lookback

To keep your account fast and responsive, Moselle uses a "Lookback Period" strategy for syncing large datasets.

**Why we do this:** Instead of re-downloading your entire history every single day (which can be slow and cause timeouts), we only check for changes made in the last **90 days**. This is efficient because historical data rarely changes once an order is closed.

**What you need to know:** If you need to update an old record, you must be mindful of this window.

{% hint style="info" %}
**Recent Update:** Prior to January 21, 2026, the lookback period for **Branch Transfers** was limited to 2 days. If you find transfers missing from before this update, please request a historical re-sync.
{% endhint %}

{% hint style="warning" %}
**Backdating Limitation**

If you modify a Sales Order, Purchase Order, or Branch Transfer to a date **older than 90 days**, Moselle will **not** see the change automatically because it falls outside the daily sync window.

**Fix:** If you must change data older than 90 days, please contact <support@moselle.io> to request a one-time "Historical Re-sync."
{% endhint %}

### Data Mapping

#### Products

| Moselle Field | Cin7 Omni Field       | Notes                                |
| ------------- | --------------------- | ------------------------------------ |
| **Name**      | `name`                |                                      |
| **SKU**       | `productOptions.code` | Unique identifier used for matching. |
| **Category**  | `category`            | Used for grouping in forecasts.      |

#### Sales Orders (Historical Sales)

| Moselle Field    | Cin7 Omni Field | Notes                                              |
| ---------------- | --------------- | -------------------------------------------------- |
| **Order Number** | `reference`     |                                                    |
| **Date**         | `invoiceDate`   | Only **"Dispatched"** orders are imported.         |
| **Channel**      | *Derived*       | Mapped based on settings; Shopify orders excluded. |

#### Purchase Orders

| Moselle Field    | Cin7 Omni Field | Notes                                                                       |
| ---------------- | --------------- | --------------------------------------------------------------------------- |
| **Order Number** | `reference`     |                                                                             |
| **Status**       | `status`        | **Voided** Purchase Orders in Cin7 are imported as **Archived** in Moselle. |

#### Inventory

| Moselle Field | Cin7 Omni Field | Notes                               |
| ------------- | --------------- | ----------------------------------- |
| **Available** | `available`     | Stock currently available for sale. |
| **Incoming**  | `incoming`      | Stock on order (PO).                |
| **Branch**    | `branchId`      | Mapped to Moselle Warehouses.       |

#### Branch Transfers

| Moselle Field   | Cin7 Omni Field       | Notes                                                 |
| --------------- | --------------------- | ----------------------------------------------------- |
| **Reference**   | `reference`           | Used as the Order Number in Moselle.                  |
| **Source**      | `sourceBranchId`      | The sending warehouse.                                |
| **Destination** | `destinationBranchId` | The receiving warehouse.                              |
| **Status**      | *Derived*             | Maps to Moselle's Draft, Active, or Delivered states. |

## How Transfers Work in Moselle

Moselle treats Cin7 Omni **Branch Transfers** as a type of replenishment. This allows you to plan stock movements between your own warehouses just like you plan purchases from suppliers.

### Transfers as Purchase Orders

In the Moselle app, your Cin7 Branch Transfers are displayed alongside your regular Purchase Orders. This provides a unified view of all incoming stock for any specific warehouse.

* **In-Transit Visibility:** When a transfer is "Dispatched" in Cin7, Moselle shows it as "Active" in your replenishment plan, accurately reflecting stock that is currently in transit.
* **Replenishment Planning:** Moselle's engine accounts for these transfers when calculating your "Projected Stock," ensuring you don't over-order from suppliers when a transfer is already on its way.

## Troubleshooting & FAQ

| Problem / Question                        | Solution / Answer                                                                                 |
| ----------------------------------------- | ------------------------------------------------------------------------------------------------- |
| **Custom fields not mapping**             | Contact Support to map specific Cin7 attributes to Moselle.                                       |
| **Missing recent orders**                 | Check if the order is marked as **"Dispatched"** in Cin7. Only dispatched orders are imported.    |
| **Inventory count mismatch**              | Verify that the correct Warehouses are enabled in settings and products exist in Moselle.         |
| **Duplicate sales**                       | Ensure "Shopify" orders aren't being double-counted if both integrations are active.              |
| **Can I trigger a manual sync?**          | Yes, typically via **Settings > Integrations** or **Beta** tab in Moselle.                        |
| **Does Moselle write data back to Cin7?** | No, the integration is currently one-way (Cin7 to Moselle) for planning purposes.                 |
| **Why aren't my open orders showing?**    | Moselle only imports **"Dispatched"** orders for sales history. Open/pending orders are excluded. |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://learn.moselle.io/getting-started/onboarding/setup-integrations/cin7-omni.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
