> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aftersell.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Build a Box

> L'offre post-achat Build a Box : les acheteurs composent une boîte personnalisée à partir de produits que vous sélectionnez, avec des remises sur volume qui augmentent à mesure que la boîte se remplit.

**Build a Box** est un type d'offre post-achat où l'acheteur compose sa propre boîte à partir d'un ensemble de produits que vous sélectionnez, et achète toute la sélection en une seule transaction. Au lieu d'accepter ou de refuser un seul produit, il choisit ce qui entre dans la boîte et en quelle quantité, et une remise sur volume peut augmenter à mesure que la boîte se remplit.

Elle se place aux côtés des offres post-achat mono-produit et multi-produits, et se compose avec les widgets d'offre habituels, comme le titre et le minuteur.

<Note>
  Build a Box propose plusieurs produits différents. Pour vendre plus d'unités d'un même produit à des prix par palier, utilisez plutôt les [Upsells de quantité](/fr/aftersell/quantity-upsells).
</Note>

Pour en ajouter une, ouvrez le funnel, sélectionnez **Add offer** et choisissez **Build a box**.

<div id="setting-up-the-box">
  ## Configurer la boîte
</div>

<div id="choosing-candidate-products">
  ### Choisir les produits candidats
</div>

La section **Product selection** contrôle les produits parmi lesquels un acheteur peut choisir. On les appelle des *candidats*.

1. Ouvrez l'offre de boîte dans l'éditeur de funnel post-achat.
2. Développez **Product selection**.
3. Sélectionnez **Add product** et choisissez un ou plusieurs produits. Les produits déjà présents dans la liste sont exclus du sélecteur.
4. Enregistrez.

Une boîte prend en charge jusqu'à **12 candidats**. Faites glisser la poignée d'une ligne pour réorganiser — c'est l'ordre que voient les acheteurs. Utilisez l'icône de suppression pour en retirer un ; vous ne pouvez pas retirer le dernier candidat restant, car une boîte a besoin d'au moins un produit.

<div id="box-size">
  ### Taille de la boîte
</div>

**Box size** définit le nombre d'articles que l'acheteur doit choisir :

| Paramètre                      | Ce qu'il fait                                                                                  |
| ------------------------------ | ---------------------------------------------------------------------------------------------- |
| **Minimum items**              | Le plancher. Compté en articles, donc trois exemplaires d'un même produit comptent pour trois. |
| **Maximum items (facultatif)** | Laissez vide pour aucune limite. Définissez-le égal au minimum pour une boîte de taille fixe.  |

Avec une boîte de taille fixe, l'éditeur indique que les acheteurs doivent choisir exactement ce nombre d'articles et verront un compteur « 0 of N selected ».

<Warning>
  Si vos candidats ne peuvent pas collectivement atteindre le minimum, l'éditeur affiche une bannière critique intitulée **"This box won't be shown to shoppers"**, en précisant le nombre maximal d'articles que vos produits permettent réellement et le minimum que vous avez défini. L'offre est entièrement ignorée au moment de la diffusion.

  La correction suggérée dépend de la cause :

  * **Un produit a son sélecteur de quantité désactivé**, il ne peut donc être ajouté qu'une seule fois. Réactivez-en un, ajoutez plus de produits ou abaissez le minimum.
  * **Sinon** : abaissez le minimum, ajoutez plus de produits ou augmentez la quantité maximale d'un produit.
  * **Le maximum de la boîte n'admet aucun article** : la bannière l'indique à la place, et vous demande de l'augmenter ou de le laisser vide.
</Warning>

<div id="discounts">
  ## Remises
</div>

<div id="discount-tiers">
  ### Paliers de remise
</div>

La section **Box discount** définit une remise qui évolue en fonction du nombre d'articles dans la boîte. Ajoutez un palier avec **Add tier**, puis définissez **Minimum items for tier N** et **Discount for tier N**.

Comment le taux est choisi :

