Documentation

Démarrage

Installer Snaptare, le pointer sur votre catalogue, encaisser la première vente. Sous dix minutes si vos produits Shopify sont déjà en place.

1. Installer depuis l'App Store Shopify

Cherchez « Snaptare » sur l'App Store Shopify, cliquez Ajouter l'app, approuvez les permissions demandées dans votre admin Shopify. L'app a besoin des scopes suivants :

  • read_products, write_products — lire le catalogue, mettre à jour les tags pendant la configuration.
  • read_draft_orders, write_draft_orders — créer et finaliser les commandes brouillon au comptoir.
  • read_customers — rechercher un client à attacher à une vente (résultats jamais mis en cache chez nous ; voir confidentialité §3).
  • read_locations, read_inventory, write_inventory — multi-emplacement et décrément du stock.

L'approbation active l'app. Snaptare récupère immédiatement votre catalogue (en arrière-plan) et l'indexe sur la tablette. Une barre de progression s'affiche dans l'app.

2. Taguer les produits du comptoir

Snaptare n'expose au comptoir que les produits portant le tag snaptare. Les produits en ligne uniquement restent invisibles à la caisse.

  1. Allez dans Admin Shopify → Produits.
  2. Filtrez sur les produits que vous vendez au comptoir (graines, épices, huiles, savons, etc.).
  3. Tout sélectionner → Modification groupée → ajouter le tag snaptare.

La tablette voit les nouveaux tags en quelques secondes via le webhook Shopify products/update. Tirez pour rafraîchir si vous ne voulez pas attendre.

Vous voulez un autre tag ? Paramètres → Catalogue → Tag produit accepte bulk-pos, vrac, ou ce que vous voulez.

3. Choisir la variante exposée à la caisse

Si vous avez des produits multi-variantes (Haricots adzuki 100 g / 250 g / 500 g / 1 kg), vous ne voulez pas les quatre encombrer la grille — juste celle qui sert de référence vrac (typiquement la plus petite, ex. 100 g).

  1. Ouvrez un produit → cliquez sur la variante à exposer.
  2. Descendez aux Métachamps → ajoutez un métachamp avec le namespace snaptare, la clé canonical, type Booléen, valeur true.
  3. Enregistrez.

Sans rien marquer : toutes les variantes apparaissent. C'est très bien pour les produits à variante unique — typique des préemballés comme un pot de miel.

4. Définir l'unité de prix par variante

Snaptare doit savoir, pour chaque variante, dans quelle unité le prix de rayon est exprimé. La valeur par défaut est kg (modifiable sous Paramètres → Catalogue → Unité de prix par défaut). Pour surcharger par variante, ajoutez un métachamp de variante Shopify :

  • Namespace : snaptare
  • Clé : price_unit
  • Type : Texte sur une ligne
  • Valeur : un des identifiants ci-dessous (minuscules, sans espace)
DimensionValeurs price_unit autoriséesProduits typiques
Poidskg · g · lb · ozCéréales, oléagineux, épices, fromage
Longueurm · cm · mm · in · ft · ydTissu, corde, câble, galon
Volumel · ml · gal · flozHuiles, vinaigres, savon liquide, recharges
Surfacem2 · cm2 · ft2Moquette, cuir, panneaux
CompteeachPots, savons à la pièce, une botte d'herbes

Toute valeur hors de ce tableau est ignorée — Snaptare retombe sur le défaut de la boutique. Les identifiants sont sensibles à la casse ; écrivez en minuscules.

5. Comment Snaptare calcule le prix unitaire

C'est l'étape qui piège le plus de merchants. Le prix affiché à la caisse est par price_unit (par kg, par mètre, par litre…), mais ce que vous tapez dans le champ prix de la variante sur Shopify est le prix total de ce conditionnement.

Exemple : un sachet de 100 g de noix à 2,40 € dans Shopify devient 24,00 € / kg à la caisse. Snaptare fait le calcul :

prix_par_unité = variante.prix ÷ convert(variante.poids, variante.unité_poids → price_unit)

