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

# Dokumentacja reguł strategii

> Kompletny katalog wyzwalaczy, operatorów, akcji, filtrów i mechaniki ewaluacji strategii stojących za edytorem strategii w aplikacji.

Ta strona to kompletny katalog stojący za edytorem strategii: każdy wyzwalacz i akceptowane przez niego operatory, każda akcja, filtry globalne oraz sposób ewaluacji strategii. Uzupełnia przewodnik [Budowanie strategii](/pl/aftersell/strategies_building_in_app) - sięgnij po nią, gdy potrzebujesz wyczerpujących szczegółów dotyczących konkretnej opcji.

**Reguła** łączy **wyzwalacze** (*kiedy*) z **akcjami** (*wtedy*), a pod jednym przełącznikiem **AND** / **OR** możesz połączyć do pięciu wyzwalaczy: przy **AND** każdy wyzwalacz musi pasować, przy **OR** wystarczy jeden. Poniższe sekcje odzwierciedlają ten układ - najpierw [Wyzwalacze](#triggers) i [Akcje](#actions), a następnie elementy sterujące na poziomie strategii, które dotyczą wszystkich reguł: [kolejność reguł](#rule-priority-and-evaluation-order), [Filtry globalne](#global-filters) oraz [Catch all](#catch-all).

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

Wyzwalacze określają, kiedy reguła się uruchamia. Dostępne typy wyzwalaczy:

<div id="product-triggers">
  ### Wyzwalacze produktowe
</div>

Targetowanie na podstawie produktów w kontekście (koszyk kupującego, właśnie sfinalizowane zamówienie lub oglądany produkt):

* **Specific product(s)** - dopasowuje konkretne produkty Shopify według ID
* **Collection** - dopasowuje produkty należące do określonych kolekcji
* **Tag(s)** - dopasowuje produkty z określonymi tagami (np. „sale”, „summer”)
* **Title** - dopasowuje tytuł produktu
* **Vendor** - dopasowuje nazwę dostawcy/marki
* **Type** - dopasowuje pole typu produktu (np. „Apparel”, „Electronics”)
* **Handle** - dopasowuje slug adresu URL produktu
* **Metafield** - dopasowuje pary przestrzeń nazw/klucz/wartość niestandardowych metapól
* **Selling plan** - dopasowuje produkty „subskrypcyjne” lub „jednorazowe”. Jest ewaluowany tylko wtedy, gdy kontekst żądania dostarcza plan sprzedaży dla produktu - powierzchnie upselli checkoutu i post-purchase Aftersell go nie wysyłają, więc wyzwalacz nie dopasuje się tam, chyba że niestandardowa integracja dostarczy go jawnie

<div id="customer-triggers">
  ### Wyzwalacze klienta
</div>

Targetowanie na podstawie tego, kim jest kupujący:

* **Customer tag** - np. „VIP”, „loyalty-gold”
* **Country code** - kraj rozliczeniowy
* **Province code** - prowincja/stan rozliczeniowy
* **Locale** - lokalizacja klienta (np. „en-US”)
* **Accepts marketing** - status zgody marketingowej
* **Order count** - liczba poprzednich zamówień
* **Total spent** - łączne wydatki w całym okresie

<div id="cart-triggers">
  ### Wyzwalacze koszyka
</div>

Targetowanie na podstawie ogólnego stanu koszyka:

* **Cart subtotal** - np. suma częściowa większa niż \$50
* **Item count** - łączna liczba sztuk w koszyku
* **Line count** - liczba różnych pozycji
* **Cart attribute** - niestandardowe atrybuty koszyka ustawiane przez API koszyka Shopify
* **Cart note** - pole notatki koszyka

<div id="location-triggers">
  ### Wyzwalacze lokalizacji
</div>

Targetowanie na podstawie miejsca wysyłki oraz waluty sklepu:

* **Shipping country** - kraj docelowy wysyłki
* **Shipping province** - prowincja/stan docelowy wysyłki
* **Shipping method** - wybrana metoda wysyłki
* **Store currency** - kod aktywnej waluty sklepu

<div id="marketing-triggers">
  ### Wyzwalacze marketingowe
</div>

Targetowanie na podstawie adresu URL strony, na którą trafił kupujący:

* **URL** - dopasowuje fragment adresu URL strony docelowej, dzięki czemu możesz targetować konkretną kampanię lub kanał, dopasowując parametr osadzony w adresie URL (np. `utm_source=newsletter`)

<div id="time-triggers">
  ### Wyzwalacze czasowe
</div>

Targetowanie na podstawie momentu ewaluacji żądania, w czasie sklepu:

* **Day of week** - bieżący dzień
* **Hour of day** - bieżąca godzina

<div id="dynamic-triggers">
  ### Wyzwalacze dynamiczne
</div>

* **Always match** - wyzwalacz bez warunku, który zawsze się uruchamia. Użyj go, aby reguła działała przy każdym żądaniu (różni się to od [Catch all](#catch-all) na poziomie strategii, który uruchamia się tylko wtedy, gdy żadna inna reguła nie pasuje).

<Note>
  Nie każdy wyzwalacz jest wypełniany na każdej powierzchni. Na przykład checkout wysyła tylko kontekst produktu i koszyka - wyzwalacze klienta, lokalizacji i marketingowe nie dopasują się tam. Informacje o tym, co wysyła każda powierzchnia, znajdziesz w przewodnikach [Wdrażanie strategii](/pl/aftersell/implementing_strategies_post_purchase_upsells).
</Note>

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

Każdy wyzwalacz używa **operatora**, który określa sposób dopasowania wartości. Dostępne operatory zależą od typu wyzwalacza.

| Operator | Opis |
| - | - |
| **Equals** | Pasuje, gdy pole ma dokładnie podaną wartość - np. dostawca równa się „Nike”. |
| **Does not equal** | Pasuje, gdy pole ma dowolną wartość inną niż podana - przydatne do wykluczania konkretnego typu produktu lub dostawcy. |
| **Contains any** | Pasuje, gdy pole wielowartościowe zawiera co najmniej jedną wartość z Twojej listy - np. produkt należy do którejkolwiek z kilku kolekcji. |
| **Does not contain any** | Pasuje, gdy pole wielowartościowe nie zawiera żadnej wartości z Twojej listy - np. wykluczenie produktów oznaczonych tagiem „final-sale”. |
| **Contains all** | Pasuje, gdy pole wielowartościowe zawiera każdą wartość z Twojej listy - np. produkt musi mieć jednocześnie tagi „sale” i „summer”. |
| **Does not contain all** | Pasuje, gdy w polu wielowartościowym brakuje co najmniej jednej wartości z Twojej listy. |
| **Contains** | Pasuje, gdy pole tekstowe zawiera Twoją wartość jako fragment - np. tytuł zawiera „Gift”. |
| **Does not contain** | Pasuje, gdy pole tekstowe nie zawiera Twojej wartości. |
| **Greater than** | Pasuje, gdy pole liczbowe przekracza Twoją wartość - np. suma częściowa koszyka jest większa niż \$75. |
| **Less than** | Pasuje, gdy pole liczbowe jest poniżej Twojej wartości - np. liczba zamówień jest mniejsza niż 2 (kupujący po raz pierwszy). |
| **Greater than or equal to** | Pasuje, gdy pole liczbowe osiąga lub przekracza Twoją wartość - np. łączne wydatki wynoszą co najmniej \$500. |
| **Less than or equal to** | Pasuje, gdy pole liczbowe jest równe Twojej wartości lub niższe - np. liczba sztuk w koszyku wynosi nie więcej niż 3. |

Nie każdy operator jest dostępny dla każdego wyzwalacza:

* **Operatory listowe** (**Contains any / all** i ich zaprzeczenia) dotyczą pól wielowartościowych, takich jak tagi, kolekcje, tagi klientów i konkretne produkty.
* **Operatory tekstowe** (**Equals**, **Contains** i ich zaprzeczenia) dotyczą jednowartościowych pól tekstowych, takich jak tytuł, dostawca, handle, lokalizacja, kraj i URL.
* **Operatory liczbowe** dotyczą pól takich jak suma częściowa koszyka, liczba sztuk, liczba pozycji, liczba zamówień, łączne wydatki i godzina dnia. Operatory liczbowe nie mają wariantów „does not”.
* Kilka pól obsługuje tylko **Equals** i **Does not equal** - plan sprzedaży, dzień tygodnia i zgoda marketingowa.

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

Akcje tworzą doświadczenie, które chcesz zapewnić klientowi. To tutaj decydujesz, jakie produkty pokazać, w jaki sposób je pokazać i jakie dodatkowe dane przekazać razem z nimi. Reguła może mieć wiele skonfigurowanych razem akcji, aby zbudować pełne doświadczenie.

W ramach reguły wszystkie skonfigurowane akcje zasilają jedną wspólną pulę. Na przykład reguła z akcją konkretnego produktu, akcją kolekcji i akcją opartą na tagach zwróci produkty ze wszystkich trzech źródeł łącznie. Jeśli produkt pasuje do wielu źródeł, jest deduplikowany.

<div id="product-actions">
  ### Akcje produktowe
</div>

Te same atrybuty produktów, które są dostępne po stronie wyzwalaczy, są dostępne także przy definiowaniu akcji. Możesz zwracać produkty na podstawie:

* **Specific products** - ręcznie wybieraj pojedyncze produkty z katalogu Shopify.
* **Collection** - zwracaj wszystkie produkty należące do określonej kolekcji.
* **Product attributes** - zwracaj produkty spełniające kryteria takie jak tagi, dostawca, typ produktu lub metapola - te same typy atrybutów, których używa się w wyzwalaczach.

<div id="dynamic-actions">
  ### Akcje dynamiczne
</div>

Akcje dynamiczne zmieniają to, co jest zwracane, na podstawie sygnałów w czasie rzeczywistym, a nie stałej listy produktów. Dostępne typy akcji dynamicznych to:

* **Most popular** - najlepiej sprzedające się produkty Twojego sklepu według wolumenu sprzedaży, w całym sklepie lub w obrębie kolekcji.
* **Recently purchased** - produkty ostatnio kupowane w całym sklepie.
* **Inherit from when** - ponownie używa własnych wyzwalaczy reguły („kiedy”) jako selektora produktów, dzięki czemu zwracane produkty spełniają te same kryteria, na podstawie których reguła się uruchomiła.
* **AI Recommendations** - spersonalizowane sugestie generowane przez model rekomendacji Aftersell.

<div id="filtering-actions">
  ### Akcje filtrujące
</div>

Po zbudowaniu puli produktów możesz skonfigurować, ile produktów jest zwracanych i w jakiej kolejności:

* **Sort** - określa, które produkty są wybierane:
  * **Random** - losowy wybór.
  * **Price: high → low** - najdroższe produkty są zwracane jako pierwsze.
  * **Price: low → high** - najtańsze produkty są zwracane jako pierwsze.
* **Amount/Limit** - ustawia maksymalną liczbę zwracanych produktów.
* **Type** - zawęża zbudowaną pulę produktów do jednego typu produktu Shopify. Wybierz **Equals** dla dokładnego dopasowania lub **Contains** dla dopasowania fragmentu (oba bez rozróżniania wielkości liter). Zachowywane są tylko produkty, których typ produktu pasuje do wprowadzonej wartości; pozostałe są usuwane przed zastosowaniem Amount/Limit.

<Info>
  Filtr **Type** przycina pulę produktów zbudowaną przez Twoje akcje produktowe - różni się od akcji produktowej **Product type**, która *zwraca* produkty danego typu. Użyj filtra, gdy chcesz ograniczyć to, co może zwrócić szersza akcja (na przykład akcja kolekcji lub akcja dynamiczna).
</Info>

<Info>
  Najpierw stosowane jest sortowanie, a potem Amount/Limit. Na przykład jeśli sortowanie jest ustawione na **Random**, cała pula produktów jest losowo mieszana przed zastosowaniem limitu - dzięki temu zawsze otrzymujesz losowy wycinek, a nie te same produkty w losowej kolejności.
</Info>

<div id="key-value-actions">
  ### Akcje klucz-wartość
</div>

Opcjonalnie możesz dołączyć do reguły pary klucz-wartość. Gdy reguła pasuje, są one zwracane w `meta.data` w odpowiedzi API razem z wynikami produktowymi. Typowe zastosowania to:

* Tekst banera promocyjnego
* Etykiety kampanii na potrzeby analityki

<Note>
  Jeśli pasuje wiele reguł, które emitują ten sam klucz, wygrywa wartość z pierwszej pasującej reguły - późniejsze reguły nie mogą jej nadpisać.
</Note>

<div id="rule-priority-and-evaluation-order">
  ## Priorytet reguł i kolejność ewaluacji
</div>

Reguły w ramach strategii są ewaluowane po kolei, krok po kroku. Krok 1 jest ewaluowany jako pierwszy i tak dalej. Kolejność reguł możesz zmieniać, przeciągając je i upuszczając w edytorze strategii. Silnik ewaluacji:

1. Ewaluuje wyzwalacze każdej reguły względem dostarczonego kontekstu.
2. Zbiera produkty ze wszystkich pasujących reguł.
3. Deduplikuje i ogranicza wynik do skonfigurowanego maksimum (domyślnie: 20 produktów).

<div id="global-filters">
  ## Filtry globalne
</div>

Filtry globalne wykluczają produkty z możliwości wyboru we wszystkich regułach strategii. Dostęp do nich uzyskasz przez **ikonę filtra** obok nazwy strategii w lewym górnym rogu edytora strategii.

Dostępne filtry globalne:

* **Exclude out of stock** - automatycznie wyklucza każdy produkt, który jest obecnie niedostępny do zakupu.
* **Exclude input products** - wyklucza produkty, które uruchomiły regułę (np. produkt, który kupujący aktualnie ogląda na stronie produktu), dzięki czemu nigdy nie rekomendujesz tego samego produktu, który kupujący już ogląda.
* **Exclude by product tag** - wyklucza produkty z określonymi tagami.
* **Exclude by metafield** - wyklucza produkty pasujące do określonej przestrzeni nazw/klucza/wartości metapola.
* **Exclude by product ID** - wyklucza konkretne produkty według ID.
* **Require stock at location** - zachowuje tylko produkty, które mają dostępne zapasy w wybranej lokalizacji (wymaga uprawnień do odczytu zapasów i lokalizacji).

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

Catch all to specjalna reguła, która działa jako ostatni krok każdej ewaluacji strategii. Nie ma wyzwalacza; uruchamia się automatycznie, jeśli żadna inna reguła w strategii nie pasuje do bieżącego żądania.

Gdy jest włączona, Catch all zapewnia, że Twój slot rekomendacji nigdy nie jest pusty. Jej akcję można skonfigurować przy użyciu dowolnego z typów akcji dostępnych dla zwykłych reguł - konkretnych produktów, kolekcji, akcji dynamicznych itp.

* **Enable/disable** - włącza lub wyłącza regułę Catch all dla strategii. Gdy jest wyłączona, żądania, do których nie pasuje żadna reguła, zwracają pusty wynik.
* **Configure actions** - określa, co zwrócić, przy użyciu dowolnej kombinacji dostępnych typów akcji, tak samo jak w każdej innej regule.

Gdy Catch all się uruchomi, odpowiedź API będzie zawierać `resolution.fallbackUsed: true`.