* L'acheteur obtient le taux le **plus avantageux** auquel sa boîte est éligible, et non simplement le dernier seuil franchi. Si vous configurez 3+ articles à 30 % et 6+ articles à 20 %, un acheteur avec 6 articles obtient tout de même 30 %.
* Le taux est évalué sur le **nombre d'articles en cours**, et non sur le minimum de la boîte. Une vignette s'ouvre au plein tarif et le prix est recalculé à mesure que la boîte se remplit, de sorte que le taux annoncé à l'acheteur est toujours celui que sa sélection actuelle lui donne réellement.
* Un tableau de paliers vide est valide et signifie que la boîte se vend au plein tarif.

Il n'existe pas de plafond de remise à l'échelle de la boîte : le tableau des paliers est la seule chose qui détermine le taux.

L'éditeur affiche des avertissements pour les formes de paliers qui semblent involontaires. Deux d'entre eux bloquent l'enregistrement ; le troisième est uniquement consultatif :

| Avertissement                                                                                                | Quand il apparaît                                                                                            | Bloque l'enregistrement ? |
| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------- |
| Un palier remise moins qu'un palier plus petit, il ne s'applique donc jamais                                 | Un palier avec un minimum strictement supérieur a un taux de remise inférieur à celui d'un palier en dessous | Oui                       |
| Un palier se situe sous le minimum de la boîte, donc chaque boîte qu'un acheteur peut acheter l'obtient déjà | Le minimum d'un palier est inférieur au plancher de la boîte                                                 | Non                       |
| Deux paliers commencent au même nombre d'articles                                                            | Des minimums de palier en double                                                                             | Non                       |

Le maximum de la boîte doit également être égal ou supérieur au minimum. Définir un maximum inférieur au minimum bloque l'enregistrement.

<div id="per-product-discounts">
  ### Remises par produit
</div>

Un candidat peut porter sa propre remise au lieu de suivre le taux de la boîte. Ouvrez le candidat, allez dans **Discount** et cochez **Give this product its own discount**.

* Le remplacement s'applique sur la vignette de ce produit et dans le total de la boîte, à la place du taux du palier.
* `0` est un remplacement valide — il maintient un produit au plein tarif dans une boîte par ailleurs remisée.
* Laissez le remplacement désactivé pour suivre la remise de la boîte.

<div id="editing-several-products-at-once">
  ### Modifier plusieurs produits à la fois
</div>

**Edit all products** ouvre un panneau de modification groupée. Décochez tout candidat que vous souhaitez exclure de la modification.

Lorsque les produits sélectionnés diffèrent, un champ affiche **Mixed** — le modifier écrit votre valeur sur tous, et le laisser tel quel préserve la valeur propre de chaque produit. Le bouton de remplacement affiche un état indéterminé lorsque seuls certains ont des remplacements.

<div id="per-product-settings">
  ## Paramètres par produit
</div>

Chaque candidat dispose de son propre panneau, couvrant **Badge**, **Product image badge**, **Image**, **Product details** (y compris les notes d'avis, avec des couleurs d'étoiles par défaut de `#fdcc0d` et `#d1d5db`), **Variant options**, **Box limits**, **Discount** et **Already purchased**.

L'apparence des vignettes ne se définit pas par candidat. Elle provient du paramètre [**Layout**](#layout) au niveau de l'offre, de sorte que toutes les vignettes d'une boîte ont la même forme.

Deux paramètres sous **Box limits** méritent d'être soulignés :

* **Show quantity selector** — activé par défaut. Désactivez-le pour que chaque ajout mette exactement une unité dans la boîte, sans sélecteur de quantité par vignette.
* **Maximum quantity in a box** — laissez vide pour aucune limite, ou définissez-le à 1 pour garder une boîte variée.

La section **Already purchased** contrôle ce qui se passe lorsqu'un acheteur possède déjà ce produit — acheté sur la commande en cours ou accepté à une étape antérieure du funnel. La correspondance se fait sur l'ID produit, donc une variante différente d'un produit acheté compte quand même. Choisissez l'un des trois traitements :

