Module Intégrations

Connectez votre boutique
Shopify à GSE-Web

Votre catalogue et votre stock disponible partent vers la boutique. Les commandes payées arrivent dans GSE-Web en bons de sortie confirmés, stock réservé.

Accueil / Documentation / Connecteur Shopify

En bref

Le connecteur Shopify relie une boutique Shopify à un magasin de GSE-Web. GSE-Web publie le stock dans un emplacement de la boutique, la boutique envoie ses commandes. Il se configure par un administrateur de l'organisation, dans le menu ADMIN › « Intégrations ».

  • Ce qui part vers la boutique : les fiches des produits simples, des kits et des produits à déclinaisons (nom, référence, prix, code-barres), si vous le demandez, et le stock disponible du magasin publié, posé dans l'emplacement Shopify que vous choisissez.
  • Ce qui arrive dans GSE-Web : chaque commande payée (ou aux statuts de paiement que vous choisissez) devient un bon de sortie confirmé, stock réservé ; l'acheteur devient un client « particulier ». Si vous le demandez, la description et les photos des produits reliés sont aussi reprises de la boutique.
  • Quand : le stock part vers la boutique quelques secondes après chaque changement dans GSE-Web, et une commande arrive aussitôt par webhook. Un passage complet a lieu toutes les 5 minutes et rattrape ce qui aurait manqué.
  • Ce qui n'est jamais fait : rien n'est supprimé en boutique, GSE-Web n'écrit jamais les lignes d'une commande et n'émet jamais de remboursement. Il exécute ou annule seulement la commande, si vous le demandez.
  • Coupure : pause, déconnexion ou fermeture du module à tout moment, sans rien perdre ; à la reprise, les commandes passées entre-temps sont rattrapées.
Avant de commencer

Prérequis

Vérifiez ces points avant d'ouvrir l'écran du connecteur : le test de connexion les contrôle et refuse en clair ce qui ne convient pas.

✓

Le domaine myshopify.com de la boutique

Le connecteur se branche sur le domaine d'administration de la boutique, de la forme ma-boutique.myshopify.com, jamais sur son adresse publique.

✓

Une app dans le Dev Dashboard

Créée dans l'organisation propriétaire de la boutique, avec ces droits : read_products, write_products, read_inventory, write_inventory, read_locations, read_orders, write_orders, write_merchant_managed_fulfillment_orders, read_publications, write_publications. Publiez une version, installez l'app sur la boutique, puis notez l'ID client et le secret. Une boutique qui a encore une app personnalisée historique utilise son jeton Admin (shpat_…) et son secret API.

✓

Les données client protégées déclarées

Nom, e-mail et adresse des acheteurs sont des « données client protégées » de Shopify : déclarez leur usage dans le Dev Dashboard. Sans cela, les commandes arrivent sans acheteur et deviennent des points à traiter.

✓

Les modules ouverts pour votre organisation

« Intégrations », puis « Shopify ». Leur ouverture se demande à KLS-Concept. Sans « Intégrations », l'entrée du menu n'apparaît pas ; sans « Shopify », sa carte indique « Non disponible pour votre organisation ».

✓

Un compte ADMIN avec double authentification

La saisie des identifiants de la boutique est refusée tant que la double authentification n'est pas activée sur votre compte, dans « Mes informations ».

✓

Un magasin réel

Son stock disponible est publié en boutique et les commandes y deviennent des bons de sortie. Un magasin d'exercice est refusé.

✓

La même devise et le même régime de prix

La devise de la boutique doit être celle de votre organisation, et « Prix publiés » (HT ou TTC) doit correspondre au réglage « Inclure les taxes dans les prix » de la boutique (Paramètres › Taxes et droits de douane).

Configuration pas à pas

Six étapes, dans l'ordre de l'écran.

1

Ouvrir l'écran du connecteur

Menu ADMIN › « Intégrations ». La carte Shopify se trouve dans la catégorie « E-commerce ». Cliquez sur « Configurer » (le bouton devient « Gérer » une fois la boutique enregistrée).

2

Carte « Boutique »

