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

# Strategieën bouwen

> Maak, configureer en beheer strategieën vanuit het Aftersell-dashboard — geen code nodig.

<div id="overview">
  ## Overzicht
</div>

Het Aftersell-dashboard biedt een visuele interface om strategieën te bouwen en te beheren. Je kunt strategieën maken, targetingregels definiëren met triggers, producten toewijzen om aan te bevelen en catch all-gedrag configureren — allemaal zonder code te schrijven.

Deze handleiding doorloopt het complete proces van het maken van een strategie in de UI.

***

<div id="navigating-to-strategies">
  ## Naar strategieën navigeren
</div>

1. Log in op Aftersell.
2. Klik op **Strategies** in de navigatie van de linkerzijbalk.
3. Je ziet een lijst met je bestaande strategieën, of een lege staat die je vraagt je eerste strategie te maken.

***

<div id="creating-a-new-strategy">
  ## Een nieuwe strategie maken
</div>

1. Klik op **Add Strategy**.
2. Je komt in de strategie-editor waar je regels kunt toevoegen.

<Tip>
  Klik op het **potloodpictogram** linksboven in de strategie-editor om je strategie een beschrijvende naam te geven. Een duidelijke naam maakt het later gemakkelijker om strategieën in het dashboard te herkennen.
</Tip>

***

<div id="adding-rules">
  ## Regels toevoegen
</div>

Elke strategie bevat een of meer **regels**. Een regel bestaat uit:

* **Triggers** — het "wanneer" — criteria waaraan moet worden voldaan om de regel te laten matchen.
* **Acties** — het "dan" — de ervaring die wordt teruggegeven wanneer de regel matcht.

<div id="defining-triggers">
  ### Triggers definiëren
</div>

