Shopify B2B — inscription et approbation

Les demandes en gros deviennent de vraies entreprises Shopify.

Un acheteur fait une demande. Une personne la lit. À l'approbation, B2B Triage écrit des objets Shopify natifs — entreprise, emplacement, contact, catalogue, conditions de paiement, exonération de taxes. Pas une étiquette. Pas une note. Les objets sur lesquels roule le moteur B2B de Shopify.

20 $/mois. Le B2B natif de Shopify est offert sur tous les forfaits payants — ce n'est plus réservé à Plus depuis avril 2026.

01 — Le graphe d'objets

Une approbation. Six objets natifs.

L'approche courante s'arrête à une fiche client avec les réponses collées dans une note. B2B Triage crée ce que le moteur B2B de Shopify lit vraiment.

01

Entreprise

Un identifiant externe stable, dérivé au moment de la demande et non de l'approbation. Shopify n'impose aucune unicité sur le nom d'une entreprise : sans lui, un double-clic sur Approuver en crée deux, en silence.

02

Emplacement

Y compris le deuxième que Shopify crée automatiquement dans votre dos, sans conditions, sans exonération et sans catalogue. C'est celui que les acheteurs choisissent, et il vend au prix de détail. Nous le détectons et le réconcilions.

03

Contact

L'acheteur, rattaché à l'emplacement, via la mutation qui fonctionne quand le client existe déjà — c'est-à-dire toujours.

04

Catalogue

Leur liste de prix, vérifiée ACTIVE à la relecture plutôt que supposée. Shopify peut la forcer à ARCHIVED sans rien dire.

05

Conditions de paiement

Net 30 résolu depuis le modèle vers un entier typé — jamais extrait du texte affiché, ce qui casse dès la première boutique en français.

06

Exonération de taxes

La valeur juste pour la juridiction, parmi les 75 de Shopify. Le Canada à lui seul en compte six types. Un booléen général n'est pas la même chose.

Neuf étapes, chacune inscrite dans l'historique de la demande. Quand Shopify refuse une étape, vous lisez les mots de Shopify — pas un code d'erreur que nous aurions inventé.

02 — Propriété

Résiliez. Gardez tout.

Toutes les applications veulent vos données. Presque aucune ne vous dit ce qu'elles deviennent le jour où vous partez.

Shopify n'enregistre aucun lien de propriété applicative sur une entreprise, un emplacement, un contact, un catalogue, des conditions de paiement ou une exonération. Les métachamps, eux, ont un espace de noms réservé $app: — et une désinstallation le coupe. Les entreprises n'ont pas ce champ. Il n'y a rien qu'une désinstallation puisse retirer.

Disons-le avec précision, parce que ce genre d'affirmation le mérite : ce qui est prouvé, c'est le mécanisme, et il tient peu importe qui a créé les objets. Notre essai de désinstallation en direct les a écrits avec un identifiant d'API indépendant plutôt qu'avec le jeton de l'application — nous préférons vous montrer la couture que la poncer.

03 — Vos données

Structurées à la saisie : l'export est prêt pour votre CRM.

Nous construisons des applications qui structurent vos données et mesurent le ROI. Ça se joue à un endroit ingrat : là où atterrissent les réponses.

L'approche courante range les réponses d'inscription dans un bloc de texte délimité, à l'intérieur du champ Notes du client. N'importe quel membre de votre équipe peut la modifier ou l'effacer, et aucun rapport, segment ou requête ne peut aller voir à l'intérieur. La donnée est sur la fiche sans être une donnée.

B2B Triage écrit des métachamps typés et nommés. Un nombre est un nombre.

