Choisissez la méthode qui correspond à votre stack technique. Plugin Shopify, plugin WooCommerce, API REST ou Widget JS — c'est prêt en quelques minutes.
Créez un compte et copiez votre clé depuis le dashboard
Créez votre compte gratuitement, puis allez dans Dashboard → Clés API pour créer et copier votre clé.
Créer un compte gratuit →Appelez l'API quand une commande est expédiée
// Installer : npm install node-fetch const response = await fetch('https://unboxproof.io/api/b2b/orders', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-API-Key': 'votre_clé_api' }, body: JSON.stringify({ order_id: 'CMD-2025-001', // Votre référence commande product_name: 'Nike Air Max 90', // Nom du produit customer_email: 'client@email.com', // Email du client customer_name: 'Jean Dupont', // Optionnel amount: 149.99 // Montant en € }) }); const data = await response.json(); console.log(data.verification_code); // ex: "A7X2" console.log(data.unboxing_url); // Lien envoyé au client
$response = file_get_contents('https://unboxproof.io/api/b2b/orders', false, stream_context_create(['http' => [ 'method' => 'POST', 'header' => "Content-Type: application/json\r\nX-API-Key: votre_clé_api", 'content' => json_encode([ 'order_id' => 'CMD-2025-001', 'product_name' => 'Nike Air Max 90', 'customer_email' => 'client@email.com', 'amount' => 149.99 ]) ]]) ); $data = json_decode($response, true);
Vérifiez si le client a soumis son unboxing
const res = await fetch(`https://unboxproof.io/api/b2b/orders/${orderId}`, { headers: { 'X-API-Key': 'votre_clé_api' } }); const order = await res.json(); // order.status : 'shipped' | 'unboxing_submitted' | 'completed' | 'disputed' // order.ai_recommendation : 'approve' | 'review' | 'dispute' // order.ai_confidence : 0.0 – 1.0
Récupérez l'ensemble de vos commandes avec filtres
// Tous les statuts disponibles const res = await fetch( 'https://unboxproof.io/api/b2b/orders?status=unboxing_submitted&limit=50', { headers: { 'X-API-Key': 'votre_clé_api' } } ); const { orders, total } = await res.json();
Une seule ligne dans votre <head> ou avant </body>
<!-- Collez ce script dans votre page de confirmation de commande --> <script src="https://unboxproof.io/widget.js"></script> <script> UnboxProof.init({ apiKey: 'votre_clé_api' }); </script>
Ajoutez un attribut data sur le conteneur de votre commande
data-unboxproof-order et y ajoute le bouton d'unboxing.<!-- Page de confirmation ou email de commande --> <div data-unboxproof-order="CMD-2025-001"> <h3>Votre commande #CMD-2025-001</h3> <!-- Le bouton UnboxProof apparaît automatiquement ici --> </div>
Le widget ajoute un bouton "Faire mon unboxing sécurisé" et un badge de confiance. Le client clique, voit son code unique, et accède à la page d'unboxing.
Ce que voit votre client sur votre site
Shopify Admin → Boutique en ligne → Thèmes → Modifier le code
Dans votre tableau de bord Shopify, allez dans Boutique en ligne → Thèmes, cliquez sur Actions → Modifier le code de votre thème actif.
Modifiez le fichier checkout.liquid ou thank-you page
{%- comment -%} Collez dans Additional scripts ou checkout.liquid {%- endcomment -%} {% if first_time_accessed %} <div data-unboxproof-order="{{ order.order_number }}"></div> <script src="https://unboxproof.io/widget.js"></script> <script>UnboxProof.init({ apiKey: 'votre_clé_api' });</script> {% endif %}
Automatisez la création à chaque expédition
Dans Shopify Admin → Paramètres → Notifications → Webhooks, ajoutez un webhook sur l'événement orders/fulfilled pointant vers votre serveur. Votre serveur appelle ensuite l'API UnboxProof.
// Votre endpoint qui reçoit le webhook Shopify app.post('/shopify/webhook/order-fulfilled', async (req, res) => { const order = req.body; await fetch('https://unboxproof.io/api/b2b/orders', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-API-Key': process.env.UNBOXPROOF_KEY }, body: JSON.stringify({ order_id: String(order.id), product_name: order.line_items[0]?.name, customer_email: order.email, customer_name: order.shipping_address?.name, amount: parseFloat(order.total_price) }) }); res.sendStatus(200); });
Ou créez un mini-plugin dédié
unboxproof-integration.php.// Déclenché quand le statut passe à "Expédié" add_action('woocommerce_order_status_shipped', 'send_to_unboxproof'); function send_to_unboxproof($order_id) { $order = wc_get_order($order_id); $items = $order->get_items(); $product = reset($items); $payload = json_encode([ 'order_id' => (string)$order_id, 'product_name' => $product->get_name(), 'customer_email' => $order->get_billing_email(), 'customer_name' => $order->get_billing_first_name() . ' ' . $order->get_billing_last_name(), 'amount' => (float)$order->get_total() ]); wp_remote_post('https://unboxproof.io/api/b2b/orders', [ 'headers' => [ 'Content-Type' => 'application/json', 'X-API-Key' => 'votre_clé_api' ], 'body' => $payload, 'method' => 'POST' ]); } // Afficher le bouton sur la page de confirmation add_action('woocommerce_thankyou', 'unboxproof_thankyou_widget'); function unboxproof_thankyou_widget($order_id) { echo '<div data-unboxproof-order="' . esc_attr($order_id) . '"></div>'; echo '<script src="https://unboxproof.io/widget.js"></script>'; echo '<script>UnboxProof.init({apiKey:"votre_clé_api"});</script>'; }
Ce statut n'est pas natif — utilisez un plugin si nécessaire
Si votre WooCommerce n'a pas de statut "Expédié", utilisez le plugin gratuit WooCommerce Order Status Manager ou remplacez woocommerce_order_status_shipped par woocommerce_order_status_completed.
UnboxProof enverra un POST à chaque événement important
Depuis votre dashboard → Paramètres, entrez l'URL que vous souhaitez recevoir et testez-la directement.
Déclenché quand un client soumet son unboxing. Contient l'ID commande, la décision IA et le score de confiance.
Commande validée automatiquement ou manuellement. Signal pour libérer le stock ou envoyer une facture.
L'IA a détecté un problème ou le client a signalé une non-conformité. Action requise de votre part.
Le client n'a pas soumis d'unboxing dans les 48h. La commande est validée automatiquement.
Exemple de handler côté serveur
app.post('/api/unboxproof-webhook', express.json(), (req, res) => { const { event, order_id, ai_recommendation, ai_confidence } = req.body; switch (event) { case 'unboxing.submitted': if (ai_recommendation === 'approve' && ai_confidence > 0.85) { markOrderComplete(order_id); // Auto-validation } break; case 'order.disputed': notifySupport(order_id); // Alerter l'équipe SAV break; case 'unboxing.expired': finalizeOrder(order_id); // Clôturer automatiquement break; } res.sendStatus(200); // Toujours répondre 200 });
Structure JSON envoyée par UnboxProof
{
"event": "unboxing.submitted",
"order_id": "CMD-2025-001",
"product_name": "Nike Air Max 90",
"customer_email": "client@email.com",
"status": "unboxing_submitted",
"ai_recommendation": "approve", // approve | review | dispute
"ai_confidence": 0.92,
"timestamp": "2025-03-11T14:30:00Z"
}
Créez votre compte gratuit, récupérez votre clé API et testez en quelques minutes.
Créer un compte gratuit →