| Option                         | Ce qu'elle fait                                                                                                                                                              |
| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Show normally**              | Le produit apparaît dans la boîte sans traitement particulier (par défaut).                                                                                                  |
| **Show a "Your choice" badge** | Le produit reste dans la boîte et un badge en forme de pastille indique que l'acheteur le possède déjà.                                                                      |
| **Hide the product**           | Le produit est entièrement retiré de la boîte. Non disponible pour les candidats les plus/moins chers, qui sont résolus depuis la commande après la lecture de ce paramètre. |

Lorsque **Show a "Your choice" badge** est sélectionné, trois paramètres supplémentaires apparaissent :

* **Badge text** — le libellé du badge. Laissez vide pour utiliser la traduction de votre boutique (définie dans **Settings > Translations** sous **Already purchased badge**). Par défaut : "Your choice".
* **Badge color** — la couleur de remplissage de la pastille du badge (hex, par défaut `#008060`).
* **Badge text color** — la couleur du texte à l'intérieur de la pastille du badge (hex, par défaut `#ffffff`).

Le badge est visible dans l'aperçu de l'éditeur de funnel, vous pouvez donc voir son rendu avant la publication.

<div id="layout">
  ## Mise en page
</div>

**Layout**, dans les paramètres de mise en page de la boîte, définit la forme des vignettes et le nombre de vignettes par rangée :

| Mise en page      | Rendu                                                                                                   |
| ----------------- | ------------------------------------------------------------------------------------------------------- |
| **Classic**       | Image à côté du texte, deux produits par rangée.                                                        |
| **Compact grid**  | Image au-dessus du texte, trois par rangée, un par rangée sur téléphone.                                |
| **Spotlight**     | Le premier produit est mis en avant sur la moitié de la largeur, les autres suivent en grille compacte. |
| **Split columns** | Les produits à gauche, avec le total et le bouton d'achat dans leur propre colonne à droite.            |

La même section définit la marge intérieure autour de la boîte.

<div id="progress">
  ## Progression
</div>

**Box progress** contrôle l'indicateur de remplissage :

| Paramètre                | Options                                                         | Par défaut             |
| ------------------------ | --------------------------------------------------------------- | ---------------------- |
| **Position**             | Au-dessus des produits / au-dessus du bouton d'achat / les deux | Au-dessus des produits |
| **Show progress bar**    | Activé / désactivé                                              | Activé                 |
| **Bar color**            | Hex                                                             | `#008060`              |
| **Bar position**         | Au-dessus du texte / en dessous du texte                        | Au-dessus du texte     |
| **Top / bottom padding** | 0–10, par pas de 2                                              | 0                      |

Il n'existe pas de position « masquée ». Pour supprimer entièrement la ligne de progression, videz le champ de texte de progression.

<div id="progress-text-variables">
  ### Variables du texte de progression
</div>

Tapez `{` dans l'un des trois éditeurs de [formulation de la progression](#progress-wording) pour insérer une variable.

