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

# Intégration Shopify : connectez votre boutique pour publier depuis Semji

> Connectez Shopify à Semji avec une app du Dev Dashboard pour que les agents lisent, modifient et traduisent articles, pages, collections et produits.

Semji se connecte à Shopify via la **GraphQL Admin API**, avec une app que vous
créez pour Semji dans le **Shopify Dev Dashboard** de votre boutique. Vous
donnez à Semji le **Client ID** et le **Client secret** de l'app. Semji les
échange contre un jeton d'accès à l'Admin API valable 24 heures (le client
credentials grant de Shopify) et le renouvelle seul. Une fois connectés, les
agents IA de Semji peuvent travailler sur les **articles de blog**, les
**pages**, les **descriptions de collections** et les **fiches produits**,
dans toutes les langues activées sur votre boutique.

Compatible avec **tous les plans Shopify**.

## Prérequis

* Le **domaine myshopify.com** de votre boutique (par exemple
  `your-store.myshopify.com`). Semji accepte aussi le handle seul
  (`your-store`) ou l'URL de votre admin
  (`https://admin.shopify.com/store/your-store`). Votre domaine public
  (`www.your-store.com`) n'est **pas** accepté.
* Un accès à votre admin Shopify en tant que **propriétaire de la boutique**,
  ou comme membre du staff autorisé à développer des apps. Les comptes
  collaborateur ne peuvent pas ouvrir le Dev Dashboard.