Analysable
Les métachamps sont une dimension GROUP BY dans ShopifyQL. Les étiquettes n'ont aucune dimension analytique — on ne peut pas faire de rapport sur une étiquette. (Shopify n'offre pas de filtrage sur les métachamps client dans la liste de l'admin : la réponse vient de l'analytique et de l'export, pas de la liste des clients.)
Typé
net_terms_days = 30 permet « plus grand que 30 ». L'étiquette net30 entre en collision de texte avec net300 et ne permet rien.
Nommé
Tout atterrit sous b2b_triage. Les étiquettes forment un espace de noms global et plat, partagé avec toutes les applications de votre boutique : deux applications qui écrivent « wholesale » se marchent dessus en silence.
Exportable
CSV avec les GID Shopify comme clés de jointure : la ligne correspond à votre CRM au lieu de l'approcher. Les valeurs sont normalisées à la saisie.

Nous écrivons aussi des étiquettes, comme pont de compatibilité pour les outils qui ne lisent pas les métachamps (la synchronisation native de Klaviyo lit les étiquettes, pas les métachamps). Les métachamps sont la vérité. Les étiquettes sont une politesse.

04 — Numéros de taxe

Les 21 minutes où Google Ireland était une fraude.

VIES est le registre de TVA de l'Union européenne. Il répond HTTP 200 quand il est en panne, et signale ses propres pannes par isValid: false. La vraie raison se cache dans un autre champ.

Le 16 juillet 2026, nous l'avons interrogé sur IE6388047V — le vrai numéro de TVA de Google Ireland. Pendant 21 minutes, la réponse a été « invalide », parce que le service irlandais était en panne. Puis, sans que rien ne change chez Google, la réponse est devenue « valide ».

Heure (UTC) isValid userError La lecture naïve
05 h 14 false MS_UNAVAILABLE « Invalide » — signalé comme fraude
05 h 35 true VALID GOOGLE IRELAND LIMITED

Nous ne lisons jamais isValid. Nous lisons le code d'erreur, comme une liste blanche : une seule valeur signifie « non enregistré ». Tout le reste — y compris les codes que la Commission ajoutera l'an prochain — signifie « nous n'avons pas pu vérifier maintenant », ce qui est une autre phrase et mérite un autre mot à l'écran.

Et nous ne rejetons jamais personne parce qu'un registre gouvernemental a cligné des yeux. Il n'existe aucune branche dans notre code qui transforme la mauvaise journée d'un registre en refus — ce n'est pas une politique promise, c'est une branche qui n'existe pas. « Jamais vérifié », « vérifié sans résultat » et « la vérification a échoué » sont trois faits différents ; un booléen les écraserait en un mensonge.

Ce que nous vérifions, précisément

« Validé » et « vérifié auprès du registre » ne sont pas le même mot. Alors nous utilisons les deux, et nous vous disons lequel vous avez obtenu.

Validé hors ligne — format et clé de contrôle
TVA européenne, TVA britannique, ABN australien, GST indien, EIN américain. De l'arithmétique réelle, pas une expression régulière. Une valeur dont nous pouvons déjà prouver que c'est une faute de frappe n'atteint jamais un registre gouvernemental.
Vérifié auprès du registre en direct
La TVA européenne, via VIES. C'est toute la liste, et nous préférons le dire plutôt que d'en laisser deviner cinq.
Construit, en attente d'un identifiant
L'ABR australien. Écrit et testé ; nous n'avons pas encore le GUID, donc aucun appel n'a retourné de vraie donnée ABN.
Pas construit
HMRC au Royaume-Uni exige un identifiant OAuth. Nous répondons « non pris en charge » plutôt que de livrer un client qui échoue à chaque appel et présente ça comme le problème de l'acheteur.
Impossible, pas manquant
L'Inde et les États-Unis n'ont aucun registre public à interroger. Quiconque vous le facture vérifie le format.
05 — Formulaires

(A et B) ou C.

La logique conditionnelle est souvent ce pour quoi on vous fait monter de forfait. La nôtre gère des groupes ET/OU imbriqués — pas un simple interrupteur global « tout / au moins un », qui par construction ne peut pas exprimer la ligne ci-dessus. À 20 $.