Triggers bepalen wanneer een regel afgaat. Je kunt tot vijf triggers in één regel combineren. Eén **AND**/**OR**-schakelaar geldt voor de hele conditieset: met **AND** moet elke trigger matchen; met **OR** is één matchende trigger genoeg. Beschikbare triggertypen zijn onder andere:

<div id="product-triggers">
  #### Producttriggers
</div>

Target op basis van de producten in de context (de winkelwagen van de shopper, de zojuist afgeronde bestelling of het product dat wordt bekeken):

* **Specific product(s)** — matcht specifieke Shopify-producten op ID
* **Collection** — matcht producten die tot specifieke collecties behoren
* **Tag(s)** — matcht producten met specifieke tags (bijv. "sale", "summer")
* **Title** — matcht de producttitel
* **Vendor** — matcht de naam van de leverancier/het merk
* **Type** — matcht het producttypeveld (bijv. "Apparel", "Electronics")
* **Handle** — matcht de URL-slug van het product
* **Metafield** — matcht op aangepaste metafield namespace/key/value-paren
* **Selling plan** — matcht "subscription"- of "one-time"-producten. Wordt alleen geëvalueerd wanneer de verzoekcontext een verkoopplan voor het product aanlevert — de checkout- en post-purchase-upsell-oppervlakken van Aftersell sturen dit niet mee, dus de trigger matcht daar niet, tenzij een aangepaste integratie het expliciet aanlevert

<div id="customer-triggers">
  #### Klanttriggers
</div>

Target op basis van wie de shopper is:

* **Customer tag** — bijv. "VIP", "loyalty-gold"
* **Country code** — factuurland
* **Province code** — factuurprovincie/-staat
* **Locale** — locale van de klant (bijv. "en-US")
* **Accepts marketing** — status van marketingtoestemming
* **Order count** — aantal eerdere bestellingen
* **Total spent** — totale uitgaven over de hele levensduur

<div id="cart-triggers">
  #### Winkelwagentriggers
</div>

Target op basis van de algehele staat van de winkelwagen:

* **Cart subtotal** — bijv. subtotaal groter dan \$50
* **Item count** — totale hoeveelheid artikelen in de winkelwagen
* **Line count** — aantal afzonderlijke regelitems
* **Cart attribute** — aangepaste winkelwagenattributen ingesteld via de cart-API van Shopify
* **Cart note** — het notitieveld van de winkelwagen

<div id="location-triggers">
  #### Locatietriggers
</div>

Target op basis van waar de shopper naartoe laat verzenden, en de valuta van de winkel:

* **Shipping country** — land van de verzendbestemming
* **Shipping province** — provincie/staat van de verzendbestemming
* **Shipping method** — geselecteerde verzendmethode
* **Store currency** — de actieve valutacode van de winkel

<div id="marketing-triggers">
  #### Marketingtriggers
</div>

Target op basis van de pagina-URL waarop de shopper is binnengekomen:

* **URL** — matcht een substring van de landings-URL, zodat je een specifieke campagne of specifiek kanaal kunt targeten door te matchen op een parameter in de URL (bijv. `utm_source=newsletter`)

<div id="time-triggers">
  #### Tijdtriggers
</div>

Target op basis van wanneer het verzoek wordt geëvalueerd, in winkeltijd:

* **Day of week** — de huidige dag
* **Hour of day** — het huidige uur

<div id="dynamic-triggers">
  #### Dynamische triggers
</div>

* **Always match** — een trigger zonder voorwaarde die altijd afgaat. Gebruik hem om een regel bij elk verzoek te laten draaien (dit is iets anders dan de [Catch all](#configuring-a-catch-all) op strategieniveau, die alleen afgaat wanneer geen enkele andere regel matcht).

<Note>
  Niet elke trigger wordt op elk oppervlak gevuld. Checkout stuurt bijvoorbeeld alleen product- en winkelwagencontext — klant-, locatie- en marketingtriggers matchen daar niet. Zie de handleidingen [Strategieën implementeren](/nl/aftersell/implementing_strategies_post_purchase_upsells) voor wat elk oppervlak meestuurt.
</Note>

<div id="operators">
  #### Operatoren
</div>

Elke trigger gebruikt een **operator** om te bepalen hoe de waarde wordt gematcht. Welke operatoren beschikbaar zijn hangt af van het triggertype.

| Operator                     | Beschrijving                                                                                                                                            |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Equals**                   | Matcht wanneer het veld exact de waarde is die je opgeeft — bijv. vendor equals "Nike".                                                                 |
| **Does not equal**           | Matcht wanneer het veld iets anders is dan de waarde die je opgeeft — handig om een specifiek producttype of een specifieke leverancier uit te sluiten. |
| **Contains any**             | Matcht wanneer een veld met meerdere waarden ten minste één waarde uit je lijst bevat — bijv. een product zit in een van meerdere collecties.           |
| **Does not contain any**     | Matcht wanneer een veld met meerdere waarden geen enkele waarde uit je lijst bevat — bijv. producten met de tag "final-sale" uitsluiten.                |
| **Contains all**             | Matcht wanneer een veld met meerdere waarden elke waarde uit je lijst bevat — bijv. een product moet zowel de tag "sale" als "summer" hebben.           |
| **Does not contain all**     | Matcht wanneer een veld met meerdere waarden ten minste één van de waarden uit je lijst mist.                                                           |
| **Contains**                 | Matcht wanneer een tekstveld je waarde als substring bevat — bijv. titel bevat "Gift".                                                                  |
| **Does not contain**         | Matcht wanneer een tekstveld je waarde niet bevat.                                                                                                      |
| **Greater than**             | Matcht wanneer een numeriek veld je waarde overschrijdt — bijv. winkelwagensubtotaal is groter dan \$75.                                                |
| **Less than**                | Matcht wanneer een numeriek veld onder je waarde ligt — bijv. aantal bestellingen is minder dan 2 (nieuwe kopers).                                      |
| **Greater than or equal to** | Matcht wanneer een numeriek veld je waarde bereikt of overschrijdt — bijv. totale uitgaven zijn minimaal \$500.                                         |
| **Less than or equal to**    | Matcht wanneer een numeriek veld op of onder je waarde ligt — bijv. aantal artikelen in de winkelwagen is maximaal 3.                                   |

Niet elke operator is beschikbaar voor elke trigger:

* **Lijstoperatoren** (**Contains any / all** en hun negaties) gelden voor velden met meerdere waarden, zoals tags, collecties, klanttags en specifieke producten.
* **Tekstoperatoren** (**Equals**, **Contains** en hun negaties) gelden voor tekstvelden met één waarde, zoals titel, leverancier, handle, locale, land en URL.
* **Numerieke operatoren** gelden voor velden zoals winkelwagensubtotaal, aantal artikelen, aantal regels, aantal bestellingen, totale uitgaven en uur van de dag. Numerieke operatoren hebben geen "does not"-varianten.
* Een paar velden ondersteunen alleen **Equals** en **Does not equal** — selling plan, day of week en accepts marketing.

<div id="defining-actions">
  ### Acties definiëren
</div>

Acties creëren de ervaring die je aan de klant wilt leveren. Hier bepaal je welke producten worden getoond, hoe ze worden getoond en welke extra data ernaast wordt meegegeven. Een regel kan meerdere acties samen geconfigureerd hebben om de volledige ervaring op te bouwen.

Per regel dragen alle geconfigureerde acties bij aan één gecombineerde pool. Zo geeft een regel met een actie voor specifieke producten, een collectieactie en een op tags gebaseerde actie producten uit alle drie de bronnen samen terug. Als een product met meerdere bronnen matcht, wordt het gededupliceerd.

<div id="product-actions">
  #### Productacties
</div>

Dezelfde productattributen die aan de triggerkant beschikbaar zijn, zijn ook beschikbaar bij het definiëren van acties. Je kunt producten teruggeven op basis van:

* **Specifieke producten** — kies zelf individuele producten uit je Shopify-catalogus.
* **Collectie** — geef alle producten uit een specifieke collectie terug.
* **Productattributen** — geef producten terug die voldoen aan criteria zoals tags, leverancier, producttype of metafields — dezelfde attribuuttypen als in triggers.

<div id="dynamic-actions">
  #### Dynamische acties
</div>

Dynamische acties veranderen wat er wordt teruggegeven op basis van realtime signalen in plaats van een vaste productlijst. Beschikbare dynamische actietypen zijn onder andere:

* **Most popular** — de best presterende producten van je winkel op verkoopvolume, winkelbreed of beperkt tot een collectie.
* **Recently purchased** — producten die recent in de winkel zijn gekocht.
* **Inherit from when** — hergebruik de eigen triggers van de regel (het "wanneer") als productselector, zodat de teruggegeven producten voldoen aan dezelfde criteria als waarop de regel afging.
* **AI Recommendations** — gepersonaliseerde suggesties gegenereerd door het aanbevelingsmodel van Aftersell.

<div id="filtering-actions">
  #### Filteracties
</div>

Zodra de productpool is samengesteld, kun je configureren hoeveel producten worden teruggegeven en in welke volgorde:

* **Sort** — bepaal welke producten worden geselecteerd:
  * **Random** — een willekeurige selectie.
  * **Price: high → low** — de duurste producten worden eerst teruggegeven.
  * **Price: low → high** — de goedkoopste producten worden eerst teruggegeven.
* **Amount/Limit** — stel het maximale aantal terug te geven producten in.

<Info>
  Eerst wordt Sort toegepast, daarna Amount/Limit. Staat je sortering bijvoorbeeld op **Random**, dan wordt de volledige productpool gerandomiseerd voordat de limiet wordt toegepast — je krijgt dus altijd een willekeurige selectie, niet dezelfde producten in een willekeurige volgorde.
</Info>

<div id="key-value-actions">
  #### Key-value-acties
</div>

Optioneel kun je key-value-paren aan een regel koppelen. Wanneer de regel matcht, worden deze teruggegeven in `meta.data` in het API-antwoord, naast de productresultaten. Veelvoorkomende toepassingen zijn:

* Tekst voor promotiebanners
* Campagnelabels voor analytics

<Note>
  Als meerdere regels matchen en dezelfde key uitzenden, wint de waarde van de eerste matchende regel — latere regels kunnen die niet overschrijven.
</Note>

***

<div id="rule-priority-and-evaluation-order">
  ## Regelprioriteit en evaluatievolgorde
</div>

Regels binnen een strategie worden geëvalueerd in hiërarchische, opeenvolgende stappen. Stap 1 wordt eerst geëvalueerd, enzovoort. Je kunt regels herschikken door ze te slepen en neer te zetten in de strategie-editor. De evaluatie-engine:

1. Evalueert de triggers van elke regel op basis van de aangeleverde context.
2. Verzamelt producten van alle matchende regels.
3. Dedupliceert en beperkt het resultaat tot het geconfigureerde maximum (standaard: 20 producten).

***

<div id="configuring-a-catch-all">
  ## Een Catch all configureren
</div>

Catch all is een speciale regel die fungeert als de laatste stap in elke strategie-evaluatie. Hij heeft geen trigger en gaat automatisch af als geen enkele andere regel in de strategie met het huidige verzoek matcht.

Indien ingeschakeld zorgt de Catch all ervoor dat je aanbevelingsplek nooit leeg is. Zijn actie kan worden geconfigureerd met dezelfde actietypen die voor gewone regels beschikbaar zijn — specifieke producten, collecties, dynamische acties, enzovoort.

* **Inschakelen/uitschakelen** — zet de Catch all-regel aan of uit voor de strategie. Indien uitgeschakeld geven verzoeken die met geen enkele regel matchen een leeg resultaat terug.
* **Acties configureren** — bepaal wat er wordt teruggegeven met elke combinatie van beschikbare actietypen, net als bij elke andere regel.

Wanneer de Catch all afgaat, geeft het API-antwoord `resolution.fallbackUsed: true` aan.

***

<div id="global-filters">
  ## Globale filters
</div>

Globale filters halen producten uit de selectie voor elke regel in een strategie. Je opent ze via het **filterpictogram** naast de strategienaam linksboven in de strategie-editor.

Beschikbare globale filters:

* **Exclude out of stock** — sluit automatisch elk product uit dat momenteel niet te koop is.
* **Exclude input products** — sluit het product of de producten uit die de regel hebben geactiveerd (bijv. het product dat een shopper momenteel bekijkt op een PDP), zodat je nooit hetzelfde product aanbeveelt waar de shopper al naar kijkt.
* **Exclude by product tag** — sluit producten met specifieke tags uit.
* **Exclude by metafield** — sluit producten uit die matchen met een specifieke metafield namespace/key/value.
* **Exclude by product ID** — sluit specifieke producten uit op ID.
* **Require stock at location** — behoud alleen producten met beschikbare voorraad op een gekozen locatie (vereist leesrechten voor voorraad en locaties).

***

<div id="validation-and-error-states">
  ## Validatie en foutstatussen
</div>

Een strategie kan niet worden opgeslagen als een regel onvolledig is. Elke regel heeft minstens één voorwaarde (of de trigger **Always match**) en minstens één actie nodig; ontbreekt een van beide, dan verschijnen er fouten direct op de betreffende regel die aangeven wat er moet worden opgelost.

Om de fout te wissen en de strategie op te slaan, doe je een van beide:

* **Maak de regel compleet** — voeg de ontbrekende trigger en/of actie toe.
* **Verwijder de regel** — haal hem volledig weg als hij niet meer nodig is.

De strategie-editor staat opslaan niet toe totdat alle regels geldig zijn.
