Intégration e-commerce

Vous vendez aussi en ligne ? La fidélité suit le client, en boutique comme sur le web.

Habitu n'est pas réservé au comptoir. Affichez la carte sur votre page de confirmation de commande, et créditez un tampon à chaque achat en ligne, automatiquement. Le même compteur, que le client achète en magasin ou depuis son canapé.

1. Carte sur votre page « merci »

Le client qui vient d'acheter ajoute sa carte au Wallet en un tap, depuis la page de confirmation.

2. Votre clé API

Générée en un clic dans vos paramètres. Elle autorise votre boutique à créditer des tampons.

3. Tampon automatique

À chaque commande payée, votre boutique appelle Habitu : +1 tampon, le client est notifié.

Étape 1, capter le client en ligne

La carte sur votre page de remerciement

Sur la page « Merci pour votre commande », ajoutez un encart qui invite le client à prendre sa carte de fidélité. Utilisez le même email qu'à la commande : c'est lui qui reliera ses achats en ligne à sa carte.

HTML, encart page de confirmation

<div style="margin:24px 0;padding:20px;border:1px solid #eee;border-radius:12px;font-family:system-ui,sans-serif;text-align:center">
  <p style="font-weight:600;margin:0 0 6px">Gagnez des récompenses sur vos commandes</p>
  <p style="color:#555;font-size:14px;margin:0 0 14px">
    Ajoutez votre carte de fidélité (Apple Wallet / Google Wallet), chaque achat compte.
  </p>
  <a href="https://habitu.fr/c/VOTRE-SLUG" target="_blank" rel="noopener"
    style="display:inline-block;padding:12px 22px;background:#C2410C;color:#fff;border-radius:10px;text-decoration:none;font-weight:500">
    Ajouter ma carte de fidélité
  </a>
</div>

Remplacez VOTRE-SLUG par votre identifiant Habitu (visible dans votre tableau de bord). Besoin d'un QR plutôt qu'un bouton ? Voyez les 3 options d'intégration.

Étape 2, autoriser votre boutique

Récupérez votre clé API

Dans Habitu, allez dans Paramètres → Boutique en ligne et cliquez sur « Générer ma clé API ». Vous obtenez une clé du type hbt_live_…. Gardez-la secrète : elle autorise l'ajout de tampons à vos clients.

Ouvrir mes paramètres

Étape 3, créditer à chaque commande

Un appel API par commande payée

Quand une commande est payée sur votre boutique, appelez l'API Habitu avec l'email du client. Habitu retrouve sa carte et ajoute un tampon (ou des points selon votre réglage). Le client reçoit la mise à jour sur son téléphone.

POST https://habitu.fr/api/v1/orders/stamp

curl -X POST https://habitu.fr/api/v1/orders/stamp \
  -H "Authorization: Bearer hbt_live_VOTRE_CLE" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "marie@email.fr",
    "amount": 24.90,
    "orderId": "CMD-10245"
  }'

Paramètres

  • email ou phone, identifie le client (au moins un)
  • amount, montant payé en € (mode Points)
  • units, nombre de tampons à ajouter (optionnel)
  • items, détail des articles (optionnel) pour les bonus par produit
  • orderId, votre référence commande (optionnel)

Réponses

  • 200 : ok:true, tampon ajouté, solde renvoyé (balance)
  • 200 duplicate:true, commande déjà créditée (orderId connu), pas de double tampon
  • 404 no_card, pas encore de carte ; la réponse contient signupUrl à afficher au client
  • 400 amount_required, mode Points sans amount ni units
  • 401 unauthorized, clé API absente ou invalide
  • 403 merchant_inactive, abonnement résilié
  • 429 rate_limited, trop d'appels, réessayez (max ~120/min)

Sans toucher au code

Via Zapier ou Make

Pas développeur ? Reliez votre boutique à Habitu en glisser-déposer :

  1. Déclencheur : « Nouvelle commande payée » (Shopify, WooCommerce, Stripe…).
  2. Action : module « Webhooks → POST » vers https://habitu.fr/api/v1/orders/stamp.
  3. Ajoutez l'en-tête Authorization: Bearer hbt_live_… et le corps JSON avec l'email de la commande.

Bon à savoir

Les cas particuliers

Le client n'a pas encore de carte

L'API répond 404 no_card avec un champ signupUrl. Affichez ce lien sur votre page de confirmation (voir Étape 1) pour qu'il crée sa carte. Une fois inscrit, ses prochaines commandes seront créditées automatiquement.