Afficher le champ « certificat de revente » quand le pays est le Canada et que la province est le Québec — ou dès que la personne a choisi « distributeur », où qu'elle soit. C'est une seule règle.

Caché veut dire absent, et c'est appliqué chez nous : le serveur réévalue chaque condition avant d'accepter quoi que ce soit, donc une requête forgée ne peut pas faire passer une valeur que votre logique n'a jamais affichée. Le même module fait tourner l'aperçu de l'éditeur et la soumission.

Normaliser. Pas rejeter.

  • h9b2g9 devient H9B 2G9. Par pays — un ZIP américain n'est pas un code postal canadien.
  • Les numéros de téléphone sont enregistrés en E.164. Le formatage se fait à la sortie du champ, jamais à la frappe.
  • 244 pays, avec des listes de provinces et d'États pour chaque pays qui en a — construites à partir des données de zones de Shopify, qui ne sont pas l'ISO 3166-2. L'Aguascalientes du Mexique est AGS pour Shopify et AGU pour l'ISO, et Shopify accepte le mauvais code sans broncher.
  • Les erreurs diagnostiquent au lieu de juger. Le mot « invalide » n'apparaît jamais — un test l'impose.
  • Des champs de 16 px pour que Safari iOS ne zoome pas à la mise au point. De vraies étiquettes, des erreurs annoncées aux lecteurs d'écran, des cibles tactiles de 44 px.
06 — Votre vitrine

Zéro requête tierce. Fonctionne sans JavaScript.

La vitesse de votre vitrine, c'est votre référencement et votre taux de conversion. Une application qui taxe chaque page pour servir un seul formulaire n'est pas gratuite — c'est juste que vous ne recevez pas la facture.

  • Aucune requête tierce : pas de traqueur, pas de police depuis un CDN, pas de pixel. Rien sur votre vitrine n'appelle ailleurs que votre vitrine.
  • Ça se charge uniquement là où vous le placez. C'est un bloc de thème, pas un app embed — un embed s'exécute sur toutes les pages de votre boutique, y compris celles sans formulaire.
  • Moins de 13 Ko compressés, mesurés sur l'artéfact construit par une étape de build qui échoue s'il grossit.
  • Le formulaire fonctionne avec JavaScript désactivé. Toute vérification auprès d'un registre de taxes passe par notre serveur, jamais par le navigateur de votre acheteur.
07 — Tarifs

Deux forfaits. C'est toute la page.

Facturé par Shopify, sur votre facture existante.

Fonction B2B Triage 20 $/mois Tout ce qui précède. + DétailÀ venir 35 $/mois Tout le forfait à 20 $, plus trois choses qui n'existent pas encore.
Formulaires d'inscription — multi-étapes, champs personnalisés, logique ET/OU imbriquée Inclus Inclus
File d'approbation — manuelle, automatique, ou selon le domaine du courriel Inclus Inclus
Entreprise, emplacement, contact, catalogue, conditions et exonération natifs à l'approbation Inclus Inclus
Métachamps typés + étiquettes pour la compatibilité Inclus Inclus
Validation des numéros de taxe, et TVA européenne vérifiée en direct auprès de VIES Inclus Inclus
Export CSV avec les GID Shopify comme clés de jointure Inclus Inclus
Déclencheur Shopify Flow portant les données typées de la demande Inclus Inclus
Point de vente — les prix B2B au comptoir Non inclus À venir
API publique Non inclus À venir
Intégration Klaviyo Non inclus À venir

Les trois lignes « détail » sont en développement, et affichées ici pour que la feuille de route ne soit pas un secret. N'achetez pas le forfait à 35 $ pour elles aujourd'hui — prenez celui à 20 $, et nous vous dirons quand celui-ci sera réel.

Le B2B natif de Shopify est offert sur tous les forfaits payants — ce n'est plus réservé à Plus depuis avril 2026. Quelques morceaux du B2B de Shopify restent réservés à Plus, et nous précisons lesquels dans la FAQ.

