> For the complete documentation index, see [llms.txt](https://learn.moselle.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://learn.moselle.io/getting-started/onboarding/setup-integrations/shopify.md).

# Shopify

### Overview

The Shopify integration imports your sales history, current inventory levels, and product catalog into Moselle. Once connected, data syncs automatically on a daily basis.

***

### Connect Shopify

1. Log in to Moselle and click your avatar in the top right corner
2. Select **Settings** from the dropdown menu
3. Click the **Integrations** tab
4. Select **Shopify** and click **Connect**
5. You will be redirected to Shopify to install the Moselle app
6. Click **Install** on the Moselle app page
7. Enter your Shopify login credentials

Once connected, your sales and inventory begin importing and appear on the Catalog page.

#### Multiple Stores

You can connect multiple Shopify stores to a single Moselle account. Repeat the connection process for each store.

***

### Data Sync Details

**Sync Frequency** — Shopify data syncs daily overnight (EST).

**Sales Attribution** — By default, Moselle uses **gross sales**. Your administrator can switch to **net sales** if needed. See [Revenue Calculation Methods](#revenue-calculation-methods) below for details.

**SKU Matching** — Shopify listings automatically link to Moselle items when SKUs match exactly. Non-matching SKUs require manual linking.

***

### App Permissions & Legacy Installs

If you installed the Moselle app on Shopify before **mid-2025**, your integration might lack the specific permissions required for newer inventory features. This can cause inventory syncs to fail even if sales data is updating correctly.

**The Fix:** To resolve this, you must **approve the updated permissions**:

1. Go to **Settings > Integrations** in Moselle.
2. Locate the Shopify integration and click **Connect** again.
3. Shopify will show a screen with the updated permissions. Click **Install App** or **Update App** to grant the new inventory scopes required.

***

### Troubleshooting

| Issue                                     | Cause                                                    | Solution                                                                                                          |
| ----------------------------------------- | -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| Sales numbers don't match Shopify exactly | Timezone differences and gross vs. net sales definitions | Expected behavior — see [Revenue Calculation Methods](#revenue-calculation-methods) above to align your settings. |
| Listings not linking automatically        | SKUs don't match between Shopify and Moselle             | Manually link listings or update SKUs to match                                                                    |
| **Inventory not syncing**                 | Missing permissions (Legacy Install)                     | Click **Connect** again in Settings to approve updated permissions (see above).                                   |
| Missing historical sales data             | Shopify listing was deleted                              | Contact Moselle support — deleted listings lose variant IDs and require manual repair                             |

***

### Revenue Calculation Methods

{% hint style="info" %}
**Quick Answer:** Moselle supports two Shopify revenue methods — **gross** (default, before discounts) and **net** (after discounts). Your administrator can switch between them at any time.
{% endhint %}

#### Gross Revenue (Default)

**Gross revenue** is the total sales amount before any discounts are applied. This is the default setting for all Shopify stores connected to Moselle.

**Example:** A customer buys 2 items at $50 each with a 20% discount code. Gross revenue is **$100** (the full price before the discount).

This method is ideal if you want to track total potential revenue before promotional activity.

#### Net Revenue

**Net revenue** is the sales amount after all discounts are subtracted, including:

* **Line-level discounts** (automatic discounts, product-specific promotions)
* **Order-level discounts** (checkout promo codes)

**Example:** Using the same scenario above, net revenue is **$80** (after the $20 discount).

#### Why It Matters

The revenue method you choose affects:

* **Historical sales data** displayed across Moselle
* **Forecast revenue projections** used for planning
* **Comparison with Shopify reports** — match Moselle to Shopify's "Gross Sales" or "Net Sales" metrics

#### How to Change the Revenue Method

1. Contact your Moselle administrator or support team
2. Specify which Shopify store(s) need the change
3. After configuration, a backfill recalculates your historical sales data automatically

{% hint style="info" %}
**Note:** After changing the revenue method, historical sales numbers are recalculated to ensure consistency across all your data.
{% endhint %}

#### Matching Shopify Reports

| Moselle Setting         | Compare With in Shopify                   |
| ----------------------- | ----------------------------------------- |
| Gross revenue (default) | **Gross Sales** metric                    |
| Net revenue             | **Net Sales** or **Product Sales** metric |

Minor variances may occur due to timezone differences between Moselle and Shopify.

***

### Important

**Do not delete Shopify listings.** Deleted listings lose their variant IDs, which breaks historical sales and inventory data. If listings are deleted, contact Moselle support to repair the affected data.