Commande remboursée ou annulée

Déclenchez l'appel uniquement sur l'évènement « commande payée », jamais sur un panier ou une commande en attente. À noter : un remboursement ne retire pas automatiquement le tampon déjà accordé, n'automatisez donc le crédit que sur un paiement réellement encaissé.

Tampons ou points ?

En mode Tampons, une commande = 1 tampon (utilisez units pour en ajouter plusieurs). En mode Points, le montant amount est converti selon votre réglage points/€ (modifiable dans Personnaliser, avec le seuil de récompense), c'est le mode conseillé pour l'e-commerce, où chaque euro compte.

Webhook renvoyé deux fois

Shopify, WooCommerce et Zapier peuvent réémettre un webhook. Envoyez toujours votre orderId : Habitu reconnaît une commande déjà créditée et ne double pas le tampon (réponse duplicate:true).

Plug & play

Recettes prêtes à coller

Copiez le bloc de votre plateforme, remplacez hbt_live_VOTRE_CLE par votre clé API, et chaque commande payée crédite un tampon automatiquement.

WooCommerce, functions.php de votre thème

PHP, WooCommerce

add_action('woocommerce_payment_complete', function ($order_id) {
  $order = wc_get_order($order_id);
  wp_remote_post('https://habitu.fr/api/v1/orders/stamp', [
    'headers' => [
      'Authorization' => 'Bearer hbt_live_VOTRE_CLE',
      'Content-Type'  => 'application/json',
    ],
    'body' => wp_json_encode([
      'email'   => $order->get_billing_email(),
      'amount'  => (float) $order->get_total(),
      'orderId' => (string) $order_id,
    ]),
    'timeout' => 10,
  ]);
});

PrestaShop, hook d'un module, sur paiement confirmé

PHP, PrestaShop (hookActionPaymentConfirmation)

public function hookActionPaymentConfirmation($params)
{
  $order = new Order((int) $params['id_order']);
  $customer = new Customer((int) $order->id_customer);
  $ch = curl_init('https://habitu.fr/api/v1/orders/stamp');
  curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
      'Authorization: Bearer hbt_live_VOTRE_CLE',
      'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
      'email'   => $customer->email,
      'amount'  => (float) $order->total_paid,
      'orderId' => (string) $order->id,
    ]),
  ]);
  curl_exec($ch);
  curl_close($ch);
}

Magento 2, observer sur l'évènement sales_order_payment_pay

PHP, Magento 2 (Observer)

public function execute(\Magento\Framework\Event\Observer $observer)
{
  $order = $observer->getEvent()->getPayment()->getOrder();
  $client = new \GuzzleHttp\Client();
  $client->post('https://habitu.fr/api/v1/orders/stamp', [
    'headers' => [
      'Authorization' => 'Bearer hbt_live_VOTRE_CLE',
      'Content-Type'  => 'application/json',
    ],
    'json' => [
      'email'   => $order->getCustomerEmail(),
      'amount'  => (float) $order->getGrandTotal(),
      'orderId' => (string) $order->getIncrementId(),
    ],
  ]);
}

Shopify, sans code, via Shopify Flow

  1. App Shopify FlowCreate workflow → déclencheur « Order paid ».
  2. Action « Send HTTP request » → Méthode POST, URL https://habitu.fr/api/v1/orders/stamp.
  3. Header Authorization: Bearer hbt_live_VOTRE_CLE, body JSON : { "email": "{{order.email}}", "amount": {{order.totalPriceSet.shopMoney.amount}}, "orderId": "{{order.id}}" }.

Pas de Shopify Flow ? Le même appel se fait en 2 min via Zapier (déclencheur « New Paid Order » → Webhook POST).

Compatible avec votre plateforme

Shopify

Settings → Notifications → page « Order confirmed », ou un flow Shopify Flow / Zapier sur l'évènement « Order paid ».

WooCommerce

Hook woocommerce_payment_complete dans functions.php, ou le module WooCommerce de Zapier.

Wix / Squarespace

Automations natives sur « commande payée » → webhook vers l'API Habitu, ou via Make.

Site sur-mesure

Appelez l'endpoint depuis votre back-end au moment où le paiement est confirmé. Un seul POST.

Une carte, en boutique et en ligne

Vos clients cumulent leurs achats où qu'ils achètent. Essai gratuit 30 jours, configuration en quelques minutes.

Démarrer l'essai gratuit