08 — Questions

Les questions qui méritent une réponse.

Qu'est-ce que B2B Triage crée quand j'approuve un acheteur ?

Des objets B2B Shopify natifs : une entreprise, un emplacement, un contact, une affectation de catalogue, des conditions de paiement et une exonération de taxes juste pour la juridiction — plus des métachamps typés sur le client, et des étiquettes pour les outils qui ne lisent que les étiquettes. Ce sont des fiches Shopify ordinaires : votre équipe peut les modifier, vos autres applications peuvent les lire, et le moteur B2B de Shopify les utilise directement parce qu'ils sont les siens.

Est-ce qu'il me faut Shopify Plus ?

Non. Le B2B natif de Shopify est offert sur tous les forfaits payants depuis avril 2026 — la règle « le B2B, c'est réservé à Plus » est une vraie page d'histoire, et elle est périmée. Trois choses restent réservées à Plus par Shopify, pas par nous : affecter un catalogue directement à une entreprise, dépasser trois catalogues (les forfaits hors Plus plafonnent à trois), et les paiements partiels ou acomptes. Notre boutique est Plus, et nous n'avons pas encore vu une installation hors Plus réussir ou échouer — si vous y êtes et que quelque chose cloche, nous voulons être ceux qui l'apprennent.

Qu'arrive-t-il à mes entreprises si je désinstalle ?

Elles restent. Shopify n'enregistre aucun lien de propriété applicative sur une entreprise, un emplacement, un contact, un catalogue, des conditions de paiement ou une exonération — contrairement aux métachamps, qui vivent sous un espace de noms réservé $app: qu'une désinstallation coupe réellement. Il n'y a rien que notre départ puisse retirer. Précisons : ce qui est prouvé, c'est ce mécanisme, et il tient peu importe qui a créé les objets — notre essai de désinstallation en direct les a écrits avec un identifiant d'API indépendant, pas avec le jeton de l'application.

Comment gérez-vous le pourriel ?

Un champ piège, une limite par adresse IP, et la file d'approbation — le vrai rempart, puisque aucune demande ne devient une entreprise avant qu'une personne l'ait lue. Nous ne livrons pas de CAPTCHA : nous en avions un, il causait plus de problèmes qu'il n'en réglait, et nous l'avons retiré plutôt que de laisser un contrôle qui ment. Le pourriel peut vous coûter de l'attention et une ligne de base de données. Il ne peut pas vous coûter d'argent, ni rien créer sur votre boutique. Si un CAPTCHA est une exigence ferme chez vous, c'est un vrai manque.

Les données de mes acheteurs sont-elles en sécurité ? Où vont-elles ?

Elles restent dans votre boutique Shopify et dans notre base de données, nulle part ailleurs. Les numéros de taxe et de TVA sont privés pour la vitrine — jamais lisibles depuis votre thème. Aucune donnée personnelle dans les journaux, aucune dans les URL. Les données personnelles des demandeurs sont anonymisées automatiquement 730 jours après la décision. Les entreprises approuvées ne sont jamais touchées par cette purge — ce sont vos fiches, pas les nôtres.

Qui construit ça ?

Human After All, une agence Shopify à Montréal. Nous faisons du B2B sur Shopify pour gagner notre vie, et nous avons fait ceci parce que les outils dont nous avions besoin ou bien n'existaient pas, ou bien créaient un système parallèle à côté de la boutique au lieu d'utiliser la boutique. Débattez d'un choix technique de cette page et vous aurez un ingénieur en face.

09 — Contact

Posez-nous une question précise.

Une vraie personne les lit. Si vous avez une question sur une affirmation de cette page, posez-la — nous préférons être corrigés que crus sur parole.

Facultatif — votre domaine myshopify.com ou votre vitrine

Nous utilisons ce que vous envoyez pour vous répondre. Rien d'autre, et personne d'autre.