* Une app créée pour Semji **depuis l'admin Shopify de votre propre
  boutique**, voir
  [l'étape 1](#etape-1-creer-lapp-semji-dans-le-dev-dashboard). Shopify
  n'autorise une app à demander des jetons que pour les boutiques de sa propre
  organisation. Une app créée dans l'organisation d'une agence ou d'un
  partenaire ne peut donc pas être utilisée.
* Vous êtes **propriétaire du workspace** dans Semji. La connexion est
  partagée avec tout le workspace, et un workspace connecte une seule
  boutique Shopify.

<Note>
  La disponibilité de l'intégration Shopify dépend de votre plan Semji. Si
  l'intégration n'apparaît pas dans **Settings → Integrations**, ou ouvre une
  fenêtre d'upgrade à la place du formulaire de connexion, contactez votre
  account manager.
</Note>

<Note>
  Depuis le 1er janvier 2026, Shopify ne permet plus de créer des custom apps
  directement dans l'admin Shopify, et Semji n'accepte pas de jeton d'accès
  Admin API statique (`shpat_…`). Créez l'app dans le Dev Dashboard comme
  décrit ci-dessous, même si votre boutique a encore une ancienne custom app.
</Note>

## Étape 1 : créer l'app Semji dans le Dev Dashboard

<Steps>
  <Step title="Ouvrir le Dev Dashboard depuis votre boutique">
    Dans votre admin Shopify, allez dans **Settings → Apps → Develop apps** et
    cliquez sur **Build apps in Dev Dashboard**. Shopify documente ce chemin
    pour les apps utilisées sur votre propre boutique. La connexion exige que
    l'app et la boutique appartiennent à la même organisation Shopify.
  </Step>

  <Step title="Créer l'app">
    Dans le Dev Dashboard, ouvrez **Apps** et cliquez sur **Create app**. Dans
    la section **Start from Dev Dashboard**, donnez-lui un nom reconnaissable
    (par exemple *Semji*), puis cliquez sur **Create**.
  </Step>

  <Step title="Définir les scopes d'accès et publier la version">
    Sur la page **Versions** de l'app :

    * **Scopes** (dans la section **Access**) : saisissez les sept scopes
      listés dans [Scopes d'accès de l'app](#scopes-dacces-de-lapp) :

      ```text theme={null}
      read_content,write_content,read_products,write_products,read_translations,write_translations,read_locales
      ```
    * **App URL** : Semji ne l'utilise pas. Si le champ est vide, saisissez
      `https://shopify.dev/apps/default-app-home`.
    * **Webhooks API version** : n'importe quelle version (Semji n'utilise
      aucun webhook).

    Cliquez sur **Release**, puis de nouveau sur **Release** pour confirmer
    (le nom et le message de la version sont facultatifs). Les scopes ne
    s'appliquent qu'une fois la version publiée.
  </Step>

  <Step title="Installer l'app sur votre boutique">
    Ouvrez la carte **Installs** de l'app, cliquez sur **Install app**,
    sélectionnez votre boutique, puis cliquez sur **Install**.
  </Step>

  <Step title="Copier le Client ID et le Client secret">
    Ouvrez les **Settings** de l'app et copiez le **Client ID** et le **Client
    secret** depuis la section **Credentials**. Traitez le secret comme un mot
    de passe : ne le partagez que via le formulaire de connexion Semji.
  </Step>
</Steps>

<Note>
  Shopify n'affiche jamais de jeton d'accès Admin API pour une app du Dev
  Dashboard. Il n'y a rien d'autre à copier : Semji demande son propre jeton
  avec le Client ID et le Client secret.
</Note>

## Scopes d'accès de l'app

Saisissez tous les scopes suivants sur la version de l'app :

| Scope | Pourquoi Semji en a besoin | Requis |
| - | - | - |
| `read_content` | Lire les blogs, les articles de blog et les pages | Toujours |
| `write_content` | Créer, modifier et supprimer les articles de blog et les pages, y compris leur titre et leur description SEO | Toujours |
| `read_products` | Lire les produits et les collections (Shopify protège les collections derrière les scopes produits) | Toujours |
| `write_products` | Modifier le contenu et les champs SEO des produits et des collections | Toujours |
| `read_translations` | Lire les traductions existantes de vos contenus | Toujours |
| `write_translations` | Enregistrer des traductions | Toujours |
| `read_locales` | Lire les langues activées sur votre boutique | Toujours |

<Warning>
  **Les sept scopes sont tous requis, même si vous comptez désactiver
  certains outils.** Semji vérifie les scopes accordés à l'app au moment de la
  connexion et refuse la connexion s'il en manque un.
</Warning>

<Note>
  **Modifier les scopes plus tard :** ajoutez-les à une nouvelle version de
  l'app et publiez-la. Pour une boutique de votre propre organisation, la
  publication de la version valide le changement. Si l'erreur persiste,
  réinstallez l'app sur la boutique depuis sa carte **Installs**, puis
  réessayez.
</Note>

## Étape 2 : connecter depuis Semji

<Steps>
  <Step title="Ouvrir les intégrations CMS">
    Dans Semji, allez dans **Settings → Integrations**, trouvez **Shopify**
    parmi les intégrations **CMS** et cliquez sur **Enable**. Si Semji ouvre
    d'abord la page Shopify, cliquez sur **Enable** à cet endroit.
  </Step>

  <Step title="Saisir les identifiants de votre boutique">
    Remplissez les trois champs :

    * **Store domain** : votre domaine myshopify.com, par exemple
      `your-store.myshopify.com` (le handle seul ou l'URL de votre admin
      fonctionnent aussi, pas votre domaine public).
    * **Client ID** : copié à l'étape 1.
    * **Client secret** : copié à l'étape 1.

    Cliquez sur **Next**. Semji teste la connexion en direct : il demande un
    jeton d'accès à votre boutique avec le Client ID et le Client secret,
    vérifie les scopes accordés à l'app, puis lit le nom et le domaine
    principal de votre boutique. Rien n'est écrit dans votre boutique.
  </Step>

  <Step title="Choisir les outils Shopify">
    Choisissez ce que les agents IA peuvent faire sur votre boutique. Tous les
    outils sont activés par défaut, et vous pouvez désactiver ceux que vous
    voulez :

    * **Describe content model** : inspecter les langues et les champs
      modifiables des pages, collections et produits.
    * **List contents** : parcourir et rechercher les pages, collections et
      produits.
    * **Read content** : récupérer une page, une collection ou un produit et
      son contenu.
    * **Create & update content** : créer et modifier des pages et des
      produits, modifier le contenu des collections.
    * **Delete content** : supprimer des pages (destructif).
    * **Describe blog model** : inspecter les blogs, les tags, les langues et
      les champs modifiables des articles de blog.
    * **List blog posts** : parcourir et rechercher les articles de blog.
    * **Read blog post** : récupérer un article de blog et son contenu.
    * **Create & update blog posts** : créer et modifier des articles de blog
      (en brouillon par défaut).
    * **Delete blog post** : supprimer des articles de blog (destructif).
    * **Register translations** : enregistrer la traduction d'une entrée pour
      une langue de la boutique.
  </Step>

  <Step title="Connecter">
    Cliquez sur **Connect**. Semji vérifie les identifiants une dernière fois,
    puis enregistre la connexion. Shopify apparaît alors comme **Enabled**.
  </Step>
</Steps>

## Ce que Semji peut faire une fois connecté

| Type de contenu | Lire | Créer | Modifier | Supprimer | Traduire | Notes |
| - | - | - | - | - | - | - |
| Articles de blog | ✓ | ✓ | ✓ | ✓ | ✓ | Les nouveaux articles sont créés en **brouillon** dans le blog que vous choisissez |
| Pages | ✓ | ✓ | ✓ | ✓ | ✓ | Les nouvelles pages sont créées en **brouillon** |
| Collections | ✓ | ✗ | ✓ | ✗ | ✓ | Description, titre et description SEO, titre, handle, template suffix |
| Produits | ✓ | ✓ | ✓ | ✗ | ✓ | Les nouveaux produits sont créés en **brouillon** avec leur contenu uniquement : description, titre et description SEO, titre, handle, template suffix |

Quelques garanties intégrées au connecteur :

* **Les collections ne sont jamais créées ni supprimées, et les produits ne
  sont jamais supprimés.** Un produit créé par Semji est un **brouillon** qui
  contient uniquement son titre, sa description, son handle et son aperçu
  dans les moteurs de recherche. Définissez son prix, son stock, ses variantes
  et ses canaux de vente dans Shopify avant de l'activer.
* **Le prix, le stock, les tags et le vendor d'un produit ne sont jamais
  écrits, et son statut n'est jamais modifié.**
* **Les nouveaux articles de blog et les nouvelles pages restent en
  brouillon** tant que vous ne demandez pas à un agent de les publier, et un
  article ou une page déjà publié ne repasse jamais en brouillon.
* **Certaines modifications sont visibles immédiatement** : toute
  modification d'un produit actif, d'une collection, d'un article de blog ou
  d'une page déjà publié (Shopify ne garde aucune révision brouillon), et
  toute traduction dans une langue publiée. L'agent CMS Publisher vous
  prévient que le changement sera visible tout de suite et attend votre
  approbation explicite avant d'écrire.
* **Les modifications sont partielles** : seuls les champs que l'agent change
  sont écrits, tout le reste garde sa valeur actuelle.
* **Changer un handle redirige l'ancienne URL** vers la nouvelle.
* **La suppression est limitée aux articles de blog et aux pages**, et les
  agents demandent votre confirmation explicite de l'entrée exacte avant de
  supprimer.

### Langues et traductions

* Les traductions sont enregistrées **sur l'entrée d'origine**, pour l'une des
  langues activées sur votre boutique (**Settings → Languages** dans
  Shopify), jamais comme une copie séparée par langue. Semji écrit les
  traductions via l'Admin API de Shopify.
* La langue cible doit être **activée** sur votre boutique et ne peut pas être
  sa langue **principale**.
* Une traduction dans une langue **publiée** est visible immédiatement. Dans
  une langue activée mais pas encore publiée, elle reste invisible pour les
  acheteurs jusqu'à la publication de la langue.
* Champs traduisibles : titre, contenu, extrait (articles de blog), titre et
  description SEO, et handle.
* Quand l'entrée d'origine change, Shopify marque ses traductions comme
  obsolètes. Les agents voient ce marqueur quand ils lisent l'entrée.

## Gérer ou déconnecter

Dans **Settings → Integrations**, ouvrez Shopify :

* **Manage tools** : activer ou désactiver chaque outil individuellement.
* **Disable** : supprime la connexion pour tout le workspace. Cela ne
  désinstalle pas l'app de votre boutique. Désinstallez-la depuis votre admin
  Shopify (**Settings → Apps**) si vous n'en avez plus besoin.

Le domaine de la boutique, le Client ID et le Client secret ne peuvent pas
être modifiés dans Semji. Pour connecter une autre boutique ou changer les
identifiants, désactivez l'intégration et reconnectez-la (la sélection des
outils est réinitialisée).

