> ## 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

> De Build a Box post-purchase-aanbieding: shoppers stellen een eigen box samen uit producten die jij samenstelt, met volumekortingen die oplopen naarmate de box voller raakt.

**Build a Box** is een type post-purchase-aanbieding waarbij de shopper zijn eigen box samenstelt uit een set producten die jij samenstelt, en de hele selectie in één transactie koopt. In plaats van één product te accepteren of te weigeren, kiezen ze wat erin gaat en hoeveel, en een volumekorting kan oplopen naarmate de box voller raakt.

Het staat naast de post-purchase-aanbiedingen met één product en meerdere producten, en werkt samen met de gebruikelijke aanbiedingswidgets, zoals de kop en de timer.

<Note>
  Build a Box biedt meerdere verschillende producten aan. Wil je meer eenheden van één product verkopen tegen gestaffelde prijzen, gebruik dan [Quantity upsells](/nl/aftersell/quantity-upsells).
</Note>

Om er een toe te voegen, open je de funnel, selecteer je **Add offer** en kies je **Build a box**.

<div id="setting-up-the-box">
  ## De box instellen
</div>

<div id="choosing-candidate-products">
  ### Kandidaatproducten kiezen
</div>

De sectie **Product selection** bepaalt uit welke producten een shopper kan kiezen. Deze worden *kandidaten* genoemd.

1. Open de box-aanbieding in de editor van de post-purchase-funnel.
2. Klap **Product selection** uit.
3. Selecteer **Add product** en kies een of meer producten. Producten die al op de lijst staan, worden uitgesloten van de kiezer.
4. Sla op.

Een box ondersteunt maximaal **12 kandidaten**. Sleep het handvat op een rij om te herschikken — dat is de volgorde die shoppers zien. Gebruik het verwijder-icoon om er een te verwijderen; je kunt de laatst overgebleven kandidaat niet verwijderen, omdat een box er minstens één nodig heeft.

<div id="box-size">
  ### Boxgrootte
</div>

**Box size** bepaalt hoeveel items de shopper moet kiezen:

| Instelling                   | Wat het doet                                                                                |
| ---------------------------- | ------------------------------------------------------------------------------------------- |
| **Minimum items**            | De ondergrens. Geteld in items, dus drie van één product telt als drie.                     |
| **Maximum items (optional)** | Laat leeg voor geen limiet. Stel het gelijk aan het minimum voor een box met vaste grootte. |

Bij een box met vaste grootte vermeldt de editor dat shoppers precies dat aantal items moeten kiezen en een teller "0 of N selected" zien.

<Warning>
  Als je kandidaten gezamenlijk het minimum niet kunnen bereiken, toont de editor een kritieke banner met de titel **"This box won't be shown to shoppers"**, met daarin het maximale aantal items dat je producten wél toelaten en het minimum dat je hebt ingesteld. De aanbieding wordt bij het serveren volledig overgeslagen.

  De oplossing die wordt voorgesteld, hangt af van de oorzaak:

  * **Bij een product staat de aantal-kiezer uit**, waardoor het maar één keer kan worden toegevoegd — zet er een weer aan, voeg meer producten toe of verlaag het minimum.
  * **Anders** — verlaag het minimum, voeg meer producten toe of verhoog het maximumaantal van een product.
  * **Het boxmaximum laat helemaal geen items toe** — dan zegt de banner dat in plaats daarvan, en vraagt je om het te verhogen of leeg te laten.
</Warning>

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

<div id="discount-tiers">
  ### Kortingstiers
</div>

De sectie **Box discount** stelt een korting in die meeschaalt met het aantal items in de box. Voeg een tier toe met **Add tier**, en stel vervolgens **Minimum items for tier N** en **Discount for tier N** in.

Hoe het tarief wordt gekozen:

* De shopper krijgt het **hoogste** tarief waarvoor zijn box in aanmerking komt, niet simpelweg de laatst gepasseerde drempel. Als je 3+ items op 30% en 6+ items op 20% configureert, krijgt een shopper met 6 items nog steeds 30%.
* Het tarief wordt geëvalueerd op het **actuele aantal items**, niet op het boxminimum. Een tegel opent op volle prijs en herprijst zich terwijl de box vult, dus het tarief dat een shopper te zien krijgt, is altijd het tarief dat zijn huidige selectie daadwerkelijk verdient.
* Een lege tiertabel is geldig en betekent dat de box tegen de volle prijs wordt verkocht.

Er is geen box-brede kortingslimiet — de tiertabel is het enige dat het tarief bepaalt.

De editor toont waarschuwingen voor tiervormen die onbedoeld lijken. Twee daarvan blokkeren het opslaan; de derde is uitsluitend adviserend:

