Afficher des liens support par IP visiteur dans Shopify

Auteur:Lisa Farrell·2026-06-01

Les boutiques Shopify internationales ont souvent besoin de canaux support différents selon la région. Le JavaScript du thème peut appeler https://my.ipin.io/info et afficher un lien support adapté.

Objectif de conception

Pour « Afficher des liens support par IP visiteur dans Shopify », la page doit rester utile avant la fin de la requête IP. Le résultat géographique n’est qu’un enrichissement : il est validé, limité à une décision précise et ignoré si les données sont incomplètes.

Flux de requête et de décision

Afficher des liens support par IP visiteur dans Shopify: Le flux ci-dessous est propre à cette implémentation et ne reprend pas une liste générique de contrôle IP.

  1. Étape 1 — État par défaut: Liquid fallback
  2. Étape 2 — Requête: data-support-*
  3. Étape 3 — Validation: shopify:section:load
  4. Étape 4 — Décision: AbortController
  5. Étape 5 — Repli: narrow UI decision

Exemple orienté production

Afficher des liens support par IP visiteur dans Shopify: L’exemple ajoute un délai maximal, la validation de la réponse, un repli déterministe et une gestion adaptée au cycle de vie du framework.

<a class="ipin-support"
   href="{{ section.settings.default_url }}"
   data-default="{{ section.settings.default_url }}"
   data-eu="{{ section.settings.eu_url }}"
   data-apac="{{ section.settings.apac_url }}">
  {{ section.settings.label | escape }}
</a>

<script>
(() => {
  const initialized = window.__ipinSupportNodes || new WeakSet();
  window.__ipinSupportNodes = initialized;
  const eu = new Set(['DE','FR','ES','IT','NL','BE','AT','PT','IE']);
  const apac = new Set(['JP','KR','SG','AU','NZ']);

  async function init(root) {
    const nodes = root.querySelectorAll?.('.ipin-support') || [];
    if (!nodes.length) return;
    const fresh = [...nodes].filter(node => !initialized.has(node));
    fresh.forEach(node => initialized.add(node));
    if (!fresh.length) return;

    const controller = new AbortController();
    const timer = setTimeout(() => controller.abort(), 2200);
    try {
      const response = await fetch('https://my.ipin.io/info', {signal: controller.signal});
      if (!response.ok) throw new Error(`HTTP ${response.status}`);
      const info = await response.json();
      const country = String(info.country || '').toUpperCase();
      if (!/^[A-Z]{2}$/.test(country)) throw new Error('invalid country');
      fresh.forEach(node => {
        const target = eu.has(country) ? node.dataset.eu
          : apac.has(country) ? node.dataset.apac : node.dataset.default;
        if (target) node.href = target;
      });
    } catch (_) {
      fresh.forEach(node => node.href = node.dataset.default);
    } finally { clearTimeout(timer); }
  }

  init(document);
  document.addEventListener('shopify:section:load', event => init(event.target));
})();
</script>

Matrice de tests

Avant de publier « Afficher des liens support par IP visiteur dans Shopify », exécutez ces cas avec des réponses simulées ou une sortie VPN contrôlée.

ConditionEntrée / configurationRésultat attendu
T1shopify:section:loadinit × 1
T2country=DEdata-eu
T3country=JPdata-apac
T4CSP blockdata-default

Test automatisé / smoke test

// Playwright example
await page.route('https://my.ipin.io/info', route =>
  route.fulfill({json: {country: 'JP'}})
);
await page.goto('/pages/support');
await expect(page.locator('.ipin-support')).toHaveAttribute('href', /chat/);

Gestion des échecs

Afficher des liens support par IP visiteur dans Shopify: Une erreur doit être visible dans les journaux ou les outils de développement, sans laisser un bloc vide ni casser le paiement.

ÉchecCauseRéponse
listener × 2section re-renderWeakSet
URL emptytheme settingdata-default
connect-srcCSPallow host / fallback
market ≠ IPShopify Marketsselected market wins

Cas pratique

Un usage réaliste de « Afficher des liens support par IP visiteur dans Shopify » : un thème Shopify dirige les visiteurs de l’UE vers un formulaire e-mail et ceux de l’APAC vers le chat, avec la page support universelle en repli.

Notes de mise en production

Afficher des liens support par IP visiteur dans Shopify: Conservez un HTML par défaut complet. La localisation IP ne prouve pas l’identité et ne doit pas servir de contrôle d’autorisation côté client.

Conclusion

« Afficher des liens support par IP visiteur dans Shopify » dispose désormais de son propre parcours d’implémentation, de tests concrets et d’un comportement de repli défini.