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

# Referentie voor Strategy-regels

> De volledige catalogus van Strategy-triggers, operators, acties, filters en evaluatiemechanismen achter de Strategy-editor in de app.

Deze pagina is de volledige catalogus achter de Strategy-editor: elke trigger en de operators die deze accepteert, elke actie, de globale filters en hoe een Strategy wordt geëvalueerd. Het is de aanvulling op de walkthrough [Strategies bouwen](/nl/aftersell/strategies_building_in_app) - raadpleeg deze pagina wanneer je de uitgebreide details van een specifieke optie nodig hebt.

Een **regel** koppelt **triggers** (het *wanneer*) aan **acties** (het *dan*), en je kunt tot vijf triggers combineren onder één **AND** / **OR**-schakelaar: met **AND** moet elke trigger overeenkomen, met **OR** is er één genoeg. De onderstaande secties volgen die opbouw - eerst [Triggers](#triggers) en [Acties](#actions), daarna de besturingselementen op Strategy-niveau die voor elke regel gelden: [regelvolgorde](#rule-priority-and-evaluation-order), [Globale filters](#global-filters) en de [Catch all](#catch-all).

<div id="triggers">
  ## Triggers
</div>

Triggers bepalen wanneer een regel afgaat. Beschikbare triggertypen:

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

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

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

<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

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

Target op basis van de algehele status van de cart:

* **Cart subtotal** - bijv. subtotaal hoger dan \$50
* **Item count** - totaal aantal artikelen in de cart
* **Line count** - aantal verschillende regelitems
* **Cart attribute** - aangepaste cart-attributen die via de cart-API van Shopify zijn ingesteld
* **Cart note** - het veld cart-notitie

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

Target op basis van waarheen de shopper verzendt en de valuta van de winkel:

* **Shipping country** - land van verzendbestemming
* **Shipping province** - provincie/staat van 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** - komt overeen met een deel van de landings-URL, zodat je een specifieke campagne of een specifiek kanaal kunt targeten door een parameter in de URL te matchen (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 deze om een regel bij elk verzoek te laten draaien (dit verschilt van de [Catch all](#catch-all) op Strategy-niveau, die alleen afgaat wanneer geen andere regel overeenkomt).

<Note>
  Niet elke trigger wordt op elke surface gevuld. De checkout stuurt bijvoorbeeld alleen product- en cart-context mee - klant-, locatie- en marketingtriggers komen daar niet overeen. Zie de gidsen [Strategies implementeren](/nl/aftersell/implementing_strategies_post_purchase_upsells) voor wat elke surface meestuurt.
</Note>

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

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

| Operator | Beschrijving |
| - | - |
| **Equals** | Komt overeen wanneer het veld exact de opgegeven waarde is - bijv. vendor is gelijk aan "Nike". |
| **Does not equal** | Komt overeen wanneer het veld iets anders is dan de opgegeven waarde - handig om een specifiek producttype of een specifieke leverancier uit te sluiten. |
| **Contains any** | Komt overeen wanneer een veld met meerdere waarden ten minste één waarde uit je lijst bevat - bijv. een product hoort bij een van meerdere collecties. |
| **Does not contain any** | Komt overeen wanneer een veld met meerdere waarden geen enkele waarde uit je lijst bevat - bijv. sluit producten met de tag "final-sale" uit. |
| **Contains all** | Komt overeen 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** | Komt overeen wanneer een veld met meerdere waarden ten minste één van de waarden uit je lijst mist. |
| **Contains** | Komt overeen wanneer een tekstveld je waarde als deeltekst bevat - bijv. de titel bevat "Gift". |
| **Does not contain** | Komt overeen wanneer een tekstveld je waarde niet bevat. |
| **Greater than** | Komt overeen wanneer een numeriek veld je waarde overschrijdt - bijv. het cart-subtotaal is hoger dan \$75. |
| **Less than** | Komt overeen wanneer een numeriek veld onder je waarde ligt - bijv. het aantal bestellingen is minder dan 2 (nieuwe kopers). |
| **Greater than or equal to** | Komt overeen wanneer een numeriek veld je waarde bereikt of overschrijdt - bijv. de totale uitgaven zijn minstens \$500. |
| **Less than or equal to** | Komt overeen wanneer een numeriek veld op of onder je waarde ligt - bijv. het aantal artikelen in de cart is niet meer dan 3. |

Niet elke operator is voor elke trigger beschikbaar:

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

<div id="actions">
  ## Acties
</div>

Acties creëren de ervaring die je aan de klant wilt bieden. Hier bepaal je welke producten je toont, hoe je ze toont en welke aanvullende gegevens je ermee meestuurt. Een regel kan meerdere acties tegelijk geconfigureerd hebben om de volledige ervaring op te bouwen.

Per regel dragen alle geconfigureerde acties bij aan één gecombineerde pool. Een regel met bijvoorbeeld een actie voor een specifiek product, een collectieactie en een actie op basis van tags retourneert producten uit alle drie de bronnen samen. Als een product met meerdere bronnen overeenkomt, wordt het ontdubbeld.

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

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

* **Specific products** - kies handmatig afzonderlijke producten uit je Shopify-catalogus.
* **Collection** - retourneer alle producten die tot een specifieke collectie behoren.
* **Product attributes** - retourneer producten die voldoen aan criteria zoals tags, leverancier, producttype of metafields - dezelfde kenmerktypen als bij triggers.

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

Dynamische acties wijzigen wat wordt geretourneerd op basis van realtime signalen in plaats van een vaste productlijst. Beschikbare typen dynamische acties zijn onder meer:

* **Most popular** - de best presterende producten van je winkel op verkoopvolume, voor de hele winkel 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 geretourneerde producten overeenkomen met dezelfde criteria waarop de regel afging.
* **AI Recommendations** - gepersonaliseerde suggesties die door het aanbevelingsmodel van Aftersell worden gegenereerd.

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

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

* **Sort** - bepaal welke producten worden geselecteerd:
  * **Random** - een willekeurige selectie.
  * **Price: high → low** - de duurste producten worden eerst geretourneerd.
  * **Price: low → high** - de goedkoopste producten worden eerst geretourneerd.
* **Amount/Limit** - stel het maximale aantal te retourneren producten in.
* **Type** - beperk de samengestelde productpool tot één Shopify-producttype. Kies **Equals** voor een exacte overeenkomst of **Contains** voor een overeenkomst op deeltekst (beide zijn niet hoofdlettergevoelig). Alleen producten waarvan het producttype overeenkomt met de ingevoerde waarde blijven behouden; de rest wordt verwijderd voordat Amount/Limit wordt toegepast.

<Info>
  Het filter **Type** dunt de productpool uit die door je productacties is samengesteld - het verschilt van de productactie **Product type**, die producten van een bepaald type *retourneert*. Gebruik het filter wanneer je wilt beperken wat een bredere actie (zoals een collectieactie of dynamische actie) kan retourneren.
</Info>

<Info>
  Sort wordt eerst toegepast, daarna Amount/Limit. Als je sortering bijvoorbeeld is ingesteld op **Random**, wordt de volledige productpool in willekeurige volgorde gezet voordat de limiet wordt toegepast - zo krijg je altijd een willekeurige selectie, en niet dezelfde producten in willekeurige volgorde.
</Info>

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

Je kunt optioneel key-value-paren aan een regel koppelen. Wanneer de regel overeenkomt, worden deze in `meta.data` in de API-respons geretourneerd, naast de productresultaten. Veelvoorkomende toepassingen zijn:

* Tekst voor promotiebanners
* Campagnelabels voor analytics

<Note>
  Als meerdere regels overeenkomen en dezelfde key uitgeven, wint de waarde van de eerste overeenkomende regel - latere regels kunnen deze niet overschrijven.
</Note>

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

Regels binnen een Strategy worden op volgorde geëvalueerd, stap voor stap. Stap 1 wordt eerst geëvalueerd, enzovoort. Je kunt regels herschikken door ze in de Strategy-editor te slepen en neer te zetten. De evaluatie-engine:

1. Evalueert de triggers van elke regel tegen de opgegeven context.
2. Verzamelt producten van alle overeenkomende regels.
3. Ontdubbelt het resultaat en beperkt het tot het geconfigureerde maximum (standaard: 20 producten).

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

Globale filters sluiten producten uit van selectie voor elke regel in een Strategy. Je opent ze via het **filterpictogram** naast de naam van de Strategy linksboven in de Strategy-editor.

Beschikbare globale filters:

* **Exclude out of stock** - sluit automatisch elk product uit dat momenteel niet beschikbaar is voor aankoop.
* **Exclude input products** - sluit de producten uit die de regel hebben geactiveerd (bijv. het product dat een shopper momenteel op een PDP bekijkt), 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 overeenkomen met een specifieke metafield-combinatie van namespace/key/value.
* **Exclude by product ID** - sluit specifieke producten op ID uit.
* **Require stock at location** - behoud alleen producten met beschikbare voorraad op een gekozen locatie (vereist leesrechten voor voorraad en locaties).

<div id="catch-all">
  ## Catch all
</div>

Catch all is een speciale regel die fungeert als laatste stap in elke Strategy-evaluatie. Deze heeft geen trigger; hij gaat automatisch af als geen enkele andere regel in de Strategy overeenkomt met het huidige verzoek.

Indien ingeschakeld, zorgt de Catch all ervoor dat je aanbevelingsslot nooit leeg is. De actie ervan kan worden geconfigureerd met elk van dezelfde actietypen die voor gewone regels beschikbaar zijn - specifieke producten, collecties, dynamische acties, enz.

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

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