Choisissez le « Type d'app » : « App du Dev Dashboard (ID client et secret) », ou « App personnalisée historique (jeton Admin et secret API) ». Renseignez le « Domaine de la boutique » (…myshopify.com), puis l'« ID client de l'app » et le « Secret de l'app » (ou le « Jeton d'accès Admin » et le secret), et choisissez le « Magasin publié ». La carte rappelle les droits à cocher sur l'app.

Les identifiants sont en écriture seule : une fois enregistrés, ils ne sont plus jamais réaffichés. L'écran montre seulement quelques caractères pour les reconnaître. Pour les conserver, laissez les champs vides ; pour les remplacer, saisissez le secret ET l'ID client (ou le jeton). Avec une app du Dev Dashboard, GSE-Web obtient lui-même le jeton d'accès, valable 24 heures, et le renouvelle.

3

Carte « Réglages »

Chaque réglage a une valeur par défaut :

  • « Prix publiés » : « Hors taxes (HT) » par défaut, ou « Toutes taxes comprises (TTC) ».
  • « Créer et mettre à jour les fiches produits en boutique » : décoché par défaut. Décoché, GSE-Web ne crée aucune fiche : il relie seulement les produits déjà présents en boutique avec la même référence (SKU), sans tenir compte des majuscules.
  • « Publier le stock disponible » : coché par défaut. Décoché, une fiche créée par GSE-Web n'a pas son stock suivi par Shopify.
  • « Recevoir les commandes » : coché par défaut.
  • « Remonter les livraisons et annulations à la boutique » : coché par défaut. Bon livré : commande exécutée en boutique, avec transporteur et n° de suivi — Shopify prévient le client par son e-mail d'expédition. Bon annulé dans GSE-Web : commande annulée en boutique, sans remboursement.
  • « Statuts de paiement importés » : « Payée » par défaut. Vous pouvez ajouter « Paiement en attente », « Paiement autorisé » et « Partiellement payée » (paiement à la livraison, virement).
  • « Âge maximal d'une commande rattrapée (jours) » : 30 par défaut, de 1 à 90. Sans le droit read_all_orders, Shopify ne rend que les commandes des 60 derniers jours : le rattrapage ne remonte pas plus loin.
  • « Reprendre la description et les photos de la boutique » : décoché par défaut. La boutique reste maîtresse de la description et des photos, que GSE-Web ne lui envoie jamais ; coché, elles sont recopiées sur la fiche du produit relié. Une description vide en boutique n'efface jamais celle de GSE-Web, et une photo ajoutée dans GSE-Web n'est jamais retirée.
4

Enregistrer

Cliquez sur « Enregistrer ». « Tester la connexion » et « Activer » agissent sur la configuration enregistrée : tant qu'une modification n'est pas enregistrée, l'écran le rappelle et ces deux boutons attendent.

5

Tester la connexion, puis choisir l'emplacement

« Tester la connexion » interroge la boutique et vérifie que les identifiants sont bien ceux de ce domaine, que l'app a tous ses droits, que la devise et le régime de prix correspondent. Il charge aussi la liste des emplacements actifs de la boutique : choisissez l'« Emplacement de la boutique » qui reçoit le stock, puis « Enregistrer ». Même refusé, le test affiche les droits manquants et les emplacements, pour que vous puissiez corriger.

6

Activer

« Activer » refait le test (un emplacement est alors exigé), puis crée quatre abonnements de webhook dans la boutique : commande créée, modifiée, annulée et supprimée. L'état passe à « Active — stock envoyé dès qu'il change, synchronisation complète toutes les 5 minutes » (« Active — synchronisation toutes les 5 minutes » si le stock n'est pas publié). Les commandes reçues avant l'activation ne sont pas importées.

Ce qui se synchronise, et qui fait foi

Chaque champ a un seul maître. Dans une commande de la boutique, GSE-Web n'écrit que son exécution ou son annulation, jamais ses lignes.

📦 GSE-Web fait foi

  • ✓Nom du produit
  • ✓Référence (SKU en boutique)
  • ✓Prix de vente, HT ou TTC selon le réglage
  • ✓Code-barres
  • ✓Mise en vente ou brouillon
  • ✓Stock, dans l'emplacement choisi

🛒 La boutique fait foi

  • ✓Description (reprise dans GSE-Web en option)
  • ✓Photos (reprises dans GSE-Web en option)
  • ✓Collections et balises
  • ✓Taxes
  • ✓Commandes
  • ✓Remboursements

Les règles

  • Produits simples, kits et produits à déclinaisons. Un produit simple est publié comme un produit Shopify à une seule variante. Un kit aussi, avec pour stock le nombre de kits montables avec les composants du magasin publié. Un produit à déclinaisons est publié comme un produit à options (trois axes au plus, limite de Shopify), sans prix ni stock propres ; chaque déclinaison en est une variante, avec sa référence, son prix et son stock.
  • Un produit retiré de la vente dans GSE-Web passe en brouillon dans la boutique ; il n'y est jamais supprimé. Shopify n'ayant pas de statut par variante, une déclinaison retirée de la vente est mise à stock 0. Les produits créés par GSE-Web sont publiés sur la boutique en ligne ; une fiche existante n'est jamais republiée, pour respecter votre choix si vous la retirez d'un canal.
  • Une fiche modifiée en boutique sur un champ dont GSE-Web fait foi est réécrite au prochain changement du produit dans GSE-Web. Le suivi du stock d'une variante existante, lui, n'est jamais modifié.
  • Stock publié = stock disponible du magasin publié (physique moins réservé), arrondi à l'unité inférieure, jamais négatif, posé dans l'emplacement choisi — les autres emplacements de la boutique ne sont pas touchés. Il part vers la boutique quelques secondes après chaque changement : entrée, sortie, transfert, inventaire, réservation posée ou libérée sur un bon. Le passage complet le relit aussi toutes les 5 minutes.
  • Une commande = un bon de sortie confirmé du magasin publié, case « Réserver les produits pour ce bon » cochée : toute la quantité commandée est réservée, même au-delà du stock (le manque se lit « En attente de réception » sur le bon), et le stock publié en boutique baisse aussitôt. L'adresse de livraison est reprise. Jamais de bon partiel : si une ligne pose problème (produit inconnu, variante inconnue, kit non publiable, acheteur illisible, autre devise), aucun bon n'est créé et un point à traiter l'explique.
  • Jamais importées : les commandes de test et celles dont le statut de paiement est inconnu. Une commande déjà exécutée dans Shopify quand elle arrive — vente en caisse (Shopify POS), expédition faite depuis l'administration Shopify — ne donne pas de bon : il ferait sortir la marchandise une seconde fois. Un point à traiter vous demande de saisir sa sortie de stock dans GSE-Web.
  • Un acheteur = un client « particulier », retrouvé par son e-mail d'une commande à l'autre (code commençant par WEB-). Un tiers déjà présent dans GSE-Web n'est pas rapproché : un client « particulier » est créé.
  • Commande annulée en boutique (annulée, supprimée, remboursée ou paiement annulé) : le bon est annulé et ses réservations libérées, sauf s'il est déjà pris en charge par quelqu'un. Dans ce cas, un point à traiter laisse la décision à l'équipe. Une commande que Shopify ne rend plus (plus de 60 jours sans read_all_orders) n'est jamais prise pour une commande supprimée.
  • Commande modifiée en boutique après import : la modification n'est pas reportée sur le bon ; un point à traiter vous invite à le vérifier.
  • Une commande de kit devient un bon de sortie sur ses composants (quantité × nombre de kits) ; la note du bon cite le kit. Une commande d'une variante donne un bon sur la déclinaison, comme pour tout produit.
  • Remontée des livraisons et annulations (réglage coché par défaut) : un bon livré ou clôturé exécute sa commande en boutique ; s'il est parti dans une expédition, le transporteur et le n° de suivi sont transmis, et Shopify prévient le client par son e-mail d'expédition. Un bon annulé dans GSE-Web annule sa commande en boutique et remet le stock en vente, sans remboursement ni e-mail au client : le remboursement se fait dans Shopify. Une commande que la boutique a déjà exécutée n'est pas défaite, et une exécution restée partielle côté Shopify n'est pas tenue pour faite : un point à traiter le signale. Livré partiel ou en préparation : rien tant que le bon n'est pas complet.
  • Reprise de la description et des photos (réglage décoché par défaut) : à chaque passage, pour chaque produit relié, la description de la boutique est recopiée en texte brut sur la fiche ; les photos sont ajoutées dans l'ordre de la boutique, la première étant la principale, et retirées quand elles disparaissent de la boutique. Au plus 20 photos par produit. Ne sont pas repris : les collections, les balises, les taxes, la description et les photos propres à chaque déclinaison, ni les noms, prix et codes-barres modifiés en boutique.

Au quotidien

L'écran du connecteur se lit de haut en bas : l'état, la boutique, les réglages, les boutons, puis les points à traiter et le journal.

La carte « État »

Elle dit où en est la connexion, le nom et la devise de la boutique, la date de la dernière synchronisation, la dernière erreur et le nombre de points à traiter. Sur la carte de la page « Intégrations », l'état tient en une puce.

  • À activer « Configurée, pas encore activée ».
  • Connecté « Active — stock envoyé dès qu'il change, synchronisation complète toutes les 5 minutes ». Si le stock n'est pas publié : « Active — synchronisation toutes les 5 minutes ».
  • En pause « En pause — rien n'est envoyé ni importé ».
  • Arrêté — à vérifier « Arrêtée par le serveur — vérifiez les identifiants et testez ».

« Synchroniser maintenant »

Le stock est envoyé automatiquement à la boutique, quelques secondes après chaque changement, et les commandes arrivent dès qu'elles sont passées : l'écran le rappelle sous le bouton. Ce bouton sert seulement à lancer tout de suite la synchronisation complète (fiches produits, commandes manquées, livraisons), qui se fait sinon toutes les 5 minutes. Le message dit si le passage est terminé, s'il a relevé des points à traiter, ou pourquoi il n'a pas été lancé.

La carte « Ce qui passe entre GSE-Web et la boutique »

Sous les réglages, une carte dit, pour chaque échange, dans quel sens il va : de GSE-Web vers la boutique (fiches, stock, déclinaisons, livraisons et annulations), de la boutique vers GSE-Web (commandes, annulations, description et photos) et ce qui ne passe jamais (lignes d'une commande, remboursements, collections, balises et taxes, noms, prix et codes-barres modifiés en boutique). Une ligne liée à un réglage décoché est marquée « Désactivé ».

Le « Journal »

Chaque passage y figure avec son type et son résultat. Types : « Fiches produits », « Stock », « Stock en direct » (envoi dès qu'un stock change, inscrit seulement si une quantité a changé), « Reprise depuis la boutique », « Rattrapage des commandes », « Remontée des bons », « Commande reçue », « Contrôle des webhooks », « Test de connexion ». Résultats : « Réussi », « Partiel », « Échec », « En cours », « Interrompu ». Un clic sur un passage ouvre son détail, élément par élément : produit créé ou mis à jour, stock publié, commande importée, exécutée ou annulée, photo reprise, webhook recréé… (200 éléments au plus par passage). Les passages qui n'ont rien changé peuvent être masqués.

Les « Points à traiter »

Une ligne qui ne passe pas ne bloque jamais la synchronisation : elle devient un point à traiter et le reste continue. Les points des fiches et du stock disparaissent d'eux-mêmes quand leur cause est corrigée. Les points des commandes portent deux boutons.

  • « Rejouer » relit la commande dans la boutique et retente l'import, quel que soit son âge. Il n'est pas proposé pour les points de remontée (exécution, annulation en boutique) : le passage suivant les retente de lui-même.
  • « Ignorer » range le point : un point ignoré ne revient pas dans la liste. « Tout ignorer », en tête de la liste, range d'un coup tous les points ouverts, y compris ceux qui ne sont pas affichés, après confirmation.

Fiches produits

Produit … : type de produit non pris en charge par la boutique

Cause
Ce produit est d'un type que le connecteur ne publie pas. Les produits simples, les kits et les produits à déclinaisons sont publiés.
Que faire
Rien à faire dans GSE-Web. Gérez ce produit directement dans la boutique.

Produit … : aucun prix de vente — non publié

Cause
Le produit n'a pas de prix de vente dans GSE-Web.
Que faire
Renseignez son prix de vente. Le point disparaît au passage suivant.

Produit … : taux de TVA manquant, prix TTC incalculable

Cause
Les prix sont publiés TTC et le produit n'a pas de taux de TVA.
Que faire
Renseignez le taux de TVA du produit.

Produit … : la référence est déjà prise en boutique par un autre produit

Cause
La variante de la boutique qui porte cette référence est déjà reliée à un autre produit de GSE-Web, appartient à un produit à plusieurs variantes alors que celui de GSE-Web est simple (ou l'inverse), ou la boutique porte la même référence sur plusieurs variantes. Une référence qui contient une virgule ne peut pas non plus être recherchée en boutique.
Que faire
Faites en sorte qu'une référence désigne un seul produit, des deux côtés.

Produit … refusé par la boutique (…)

Cause
Shopify a refusé la fiche ; son code de refus est affiché.
Que faire
Vérifiez le produit dans la boutique à partir de ce code.

Produit … : créé en boutique mais non publié sur la boutique en ligne (…)

Cause
La fiche existe dans Shopify, mais n'a pas pu être publiée au canal « Boutique en ligne » : aucun client ne peut l'acheter.
Que faire
Publiez le produit sur la boutique en ligne dans Shopify, puis « Ignorer ». Vérifiez aussi les droits de publication de l'app (read_publications, write_publications). Ce point ne disparaît pas seul : GSE-Web ne republie jamais une fiche existante.

Produit … supprimé dans la boutique : à recréer ou à délier

Cause
Le produit relié n'existe plus dans la boutique.
Que faire
Recréez-le dans la boutique avec la même référence. S'il ne doit plus y figurer, écrivez-nous.

Produit … : type changé dans GSE-Web, l'ancienne fiche Shopify n'est plus reliée

Cause
Le produit est passé de simple à « à déclinaisons » (ou l'inverse) : la fiche Shopify de l'ancien type ne lui correspond plus. Le lien a été retiré ; la nouvelle fiche suit le type actuel.
Que faire
Supprimez ou archivez l'ancienne fiche dans Shopify, puis « Ignorer ».

Kit … : nomenclature non publiable (motif)

Cause
Le kit n'a aucun composant, l'un d'eux est archivé ou inactif, ou la quantité d'un composant est saisie dans une autre unité que son unité de base. Le kit n'est pas mis en vente.
Que faire
Corrigez la nomenclature du kit. Le point disparaît au passage suivant.

Produit à déclinaisons … : aucune déclinaison vivante — non publié

Cause
Un produit à déclinaisons se vend par ses déclinaisons : sans déclinaison active, il n'est pas mis en vente.
Que faire
Créez une déclinaison, ou réactivez-en une. Le point disparaît au passage suivant.

Déclinaison … : non publiée (motif)

Cause
La déclinaison ne peut pas être publiée : son produit parent est introuvable, archivé ou pas encore publié en boutique, ou ses axes et valeurs sont invalides (Shopify accepte trois axes au plus). Le motif est affiché entre parenthèses.
Que faire
Corrigez la cause indiquée, sur le produit parent ou sur la déclinaison. Le point disparaît au passage suivant.

Produit … : photo non reprise de la boutique (motif)

Cause
Une photo de la boutique n'a pas pu être recopiée sur la fiche. Motifs possibles : image introuvable, format non pris en charge (JPEG, PNG, WebP et GIF sont acceptés), plus de 5 Mo ou illisible, boutique injoignable (nouvel essai au passage suivant), adresse d'image non sûre (HTTPS public exigé), plus de 20 photos (les suivantes ne sont pas reprises).
Que faire
Vérifiez la photo dans les médias du produit en boutique. Le point disparaît quand tout est importé ; le reste du produit est repris quand même.

Stock

Stock fractionnaire arrondi à l'unité inférieure en boutique

Cause
Le stock disponible porte des décimales ; la boutique ne vend que des unités entières.
Que faire
Information seulement : la boutique affiche l'unité inférieure.

Stock du produit … refusé par la boutique (…)

Cause
Shopify a refusé la quantité ; son code de refus est affiché.
Que faire
Vérifiez la fiche du produit dans la boutique à partir de ce code.

Emplacement de stock indisponible (motif) : le stock n'est pas publié

Cause
Le stock ne peut pas être envoyé : aucun emplacement n'a été choisi, ou la boutique refuse celui qui l'a été (supprimé, désactivé, droit manquant). GSE-Web ne se replie jamais sur un autre emplacement.
Que faire
Choisissez un emplacement actif dans la configuration (mettez la connexion en pause pour le changer), « Enregistrer », « Tester la connexion », puis « Reprendre ».

Commandes

Commande … : produit inconnu (SKU …) — aucun bon créé

Cause
Une ligne de la commande porte une référence absente de GSE-Web.
Que faire
Créez le produit avec la même référence, puis « Rejouer ».

Commande … : variante non importable (SKU …, motif) — aucun bon créé

Cause
Une ligne désigne une variante que GSE-Web ne connaît pas, ou la référence d'un produit à déclinaisons lui-même, sans sa déclinaison.
Que faire
Variante inconnue : créez la déclinaison avec la même référence que la variante, puis « Rejouer ». Référence du produit parent commandée sans déclinaison : traitez la commande à la main.

Commande … : sans e-mail d'acheteur

Cause
Sans e-mail, l'acheteur ne peut pas être retrouvé ni créé comme client.
Que faire
Ajoutez l'e-mail du client à la commande dans la boutique, puis « Rejouer ». Si l'e-mail y figure déjà, vérifiez l'accès de l'app aux données client protégées.

Commande … : acheteur illisible (données client protégées non déclarées)

Cause
Shopify ne communique ni le nom, ni l'e-mail, ni l'adresse de l'acheteur à l'app tant qu'elle n'a pas déclaré l'usage des données client protégées.
Que faire
Dans le Dev Dashboard, déclarez l'accès aux données client protégées (nom, e-mail, adresse), publiez une version de l'app, puis « Rejouer ».

Commande … : le client est archivé dans GSE-Web

Cause
Le client qui correspond à cet acheteur a été archivé.
Que faire
Aucun bon n'est créé. Traitez cette commande à la main.

Commande … : devise … différente de …

Cause
La commande est dans une autre devise que votre organisation.
Que faire
Traitez cette commande à la main.

Commande … : trop ancienne pour être importée d'office (plus de … jours)

Cause
Au rattrapage, la commande dépasse l'« Âge maximal d'une commande rattrapée ».
Que faire
« Rejouer » l'importe quand même.

Commande … : déjà expédiée depuis Shopify, aucun bon créé

Cause
La commande était déjà exécutée (en tout ou partie) dans Shopify quand elle est arrivée : vente en caisse (Shopify POS) ou expédition faite depuis l'administration Shopify. Un bon la ferait sortir une seconde fois ; sa sortie de stock n'est donc pas enregistrée dans GSE-Web.
Que faire
Saisissez la sortie de stock correspondante dans GSE-Web (sinon GSE-Web republiera son ancien disponible en boutique), puis « Ignorer ».

Commande … annulée en boutique, mais le bon est déjà pris en charge : à traiter par l'équipe

Cause
Le bon est déjà en préparation : GSE-Web ne l'annule pas tout seul.
Que faire
Décidez avec l'équipe. Si le bon doit être annulé, libérez-le, puis « Rejouer ».

Commande … modifiée en boutique après import : vérifiez le bon

Cause
La commande a changé dans la boutique après la création du bon ; la modification n'est pas reportée.
Que faire
Comparez la commande et le bon, et corrigez le bon si besoin.

Commande … : import impossible (…)

Cause
L'import a échoué ; le motif est affiché entre parenthèses.
Que faire
Corrigez la cause indiquée, puis « Rejouer ».

Commande … : kit … non publiable (motif) — aucun bon créé

Cause
La commande contient un kit dont la nomenclature ne tient pas : aucun composant, composant archivé ou inactif, ou unité différente de l'unité de base. Aucun bon n'est créé.
Que faire
Corrigez la nomenclature du kit, puis « Rejouer ».

Commande … : la boutique refuse l'opération (…)

Cause
Shopify a refusé d'exécuter ou d'annuler la commande, ne l'a pas trouvée, ou en garde une partie en attente (ordre d'exécution suspendu ou planifié) ; le message le précise.
Que faire
Vérifiez la commande dans la boutique et exécutez-la ou annulez-la à la main si besoin : le passage suivant retente de lui-même tant que le bon l'appelle.

Commande … : bon annulé, mais la commande est déjà close en boutique — à traiter avec le client

Cause
Le bon a été annulé dans GSE-Web, mais la boutique avait déjà exécuté ou clos la commande : GSE-Web ne la défait pas.
Que faire
Réglez la situation avec le client (remboursement, retour) directement dans la boutique.

Webhooks

Webhooks supprimés par la boutique : recréés, commandes rattrapées

Cause
Shopify supprime un abonnement de webhook après plusieurs échecs de livraison, ou un abonnement de l'app a été supprimé dans la boutique.
Que faire
Rien à faire : le contrôle des webhooks, toutes les 6 heures, les recrée et rattrape les commandes.

Pause, reprise et changements

Le connecteur se coupe et se rouvre à tout moment. Certains changements ont une règle, que l'écran rappelle et que le serveur fait respecter.

« Mettre en pause »

Plus rien n'est envoyé ni importé, et rien n'est perdu. Le stock affiché en boutique reste celui du dernier envoi.

« Reprendre »

La boutique est de nouveau vérifiée (identifiants, droits, devise, régime de prix, emplacement), puis le rattrapage est lancé : les commandes passées pendant la pause sont importées si elles ont moins de N jours (« Âge maximal d'une commande rattrapée », 30 par défaut) et si Shopify les rend encore. Plus anciennes, elles deviennent des points à traiter.

Changer d'identifiants, de régime HT/TTC ou d'emplacement

Sous une connexion active, le domaine, les identifiants, « Prix publiés » et l'emplacement sont verrouillés. Suivez cet ordre : « Mettre en pause », modifier, « Enregistrer », « Tester la connexion », « Reprendre ». Un nouvel emplacement reçoit tout le stock ; l'ancien n'est pas remis à zéro — faites-le dans Shopify, la boutique additionnant les emplacements.

Changer de boutique

« Déconnecter » d'abord : les abonnements de webhook de l'ancienne boutique sont retirés. Saisissez ensuite la nouvelle boutique ; l'emplacement est à choisir de nouveau.

Reconnecter la même boutique

Les produits, les commandes et les clients déjà reliés sont retrouvés : aucun second bon n'est créé pour une commande déjà importée, et tout le stock est renvoyé.

Changer un réglage de fiche

Après un changement de « Prix publiés » ou de « Créer et mettre à jour les fiches produits en boutique », le passage suivant relit tout le catalogue. Un changement de « Magasin publié » renvoie tout le stock.

« Déconnecter »

Les abonnements de webhook sont retirés de la boutique et les identifiants effacés. Rien n'est supprimé en boutique ni dans GSE-Web : les bons et les clients déjà importés restent. Si la boutique ne répond pas, l'écran vous demande de supprimer vous-même les abonnements de l'app depuis Shopify.

Fermeture du module

Si KLS-Concept ferme le module pour votre organisation, tout s'arrête sans rien supprimer. À la réouverture, le passage suivant rattrape les commandes et republie le stock.

Sécurité et données

Ce que le connecteur garde, et comment.

Identifiants chiffrés

Le secret de l'app, l'ID client ou le jeton Admin sont chiffrés sur le serveur (AES-256-GCM). Ils ne sont jamais réaffichés, ni inscrits dans les journaux. Le jeton de 24 heures d'une app du Dev Dashboard n'est jamais enregistré.

Double authentification

Elle est exigée pour saisir ou remplacer les identifiants d'une boutique.

Domaine Shopify seulement

Le connecteur n'appelle que le domaine …myshopify.com saisi, en HTTPS ; aucune redirection n'est suivie. Les photos reprises ne sont téléchargées que depuis une adresse HTTPS publique, sans jamais transmettre le jeton.

Webhooks signés

Chaque webhook reçu est signé avec le secret de l'app, et sa signature est vérifiée avant tout traitement. Il ne sert que de signal : la commande est relue auprès de Shopify, et son contenu n'est pas conservé.

Données de l'acheteur

Ses coordonnées sont reprises dans sa fiche client et l'adresse de livraison sur le bon. Le lien avec la boutique ne garde qu'une empreinte de son e-mail.

Rien dans l'export

Les identifiants chiffrés ne figurent pas dans l'export de portabilité de l'organisation.

Dépannage

Le message affiché par l'écran, sa cause et ce qu'il faut faire. Le code entre crochets aide le support à retrouver le cas.

Arrêté — à vérifier

« Arrêtée par le serveur — vérifiez les identifiants et testez »

Après cinq refus d'authentification d'affilée (app désinstallée, secret régénéré, jeton révoqué), le serveur arrête la connexion pour ne pas insister. Vérifiez l'app dans Shopify, saisissez de nouveaux identifiants si besoin, « Enregistrer », « Tester la connexion », puis « Activer ».

Domaine de boutique invalide : un domaine de la forme boutique.myshopify.com est attendu

Que faire
Saisissez le domaine d'administration de la boutique (…myshopify.com), pas son adresse publique. L'adresse d'administration collée depuis le navigateur est acceptée.
[SHOPIFY_SHOP_DOMAIN_INVALID]

Shopify refuse les identifiants : vérifiez l'ID client et le secret (ou le jeton Admin), que l'app est installée sur la boutique et qu'elle appartient à la même organisation du Dev Dashboard

Que faire
Vérifiez l'ID client et le secret dans les paramètres de l'app (Dev Dashboard), que l'app est bien installée sur cette boutique, et que l'app et la boutique sont dans la même organisation.
[SHOPIFY_SHOP_AUTH_FAILED]

Ces identifiants sont ceux de la boutique …, pas de …

Que faire
Les identifiants appartiennent à une autre boutique : corrigez le domaine, ou saisissez les identifiants de l'app installée sur cette boutique.
[SHOPIFY_SHOP_DOMAIN_MISMATCH]

L'app n'a pas tous les droits nécessaires. Droits manquants : …

Que faire
Dans le Dev Dashboard, cochez les droits manquants, publiez une nouvelle version et réinstallez l'app sur la boutique, puis testez à nouveau. L'écran affiche la liste des droits manquants.
[SHOPIFY_SHOP_SCOPES_MISSING]

La devise de la boutique (…) diffère de celle de l'organisation (…)

Que faire
Le connecteur ne relie qu'une boutique dans la devise de votre organisation.
[SHOPIFY_SHOP_CURRENCY_MISMATCH]

La boutique publie ses prix …, mais la connexion est réglée sur …

Que faire
Dans « Réglages », choisissez pour « Prix publiés » le régime de la boutique (« Inclure les taxes dans les prix », dans Paramètres › Taxes et droits de douane). Mettez d'abord la connexion en pause si elle est active, enregistrez, puis testez.
[SHOPIFY_SHOP_PRICE_MODE_MISMATCH]

Choisissez l'emplacement Shopify qui reçoit le stock (testez la connexion pour obtenir la liste des emplacements)

Que faire
« Tester la connexion », choisissez l'« Emplacement de la boutique », « Enregistrer », puis « Activer ».
[SHOPIFY_LOCATION_REQUIRED]

L'emplacement choisi n'existe plus ou est désactivé dans la boutique : testez la connexion et choisissez-en un autre

Que faire
Mettez la connexion en pause, « Tester la connexion » (la liste des emplacements est rechargée), choisissez un emplacement actif, « Enregistrer », puis « Reprendre ».
[SHOPIFY_LOCATION_NOT_FOUND]

La boutique est gelée, en pause ou verrouillée par Shopify : rien à corriger dans GSE-Web, réessayez quand elle est de nouveau ouverte

Que faire
Réglez la situation de la boutique avec Shopify (abonnement, paiement) ; la synchronisation reprend ensuite d'elle-même.
[SHOPIFY_SHOP_UNAVAILABLE]

La boutique est injoignable (…)

Que faire
Vérifiez que la boutique répond, puis réessayez.
[SHOPIFY_SHOP_UNREACHABLE]

La boutique n'a pas répondu à temps

Que faire
Réessayez un peu plus tard.
[SHOPIFY_SHOP_TIMEOUT]

La boutique limite les appels : réessayez plus tard

Que faire
Patientez : le passage suivant reprend de lui-même.
[SHOPIFY_SHOP_RATE_LIMITED]

Réponse de la boutique illisible

Que faire
Réessayez ; si le message revient, écrivez-nous avec le code ci-dessous.
[SHOPIFY_SHOP_RESPONSE_INVALID]

Mettez la connexion en pause avant de changer de boutique, d'identifiants ou d'emplacement de stock

Que faire
« Mettre en pause », modifier, « Enregistrer », « Tester la connexion », « Reprendre ».
[SHOPIFY_CONNECTION_ACTIVE_CHANGE_REFUSED]

Déconnectez d'abord la boutique actuelle (ses abonnements de webhook sont encore armés) avant d'en saisir une autre

Que faire
« Déconnecter », puis saisissez la nouvelle boutique.
[SHOPIFY_SHOP_CHANGE_REQUIRES_DISCONNECT]

Le régime de prix (HT/TTC) se change sur une connexion en pause

Que faire
Suivez cet ordre : « Mettre en pause », modifiez « Prix publiés », enregistrez, testez, puis « Reprendre ». Le régime est vérifié contre la boutique au test et à la reprise.
[SHOPIFY_PRICE_MODE_CHANGE_REQUIRES_PAUSE]

Le secret de l'app et exactement un identifiant — l'ID client ou le jeton Admin — sont requis ensemble

Que faire
Saisissez le secret avec l'ID client (ou avec le jeton Admin), ou laissez tout vide pour garder les identifiants enregistrés.
[SHOPIFY_CREDENTIALS_REQUIRED]

Activez la double authentification sur votre compte avant de saisir les identifiants d'une boutique

Que faire
Activez-la dans « Mes informations » (l'écran propose « Ouvrir « Mes informations » »), puis enregistrez de nouveau.
[SHOPIFY_CONNECTION_TWO_FACTOR_REQUIRED]

Un magasin d'exercice ne peut pas être relié à une boutique en ligne

Que faire
Choisissez un magasin réel comme « Magasin publié ».
[SHOPIFY_WAREHOUSE_EXERCISE_REFUSED]

Les identifiants enregistrés ne peuvent plus être lus sur ce serveur : saisissez-les à nouveau

Que faire
Saisissez de nouveau le secret et l'ID client (ou le jeton), testez, puis activez.
[INTEGRATIONS_CREDENTIALS_UNREADABLE]

Une synchronisation est déjà en cours pour cette connexion : réessayez dans quelques instants

Que faire
Attendez la fin du passage en cours.
[INTEGRATIONS_CONNECTION_BUSY]

Questions fréquentes

Les produits à variantes sont-ils pris en charge ?

Oui. Un produit à déclinaisons est publié comme un produit à options, et chacune de ses déclinaisons comme une variante, avec sa référence, son prix et son stock. Shopify accepte trois axes au plus (taille, couleur, matière…). Une commande d'une variante donne un bon sur la déclinaison.

Peut-on relier plusieurs boutiques ou plusieurs emplacements ?

Non. Une organisation relie une boutique, et un magasin de GSE-Web, le « Magasin publié », alimente un seul emplacement de la boutique. Les autres emplacements Shopify ne sont pas touchés.

Les livraisons sont-elles renvoyées à la boutique ?

Oui, si « Remonter les livraisons et annulations à la boutique » est coché, ce qui est le cas par défaut. Un bon livré exécute sa commande en boutique ; s'il est parti dans une expédition, le transporteur et le n° de suivi sont transmis, et Shopify envoie au client son e-mail d'expédition. Un bon annulé dans GSE-Web annule sa commande en boutique, sans remboursement. GSE-Web n'écrit jamais les lignes d'une commande.

Les images et la description des produits sont-elles échangées ?

Elles ne partent jamais de GSE-Web : photos et description se gèrent dans Shopify. En revanche, si vous cochez « Reprendre la description et les photos de la boutique », elles sont recopiées dans GSE-Web sur les produits reliés. Les photos et la description propres à chaque déclinaison ne sont pas reprises.

Les collections, les balises et les taxes de la boutique sont-elles reprises ?

Non. Elles restent gérées dans Shopify, et GSE-Web ne les reprend pas.

Et les ventes en caisse (Shopify POS) ?

Une commande déjà exécutée dans Shopify quand elle arrive, comme une vente en caisse, ne devient pas un bon : la marchandise est déjà partie. Un point à traiter vous demande d'en saisir la sortie de stock dans GSE-Web ; sinon, GSE-Web republierait son ancien disponible en boutique.

Que se passe-t-il si je mets en pause ou si le module est fermé ?

Rien n'est envoyé ni importé, et rien n'est supprimé. Le stock en boutique reste celui du dernier envoi. À la reprise, les commandes passées entre-temps sont rattrapées si elles ont moins de 30 jours (réglable de 1 à 90, et 60 jours au plus sans le droit read_all_orders).

Au bout de combien de temps une commande apparaît-elle dans GSE-Web ?

Aussitôt, par webhook. Si un webhook se perd, le passage suivant, toutes les 5 minutes, rattrape la commande.

Peut-on vendre en boutique un produit qui n'est plus en stock ?

Le risque est réduit à quelques secondes, sans disparaître. Le stock part vers la boutique quelques secondes après chaque sortie, entrée ou réservation faite dans GSE-Web, et chaque commande de la boutique réserve aussitôt toute sa quantité. Une vente en boutique au moment précis d'une sortie au magasin reste possible : elle devient un bon dont le manque se lit « En attente de réception ».

Un acheteur déjà présent dans mes tiers est-il reconnu ?

Non. Le connecteur crée un client « particulier » par acheteur et le retrouve par son e-mail aux commandes suivantes, mais il ne le rapproche pas d'un tiers déjà saisi dans GSE-Web.

Les commandes passées avant l'activation sont-elles importées ?

Non. Seules les commandes reçues après l'activation sont importées.

Comment obtenir le connecteur ?

Les modules « Intégrations » et « Shopify » sont ouverts organisation par organisation par KLS-Concept. Écrivez-nous depuis la page de contact.

Relier votre boutique Shopify

Demandez l'ouverture du connecteur pour votre organisation, ou posez-nous vos questions sur votre cas.