<Note>
  **Faire tourner le Client secret :** dans le Dev Dashboard, ouvrez les
  **Settings** de l'app, cliquez sur **Rotate** à côté du Client secret et
  générez un nouveau secret. Désactivez l'intégration Shopify dans Semji et
  reconnectez-la avec le nouveau secret (choisissez à nouveau les outils : la
  sélection n'est pas conservée), puis révoquez l'ancien secret dans le Dev
  Dashboard. Révoquer l'ancien secret en premier coupe la connexion jusqu'à ce
  que vous reconnectiez.
</Note>

## Réseau et pare-feu

Semji appelle uniquement l'Admin API de Shopify sur le domaine
`myshopify.com` de votre boutique, hébergé par Shopify. Le domaine public de
votre storefront n'est jamais appelé (Semji s'en sert seulement pour
construire les liens vers vos contenus). Un pare-feu, un WAF ou une règle
Cloudflare devant votre storefront n'affecte donc pas la connexion, et il n'y
a aucune adresse IP à autoriser.

## Dépannage

<AccordionGroup>
  <Accordion title="&#x22;Shopify rejected the credentials. Check the Client ID and Client secret, and that the app is installed on this store (the app and the store must belong to the same Shopify organization).&#x22;">
    Shopify a refusé de délivrer un jeton d'accès. Vérifiez, dans l'ordre :

    1. **Le Client ID ou le Client secret est incorrect** : copiez-les de
       nouveau depuis les **Settings** de l'app dans le Dev Dashboard. Si le
       secret a été renouvelé, utilisez le nouveau.
    2. **L'app n'est pas installée sur la boutique** : ouvrez la carte
       **Installs** de l'app dans le Dev Dashboard et installez-la sur votre
       boutique.
    3. **L'app appartient à une autre organisation** : une app créée dans
       l'organisation d'une agence ou d'un partenaire ne peut pas demander de
       jetons pour votre boutique. Créez l'app depuis votre propre admin
       Shopify (**Settings → Apps → Develop apps → Build apps in Dev
       Dashboard**) comme décrit à
       [l'étape 1](#etape-1-creer-lapp-semji-dans-le-dev-dashboard).
  </Accordion>

  <Accordion title="&#x22;The app is missing Admin API access scopes. Grant read_content, write_content, read_products, write_products, read_translations, write_translations and read_locales on its version, reinstall it, then try again.&#x22;">
    La version publiée de l'app n'a pas au moins un des sept scopes. Ajoutez
    les scopes manquants à une nouvelle version de l'app, publiez-la, puis
    réessayez. Si l'erreur persiste, réinstallez l'app sur la boutique depuis
    sa carte **Installs**. Voir [Scopes d'accès de l'app](#scopes-dacces-de-lapp).
  </Accordion>

  <Accordion title="&#x22;Could not connect to the Shopify store. Check the store domain and the app credentials.&#x22;">
    * **Le domaine de la boutique est votre domaine public** (par exemple
      `www.your-store.com`) : saisissez plutôt votre domaine
      `your-store.myshopify.com`.
    * **Le domaine de la boutique est mal formé** : un handle de boutique ne
      contient que des lettres minuscules, des chiffres et des tirets.
    * **Shopify a renvoyé une erreur temporaire** : attendez une minute et
      réessayez.
  </Accordion>

  <Accordion title="&#x22;No Shopify store answers on this domain. Check the store domain.&#x22;">
    Aucune boutique n'existe avec ce handle. Vérifiez l'orthographe de votre
    domaine `myshopify.com` : il peut différer du nom de votre boutique ou de
    son domaine public.
  </Accordion>

  <Accordion title="&#x22;The store is not reachable through its Admin API right now (frozen, locked or behind a security challenge). Check the store status in Shopify and try again.&#x22;">
    Shopify a répondu que la boutique ne peut pas traiter de requêtes API, par
    exemple une boutique gelée pour une facture impayée, ou une boutique
    verrouillée. Vérifiez le statut de la boutique dans votre admin Shopify,
    puis réessayez.
  </Accordion>

  <Accordion title="&#x22;The store cannot be reached. Check the domain and try again.&#x22;">
    La requête n'a pas atteint Shopify (domaine inconnu, erreur réseau ou
    timeout). Vérifiez le domaine de la boutique et réessayez un peu plus
    tard.
  </Accordion>

  <Accordion title="&#x22;This workspace is already connected to a Shopify store. Disconnect the existing integration before creating a new one.&#x22;">
    Un workspace ne connecte qu'une seule boutique Shopify. Désactivez
    d'abord l'intégration Shopify actuelle, puis connectez la nouvelle
    boutique.
  </Accordion>

  <Accordion title="Un agent signale une erreur d'authentification ou de permission Shopify">
    Si vous venez de réinstaller l'app ou de publier une nouvelle version,
    redemandez à l'agent : Semji demande un nouveau jeton après la première
    requête refusée. Sinon, la connexion a fonctionné mais Shopify refuse
    désormais les requêtes. Causes fréquentes : l'app a été désinstallée de la
    boutique, son Client secret a été renouvelé ou révoqué, ou ses scopes ont
    changé. Réinstallez l'app ou publiez les scopes manquants. Si le secret a
    changé, désactivez l'intégration et reconnectez-la avec le nouveau secret.
  </Accordion>

  <Accordion title="Un agent signale qu'une langue n'est pas activée sur la boutique">
    Les traductions ne peuvent cibler qu'une langue activée sur votre
    boutique. Ajoutez la langue dans **Settings → Languages** de votre admin
    Shopify, puis redemandez à l'agent.
  </Accordion>

  <Accordion title="Une modification de produit ou de collection est passée en ligne immédiatement">
    C'est le comportement de Shopify, pas un bug : les collections, les
    produits actifs, ainsi que les articles de blog et les pages publiés n'ont
    pas de révision brouillon, donc chaque modification est en ligne sur le
    storefront. C'est pourquoi l'agent CMS Publisher de Semji vous prévient et
    demande votre approbation avant une telle écriture. Les nouveaux articles
    de blog, pages et produits, eux, sont créés en brouillon, et un produit en
    brouillon reste masqué jusqu'à ce que vous l'activiez.
  </Accordion>
</AccordionGroup>

## Voir aussi

* [Synchroniser des brouillons vers votre CMS](/guides/sync-drafts-to-cms) :
  flux de publication via l'API, si vous préférez piloter la synchronisation
  vous-même.


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