Deux conséquences :

  1. Chaque variante pesée doit avoir son champ Poids renseigné dans Shopify (à côté de l'Unité de poids). Sans poids, Snaptare traite le prix de la variante comme déjà au prix unitaire, ce qui est presque toujours faux pour une épicerie vrac (symptôme : « 2,40 € / kg » au lieu de « 24 € / kg »).
  2. L'« Unité de poids » Shopify ne sert qu'à cette division — ce n'est pas l'unité d'affichage à la caisse. La caisse affiche toujours en snaptare.price_unit (ou le défaut). Cela permet de garder les poids d'expédition en grammes tout en affichant au kilo.

Pour les variantes each, Snaptare saute la division : variante.prix est le prix à l'unité, et la caisse affiche un sélecteur de quantité au lieu d'une saisie de poids/mesure.

Mauvaise config classique. Un merchant importe du vrac à 100 g avec « 24 » dans le champ prix (sous-entendu par kg) et sans poids. La caisse affichera 24 € puis facturera 24 € pour une louche de 100 g. Correction : soit 2,40 en prix variante et poids = 100 g ; soit poids = 1 kg pour que les 24 € bruts correspondent à l'affichage par kg.

6. Corriger l'unité d'un produit depuis la caisse

Pas besoin d'aller dans l'admin Shopify pour basculer un produit d'une unité à l'autre — appuyez longuement sur la tuile du produit dans Snaptare (≈550 ms) et le menu Vendre comme s'ouvre avec les unités courantes (each, kg, g, lb, oz). Une tape écrit le métachamp snaptare.price_unit dans Shopify pour vous.

C'est l'outil pour les « ah, ces bocaux se vendent à l'unité en fait » en plein service.

7. Encaisser la première vente

Ouvrez Snaptare sur la tablette. Trois étapes :

  1. Trouver le produit. Tapez, cherchez ou maintenez le mic et dites-le (ex. « amandes, six cents grammes »).
  2. Lire le poids. Soit la balance connectée pousse la valeur, soit vous tapez en grammes sur le pavé numérique.
  3. Encaisser. Tapez Encaisser → espèces ou carte manuelle. Snaptare crée une commande brouillon Shopify avec une ligne sur mesure, la finalise, décrémente le stock, imprime le ticket.

Plusieurs clients ? Tapez + Nouveau panier et démarrez-en un second. Glissez pour passer de l'un à l'autre. Le panier actif rayonne.

8. Préparer la tablette pour l'usage quotidien

  • Ajouter à l'écran d'accueil. Visitez app.snaptare.app dans Safari (iPad) ou Chrome (Android) → « Sur l'écran d'accueil ». L'app s'ouvre alors en plein écran sans barre de navigateur.
  • Connexion. Reliez-la à votre boutique Shopify depuis l'écran d'accueil de Snaptare. Le jeton est stocké sur l'appareil et rafraîchi automatiquement.
  • Mode grand caractère. Si l'équipe trouve le texte petit, basculez Paramètres → Texte plus grand pour augmenter la taille de base partout.
  • Verrouillez l'orientation. Bloquez la tablette en paysage (iPad) ou portrait — pour que la mise en page ne pivote pas quand on déplace la tablette.
  • Désactivez la mise en veille auto. Quand la tablette est branchée, l'écran ne doit jamais s'éteindre. Le hors-ligne gère les coupures wifi, mais pas un écran qui s'endort en plein client.

9. Référence (pour humains et assistants IA)

Si vous utilisez un assistant IA (Claude, ChatGPT, Shopify Magic) pour corriger un catalogue en masse, donnez-lui cette section. C'est le contrat complet et faisant autorité que la caisse Snaptare lit depuis Shopify.

Où Snaptare regarde

  • Tag produit (configurable ; défaut snaptare) : seuls les produits actifs et taggés apparaissent à la caisse. Les brouillons et archives sont ignorés même taggés. Changez le tag via Paramètres → Catalogue → Tag produit.
  • Métachamp variante snaptare.price_unit (single_line_text_field) : l'unité de prix de cette variante. Valeurs autorisées : voir le tableau du §4. Non défini → Snaptare utilise le réglage boutique catalog.default_price_unit (défaut kg).
  • Métachamp variante snaptare.canonical (boolean, chaîne "true") : si au moins une variante du produit l'a, seules les variantes marquées canonical sont exposées à la caisse. Sinon : règles ci-dessous.
  • price de la variante : le prix total du conditionnement. Snaptare divise par weight (converti en price_unit) pour obtenir le prix unitaire. Pour each, utilisé tel quel.
  • weight et weightUnit de la variante (désormais sous inventoryItem.measurement.weight.{value,unit} en Admin GraphQL) : requis pour les prix au poids/longueur/volume/surface. Pas de poids → prix unitaire faux.
  • Réglage boutique catalog.default_price_unit : fallback quand aucun métachamp variante n'est défini.

Règles d'exposition des variantes

Snaptare choisit les variantes à exposer dans cet ordre :

  1. Si une variante a snaptare.canonical = true → ne montrer que les variantes canonical.
  2. Sinon, si toutes les variantes ont snaptare.price_unit défini → toutes les montrer (permet d'exposer 100 g + « 1 botte each » sur le même produit).
  3. Sinon, si le produit a une seule variante → la montrer.
  4. Sinon, montrer la variante la plus légère (référence vrac typique).

Formule de calcul

// poids/longueur/volume/surface
prix_par_unité = variante.prix ÷ convert(variante.poids,
                                         variante.unité_poids,
                                         variante.price_unit)

// compte ('each')
prix_par_pièce = variante.prix

Écrire un métachamp depuis Shopify Admin GraphQL

La mutation exacte que Snaptare utilise lui-même quand il écrit price_unit (ex. depuis le menu long-press à la caisse). Un assistant IA peut l'enchaîner sur de nombreuses variantes :

mutation SetPriceUnit($metafields: [MetafieldsSetInput!]!) {
  metafieldsSet(metafields: $metafields) {
    userErrors { field message }
  }
}

# variables
{
  "metafields": [
    {
      "ownerId": "gid://shopify/ProductVariant/42424242",
      "namespace": "snaptare",
      "key": "price_unit",
      "type": "single_line_text_field",
      "value": "kg"
    }
  ]
}

Même forme pour snaptare.canonical — avec "type": "boolean" et "value": "true".

Recette de correction en masse

Un catalogue avec de mauvaises unités/prix tombe presque toujours dans un de ces quatre cas. Parcourez-les dans l'ordre :

  1. Poids variante manquant → renseignez weight dans l'admin Shopify (en grammes pour du vrac, souvent 1000 si vos prix sont déjà au kg, ou le poids réel du paquet si vos prix sont au paquet).
  2. Mauvais price_unit → écrivez le métachamp snaptare.price_unit par variante. Choix dans le tableau du §4.
  3. Toutes les variantes apparaissent sur la grille → marquez celle à exposer avec snaptare.canonical = true, ou donnez un price_unit à chaque variante.
  4. Le produit n'apparaît pas du tout → vérifiez le tag (snaptare par défaut) et le statut du produit (doit être actif, pas brouillon/archivé).

Après une édition en masse, la tablette récupère les changements en quelques secondes via le webhook products/update Shopify — rien à faire côté caisse.

La suite : Commandes vocales détaille les phrases comprises par le parser en FR + EN.