| Variable                                              | Ce qu'elle affiche                                                                                                                                                                                                                                       |
| ----------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `{box-progress}`                                      | La phrase de progression complète par défaut. Sa structure change selon les états de la boîte, ce qu'aucune phrase rédigée à la main ne peut faire. Consultez [Formulation de la progression](#progress-wording) pour reformuler chaque état à la place. |
| `{items-in-box}`                                      | Combien d'articles se trouvent actuellement dans la boîte.                                                                                                                                                                                               |
| `{items-to-go}`                                       | Le nombre brut d'articles restants jusqu'au minimum.                                                                                                                                                                                                     |
| `{box-minimum}`                                       | Le minimum de la boîte.                                                                                                                                                                                                                                  |
| `{box-maximum}`                                       | Le maximum de la boîte.                                                                                                                                                                                                                                  |
| `{current-discount}`                                  | Le taux actuellement en vigueur.                                                                                                                                                                                                                         |
| `{next-discount}`                                     | Le taux débloqué en ajoutant plus d'articles. Vide au palier le plus élevé.                                                                                                                                                                              |
| `{items-to-next-discount}`                            | Combien d'articles supplémentaires sont nécessaires pour l'atteindre. Vide au palier le plus élevé.                                                                                                                                                      |
| `{subtotal}` / `{total}` / `{discount}` / `{savings}` | Les prix de la boîte, additionnés sur l'ensemble de la sélection. Vides tant qu'aucun prix n'est résolu.                                                                                                                                                 |
| `{first-name}`                                        | Le prénom de l'acheteur.                                                                                                                                                                                                                                 |
| `{timer}` / `{timer-end}`                             | Le compte à rebours de l'offre.                                                                                                                                                                                                                          |

Les variables d'en-tête d'étape disponibles sur les offres multi-produits n'ont pas d'équivalent pour la boîte et ne sont pas proposées ici.

<div id="progress-wording">
  ### Formulation de la progression
</div>

