# Connect Shopify

> Sync your Shopify catalog into Message24 and, optionally, create Shopify orders from the orders the AI captures in chat.

Source: https://docs.message24.net/owners/integrations/shopify/

The Shopify integration copies your products, options, prices, stock and translations into Message24, and can send the orders the AI captures back to your store as draft orders or real orders. You connect it with an app you create in your own Shopify Dev Dashboard. There is no "Sign in with Shopify" button: you create the app, install it on your store, and paste its credentials into Message24.

## Before you start

You need to be the store owner, or a staff member with the **App development > Develop** permission in Shopify. Collaborator accounts can't create the app. It takes about five minutes.

## Step 1: Create the app in Shopify

1. Go to [dev.shopify.com](https://dev.shopify.com) and sign in with the account that owns your store.
2. In the left menu click **Apps**, then **Create app** > **Start from Dev Dashboard**. Name it `Message24` and click **Create**.
3. Open the app and click **Configure a version**:
   - **App URL**: `https://message24.net`
   - **Admin API access scopes**: select the scopes listed below.
   - Save and release the version.
4. Go to **Home** > **Install app**, choose your store and click **Install**.
5. If you selected the order scopes, open **API access requests** > **Protected customer data access** > **Select**, tick **Customer service** and **Store management**, and click **Save**. Without this, sending orders to your store fails. You don't need to submit anything for review. Skip this step if you only want catalog sync.
6. Go to **Settings** in the app and copy the **Client ID** and the **Client secret**.

### Scopes to select

For the product catalog:

- `read_products`: required. Without it there is nothing to sync, and Message24 won't connect.
- `read_inventory`: without it Message24 only knows whether an item is available, not how many you have.
- `read_locations`
- `read_translations`: without it your Arabic and Kurdish product names and descriptions aren't imported.
- `read_locales`: lets Message24 see which languages your store has.

To also let Message24 create orders in your store:

- `write_draft_orders`
- `write_orders`

The order scopes are optional. If you'd rather Message24 never writes anything to your store, select only the five read scopes: the catalog syncs normally and order sending stays unavailable. You can add the order scopes later by releasing a new version of the app and reinstalling it.

:::caution
The client secret gives access to your store data. Treat it like a password and don't share it over public chat or email.
:::

## Step 2: Connect in Message24

1. Go to **Settings > Integrations** and click **Connect** on the Shopify card.
2. **Store domain**: your permanent `.myshopify.com` address, for example `yourstore.myshopify.com`. Not your custom domain.
3. **Client ID** and **Client secret**: paste the values from your app's settings.
4. If you want orders sent to Shopify, tick **Push orders to Shopify** and choose the options described below.
5. Click **Connect**.

Message24 signs in to your store with the credentials before saving them. If the domain is wrong, the secret belongs to a different app, or the app isn't installed on this store, you see an error and nothing is saved.

## What syncs

- Products, with their options and variants, prices, and images.
- Stock quantities (or only availability, without `read_inventory`).
- Arabic and Kurdish translations of product names and descriptions, if your store has them.
- The product type as the category, and the vendor as the brand when it differs from your store name.
- A variant's compare-at price, when it is higher than the price, as a discount.
- Products that are not active in Shopify (draft or archived) are brought in as inactive, so the AI doesn't offer them.

Products sync automatically in the background. Shopify also tells Message24 whenever a product is created, updated or deleted, so most changes arrive shortly after you make them. Use **Sync** to fetch changes now, or **Full Sync** to re-fetch the whole catalog and deactivate products that no longer exist in Shopify. See [How syncing works](/owners/integrations/overview/#how-syncing-works).

## Sending orders to Shopify

Tick **Push orders to Shopify** to create orders in your store from Message24 orders.

- **Push orders at stage**: **New** sends an order as soon as it is accepted in Message24. **Confirmed** waits until your team confirms it.
- **Create as**: **Draft order** waits in Shopify for you to review it. **Order** enters fulfillment immediately, marked as payment pending.

Order lines that came from your synced catalog are matched to the exact Shopify product and variant. Any discount and delivery fee on the order are included.

If your app wasn't granted the order scopes, the checkbox is disabled and Message24 explains which scopes are missing. Add them to your app in the Shopify Dev Dashboard, release a new version, reinstall it, and then turn order sending on.

### Status updates from Shopify

After an order has been sent, Message24 checks Shopify regularly and updates the order's stage on your [Orders](/owners/catalog/orders/) page:

| In Shopify | Stage in Message24 |
| --- | --- |
| Still an open draft | No change |
| Order created (draft completed, or created directly) | Confirmed |
| Fulfilled | Delivered |
| Cancelled or voided | Cancelled |
| Fully refunded | Returned |

A partial refund does not mark the order as returned.

## Change settings or credentials

Click the settings icon on the Shopify card. You can change the store domain and order options. To replace the app credentials, click **Change credentials**, paste the new Client ID and secret, and click **Save Changes**.

## Disconnect

Click **Disconnect** on the Shopify card and confirm. Product syncing and order sending stop, and Message24 removes its product notifications from your store. To revoke access completely, also uninstall the app from your Shopify store.