| Waarschuwing                                                                               | Wanneer die verschijnt                                                                        | Blokkeert opslaan? |
| ------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------- | ------------------ |
| Een tier geeft minder korting dan een kleinere tier en is dus nooit van toepassing         | Een tier met een strikt hoger minimum heeft een lager kortingspercentage dan een tier eronder | Ja                 |
| Een tier ligt onder het boxminimum, dus elke box die een shopper kan kopen verdient hem al | Het minimum van een tier ligt onder de ondergrens van de box                                  | Nee                |
| Twee tiers beginnen allebei bij hetzelfde aantal items                                     | Dubbele tierminima                                                                            | Nee                |

Het boxmaximum moet ook gelijk zijn aan of hoger dan het minimum. Een maximum onder het minimum blokkeert het opslaan.

<div id="per-product-discounts">
  ### Kortingen per product
</div>

Een kandidaat kan zijn eigen korting dragen in plaats van het boxtarief te volgen. Open de kandidaat, ga naar **Discount** en vink **Give this product its own discount** aan.

* De override geldt op de tegel van dat product en in het boxtotaal, in plaats van het tiertarief.
* `0` is een geldige override — daarmee houd je een product op de volle prijs binnen een verder gekorte box.
* Laat de override uit om de boxkorting te volgen.

<div id="editing-several-products-at-once">
  ### Meerdere producten tegelijk bewerken
</div>

**Edit all products** opent een bulkpaneel. Haal het vinkje weg bij elke kandidaat die je buiten de bewerking wilt laten.

Waar de geselecteerde producten verschillen, toont een veld **Mixed** — het bewerken ervan schrijft jouw waarde naar allemaal, en het met rust laten behoudt de eigen waarde van elk product. De override-schakelaar toont een onbepaalde status wanneer slechts sommige producten overrides hebben.

<div id="per-product-settings">
  ## Instellingen per product
</div>

Elke kandidaat heeft zijn eigen paneel, met **Badge**, **Product image badge**, **Image**, **Product details** (inclusief reviewbeoordelingen, met sterkleuren die standaard `#fdcc0d` en `#d1d5db` zijn), **Variant options**, **Box limits**, **Discount** en **Already purchased**.