**Progress wording** se compose de trois éditeurs de texte enrichi, un pour chaque étape du remplissage de la boîte. Tapez `{` dans l'un d'eux pour insérer une [variable](#progress-text-variables). Videz un champ pour masquer la ligne de progression dans cet état.

| Éditeur                              | Quand sa ligne s'affiche                                                                                                                                                        |
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Before the minimum items reached** | Tant que la boîte n'a pas atteint son minimum. L'acheteur ne peut pas encore finaliser sa commande, cette ligne est donc la seule à expliquer pourquoi le bouton est désactivé. |
| **Between minimum and maximum**      | Une fois la boîte au-delà de son minimum, tant qu'une remise plus avantageuse ou le maximum reste à atteindre.                                                                  |
| **Maximum items hit**                | Une fois que la boîte a tout ce qu'elle peut obtenir : le maximum, ou la remise la plus avantageuse pour une boîte sans maximum.                                                |

L'éditeur n'affiche que les champs que votre boîte peut réellement atteindre :

* **Before the minimum items reached** n'apparaît que si la boîte a un minimum supérieur à zéro.
* **Between minimum and maximum** n'apparaît que si la boîte a un maximum ou au moins un palier de remise. Sans l'un ni l'autre, dépasser le minimum constitue déjà l'état final.
* **Maximum items hit** apparaît toujours. Toutes les boîtes l'atteignent.

Comme il s'agit d'éditeurs de texte enrichi, vous pouvez mettre la formulation en gras, la colorer et la redimensionner, et pas seulement en changer les mots.

Changer la **Language** de la boîte retraduit toute formulation que vous n'avez pas modifiée. Une fois que vous modifiez un champ, il est conservé exactement tel que vous l'avez saisi.

<div id="tile-button-text">
  ## Texte des boutons de vignette
</div>

La section **Tile button text** du panneau Buttons vous permet de personnaliser le libellé des boutons Add et Remove qui apparaissent sur chaque vignette de candidat, pour ce funnel uniquement.

* **Add button text** — le libellé affiché sur une vignette avant que l'acheteur n'ajoute le produit à sa boîte. Par défaut : "Add to box".
* **Remove button text** — le libellé affiché sur une vignette après que l'acheteur a ajouté le produit. Par défaut : "Remove".

Laissez l'un ou l'autre champ vide pour utiliser la traduction de votre boutique depuis la page Translations. Si la traduction de la boutique est également vide, la valeur anglaise par défaut est utilisée.

Le libellé de l'état indisponible ("Unavailable") n'est pas affecté par ces paramètres.

Pour définir des libellés par défaut à l'échelle de la boutique au lieu d'un remplacement par funnel, accédez à **Translations** dans l'interface d'administration Aftersell et mettez à jour les entrées **Add to box** et **Remove from box**.

<div id="shipping">
  ## Livraison
</div>

La section **Shipping** définit ce que la boîte facture pour la livraison. La boîte est soit livrée gratuitement, soit assortie de frais de livraison. Si vous facturez, vous définissez le montant et choisissez de le multiplier ou non par le nombre d'articles dans la boîte : une boîte de six articles peut ainsi coûter six fois un tarif unitaire ou un forfait unique.

<div id="language-and-order-tagging">
  ## Langue et étiquetage des commandes
</div>

* **Language** définit la langue utilisée pour les textes et les boutons de la boîte, ainsi que pour les traductions des détails produit.
* **Order tag** applique une étiquette Shopify à chaque commande qui accepte la boîte. Utilisez-la pour orienter l'expédition ou pour isoler les commandes de boîtes dans les rapports.

<div id="limitations">
  ## Limitations
</div>

* **Un seul bouton d'acceptation partagé.** La boîte a un unique appel à l'action plutôt que des boutons par produit, car Shopify limite le nombre d'acceptations qu'une page post-achat peut effectuer.
* **Pas d'offres de remplacement.** Une boîte ne peut pas être utilisée comme upsell de remplacement.
* **Le détail des prix ne se replie pas.** **Show price breakdown**, sous **General settings**, l'active ou le désactive. Lorsqu'il est activé, il est toujours déplié. L'offre multi-produits place au contraire son détail derrière un lien « Show price breakdown ».

<div id="subscription-only-products">
  ### Produits en abonnement uniquement
</div>

Les produits configurés pour se vendre uniquement en abonnement (`requiresSellingPlan: true` dans Shopify — aucune option d'achat unique) ne peuvent pas être inclus dans une offre build-a-box. Chaque article d'une boîte est facturé comme un achat unique sur la commande, donc Shopify rejette les produits en abonnement uniquement au moment de la diffusion. Ces candidats sont silencieusement écartés sur chaque commande réelle, même si l'aperçu de l'éditeur de funnel continue de les afficher.

L'éditeur de funnel vous avertit lorsque cette situation est détectée :

* **Bannière d'avertissement** — certains candidats sont en abonnement uniquement, mais suffisamment de candidats hors abonnement subsistent pour atteindre le minimum de la boîte. La bannière liste les produits concernés par leur nom. L'offre s'affiche toujours pour les acheteurs, mais avec moins de produits que configuré.
* **Bannière critique** — tous les candidats sont en abonnement uniquement, ou les candidats hors abonnement restants ne peuvent pas atteindre le minimum de la boîte. L'offre est entièrement ignorée pour chaque acheteur.

**Si vous voyez la bannière d'avertissement**, la boîte fonctionne toujours — elle sert simplement moins de produits que ce que vous avez configuré. Ajoutez plus de candidats pouvant également être achetés en une fois, afin que la boîte offre la gamme prévue.

**Si vous voyez la bannière critique**, l'offre ne fonctionnera pas du tout tant que vous ne l'aurez pas corrigée. N'importe laquelle de ces actions la résout :

* Ajoutez des candidats pouvant également être achetés en une fois.
* Abaissez le minimum de la boîte, afin que les candidats restants suffisent à l'atteindre.
* Désactivez « abonnement uniquement » sur les produits concernés dans Shopify, s'ils doivent également se vendre en achat unique.

Vous pouvez aussi retirer entièrement les candidats en abonnement uniquement de la boîte. Cela ne change rien pour les acheteurs — ils sont déjà écartés sur chaque commande réelle — mais cela fait disparaître la bannière et fait correspondre l'aperçu de l'éditeur à ce qui est réellement servi.

Les produits avec abonnement **activé** (ceux offrant à la fois un achat unique et un abonnement) ne sont pas écartés d'une boîte. Ils sont simplement vendus en achat unique, comme tout autre article de la boîte — une boîte ne porte jamais de plan de vente.