Het uiterlijk van de tegels stel je niet per kandidaat in. Het komt uit de instelling [**Layout**](#layout) op aanbiedingsniveau, zodat elke tegel in een box dezelfde vorm heeft.

Twee instellingen onder **Box limits** zijn het benoemen waard:

* **Show quantity selector** — staat standaard aan. Zet het uit zodat elke toevoeging precies één stuk toevoegt, zonder aantal-stepper per tegel.
* **Maximum quantity in a box** — laat leeg voor geen limiet, of stel het in op 1 om een variatiebox gevarieerd te houden.

De sectie **Already purchased** bepaalt wat er gebeurt wanneer een shopper dit product al heeft — gekocht in de huidige bestelling of geaccepteerd bij een eerdere stap in de funnel. Er wordt gematcht op product-ID, dus een andere variant van een gekocht product telt ook mee. Kies een van drie behandelingen:

| Optie                          | Wat het doet                                                                                                                                                                                |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Show normally**              | Het product verschijnt in de box zonder speciale behandeling (standaard).                                                                                                                   |
| **Show a "Your choice" badge** | Het product blijft in de box en een pill-badge markeert het als een product dat de shopper al heeft.                                                                                        |
| **Hide the product**           | Het product wordt volledig uit de box verwijderd. Niet beschikbaar voor kandidaten van het type duurste/goedkoopste, die na het lezen van deze instelling uit de bestelling worden bepaald. |

Wanneer **Show a "Your choice" badge** is geselecteerd, verschijnen er drie extra instellingen:

* **Badge text** — de tekst op de badge. Laat leeg om de vertaling van je winkel te gebruiken (ingesteld in **Settings > Translations** onder **Already purchased badge**). Standaard "Your choice".
* **Badge color** — de vulkleur van de badge-pill (hex, standaard `#008060`).
* **Badge text color** — de tekstkleur binnen de badge-pill (hex, standaard `#ffffff`).

De badge is zichtbaar in de voorvertoning van de funnel-editor, zodat je kunt zien hoe hij eruitziet voordat je publiceert.

<div id="layout">
  ## Lay-out
</div>

**Layout**, in de lay-outinstellingen van de box, bepaalt de vorm van de tegels en hoeveel tegels een rij delen:

| Lay-out           | Hoe het eruitziet                                                                        |
| ----------------- | ---------------------------------------------------------------------------------------- |
| **Classic**       | Afbeelding naast de tekst, twee producten per rij.                                       |
| **Compact grid**  | Afbeelding boven de tekst, drie per rij, één per rij op een telefoon.                    |
| **Spotlight**     | Het eerste product staat vooraan op halve breedte, de rest volgt in het compacte raster. |
| **Split columns** | Producten links, met het totaal en de koopknop in een eigen kolom rechts.                |

In dezelfde sectie stel je de padding rond de box in.

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

**Box progress** regelt de vulindicator:

| Instelling               | Opties                                         | Standaard          |
| ------------------------ | ---------------------------------------------- | ------------------ |
| **Position**             | Boven de producten / Boven de koopknop / Beide | Boven de producten |
| **Show progress bar**    | Aan / uit                                      | Aan                |
| **Bar color**            | Hex                                            | `#008060`          |
| **Bar position**         | Boven de tekst / onder de tekst                | Boven de tekst     |
| **Top / bottom padding** | 0–10, in stappen van 2                         | 0                  |

Er is geen "verborgen" positie. Om de voortgangsregel volledig te verwijderen, maak je het tekstveld voor de voortgang leeg.

<div id="progress-text-variables">
  ### Variabelen voor voortgangstekst
</div>

Typ `{` in een van de drie [voortgangsteksten](#progress-wording)-editors om een variabele in te voegen.

| Variabele                                             | Wat het toont                                                                                                                                                                                                                           |
| ----------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `{box-progress}`                                      | De hele standaard voortgangszin. Deze verandert van structuur over de statussen van de box heen, wat geen enkele handgeschreven zin kan — zie [Voortgangsteksten](#progress-wording) om in plaats daarvan elke status te herformuleren. |
| `{items-in-box}`                                      | Hoeveel items er op dit moment in de box zitten.                                                                                                                                                                                        |
| `{items-to-go}`                                       | Het ruwe resterende aantal tot het minimum.                                                                                                                                                                                             |
| `{box-minimum}`                                       | Het boxminimum.                                                                                                                                                                                                                         |
| `{box-maximum}`                                       | Het boxmaximum.                                                                                                                                                                                                                         |
| `{current-discount}`                                  | Het tarief dat op dit moment geldt.                                                                                                                                                                                                     |
| `{next-discount}`                                     | Het tarief dat wordt ontgrendeld door meer items toe te voegen. Leeg bij de hoogste tier.                                                                                                                                               |
| `{items-to-next-discount}`                            | Hoeveel items er nog nodig zijn om die te bereiken. Leeg bij de hoogste tier.                                                                                                                                                           |
| `{subtotal}` / `{total}` / `{discount}` / `{savings}` | Boxprijzen, opgeteld over de hele selectie. Leeg totdat er een prijs bekend is.                                                                                                                                                         |
| `{first-name}`                                        | De voornaam van de shopper.                                                                                                                                                                                                             |
| `{timer}` / `{timer-end}`                             | De afteltimer van de aanbieding.                                                                                                                                                                                                        |

De stapkop-variabelen die beschikbaar zijn bij aanbiedingen met meerdere producten hebben geen box-equivalent en worden hier niet aangeboden.

<div id="progress-wording">
  ### Voortgangsteksten
</div>

**Progress wording** bestaat uit drie rich-text-editors, één voor elke fase van het vullen van de box. Typ `{` in een van deze editors om een [variabele](#progress-text-variables) in te voegen. Maak een veld leeg om de voortgangsregel in die status te verbergen.

| Editor                               | Wanneer de regel wordt getoond                                                                                                                                |
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Before the minimum items reached** | Zolang de box het minimum nog niet heeft bereikt. De shopper kan nog niet afrekenen, dus deze regel is het enige dat uitlegt waarom de knop is uitgeschakeld. |
| **Between minimum and maximum**      | Zodra de box voorbij het minimum is, terwijl een hogere korting of het maximum nog bereikbaar is.                                                             |
| **Maximum items hit**                | Zodra de box alles heeft wat hij kan krijgen: het maximum, of de hoogste korting bij een box zonder maximum.                                                  |

De editor toont alleen de velden die je box daadwerkelijk kan bereiken:

* **Before the minimum items reached** verschijnt alleen wanneer de box een minimum hoger dan nul heeft.
* **Between minimum and maximum** verschijnt alleen wanneer de box een maximum of ten minste één kortingstier heeft. Zonder beide is het passeren van het minimum al de eindstatus.
* **Maximum items hit** verschijnt altijd. Elke box bereikt deze status.

Omdat dit rich-text-editors zijn, kun je de tekst vet maken, een kleur geven en van grootte veranderen, en niet alleen de woorden aanpassen.

Als je de **Language** van de box wijzigt, worden alle teksten die je niet hebt bewerkt opnieuw vertaald. Zodra je een veld bewerkt, blijft het precies zoals je het hebt getypt.

<div id="tile-button-text">
  ## Knoptekst op tegels
</div>

Met de sectie **Tile button text** in het Buttons-paneel kun je de tekst aanpassen op de Add- en Remove-knoppen die op elke kandidaattegel verschijnen, alleen voor deze funnel.

* **Add button text** — het label op een tegel voordat de shopper het product aan zijn box toevoegt. Standaard "Add to box".
* **Remove button text** — het label op een tegel nadat de shopper het product heeft toegevoegd. Standaard "Remove".

Laat een van beide velden leeg om de vertaling van je winkel van de Translations-pagina te gebruiken. Als de winkelvertaling ook leeg is, wordt de Engelse standaard gebruikt.

Het label voor de niet-beschikbare status ("Unavailable") wordt niet beïnvloed door deze instellingen.

Om in plaats van een override per funnel winkelbrede standaarden voor deze labels in te stellen, ga je naar **Translations** in de Aftersell-admin en werk je de vermeldingen **Add to box** en **Remove from box** bij.

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

De sectie **Shipping** bepaalt wat de box rekent voor de bezorging. De box wordt gratis verzonden of voegt verzendkosten toe. Als je kosten rekent, stel je het bedrag in en kies je of het wordt vermenigvuldigd met het aantal artikelen in de box. Zo kan een box met zes artikelen zes keer een tarief per stuk kosten of één vast bedrag.

<div id="language-and-order-tagging">
  ## Taal en ordertagging
</div>

* **Language** bepaalt de taal van de boxteksten en knoppen, en van vertalingen van productdetails.
* **Order tag** voegt een Shopify-tag toe aan elke bestelling waarin de box wordt geaccepteerd. Gebruik deze om fulfillment te routeren of om boxbestellingen apart te bekijken in rapportages.

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

* **Eén gedeelde accepteerknop.** De box heeft één call-to-action in plaats van knoppen per product, omdat Shopify een limiet stelt aan het aantal accepts dat een post-purchase-pagina kan doen.
* **Geen vervangingsaanbiedingen.** Een box kan niet worden gebruikt als vervangings-upsell.
* **De prijsopbouw klapt niet in.** **Show price breakdown**, onder **General settings**, zet deze aan of uit. Wanneer hij aanstaat, is hij altijd uitgeklapt — de aanbieding met meerdere producten plaatst zijn opbouw in plaats daarvan achter een link "Show price breakdown".

<div id="subscription-only-products">
  ### Producten die alleen als abonnement verkrijgbaar zijn
</div>

Producten die zijn geconfigureerd om alleen als abonnement te worden verkocht (`requiresSellingPlan: true` in Shopify — geen optie voor eenmalige aankoop) kunnen niet worden opgenomen in een build-a-box-aanbieding. Elk item in een box wordt als eenmalige aankoop op de bestelling in rekening gebracht, dus Shopify weigert abonnement-only producten bij het serveren. Deze kandidaten worden bij elke echte bestelling stilletjes weggelaten, ook al blijft de voorvertoning van de funnel-editor ze tonen.

De funnel-editor waarschuwt je wanneer deze situatie wordt gedetecteerd:

* **Waarschuwingsbanner** — sommige kandidaten zijn abonnement-only, maar er blijven genoeg niet-abonnementskandidaten over om het boxminimum te bereiken. De banner noemt de betrokken producten bij naam. De aanbieding wordt nog steeds aan shoppers getoond, maar met minder producten dan geconfigureerd.
* **Kritieke banner** — alle kandidaten zijn abonnement-only, of de overgebleven niet-abonnementskandidaten kunnen het boxminimum niet bereiken. De aanbieding wordt voor elke shopper volledig overgeslagen.

**Zie je de waarschuwingsbanner**, dan werkt de box nog steeds — hij serveert alleen minder producten dan je hebt geconfigureerd. Voeg meer kandidaten toe die ook eenmalig kunnen worden gekocht, zodat de box het assortiment draagt dat je bedoelde.

**Zie je de kritieke banner**, dan draait de aanbieding helemaal niet totdat je het oplost. Elk van deze acties lost het op:

* Voeg kandidaten toe die ook eenmalig kunnen worden gekocht.
* Verlaag het boxminimum, zodat de overgebleven kandidaten genoeg zijn om het te bereiken.
* Zet "alleen abonnement" uit bij de betrokken producten in Shopify, als ze ook als eenmalige aankoop verkocht moeten worden.

Je kunt de abonnement-only kandidaten ook volledig uit de box verwijderen. Dat verandert niets voor shoppers — ze worden bij elke echte bestelling al weggelaten — maar het laat de banner verdwijnen en zorgt dat de editorvoorvertoning overeenkomt met wat er daadwerkelijk wordt geserveerd.

Producten waarbij abonnement is **ingeschakeld** (die zowel een eenmalige aankoop als een abonnement aanbieden) worden niet uit een box weggelaten. Ze worden simpelweg als eenmalige aankoop verkocht, net als elk ander boxitem — een box draagt nooit een selling plan.
