Automatizace – generování souvisejících produktů

Filip Filip Kružík
12. září 2025

Tento článek navazuje na článek Automatizace – nabídka souvisejícího zboží po nákupu a rozšiřuje možnosti automatizace o pokročilé funkce pro práci se souvisejícími produkty. Pomocí bloku Vlastní můžete vytvořit dynamickou logiku, která automaticky vybere produkty z objednávky zákazníka a k nim načte související doplňkové zboží.

Kdy použít blok Vlastní pro související produkty?

Standardní automatizace umožňuje nabízet související zboží na základě kategorií nebo výrobců. Blok Vlastní však poskytuje mnohem pokročilejší možnosti:

  • Dynamické načítání doplňků na základě konkrétních produktů v objednávce.
  • Flexibilní nastavení počtu nabízených položek.
  • Podmíněné ukončení automatizace, pokud nejsou k dispozici vhodné produkty.

Předpoklady

Před implementací bloku Vlastní se ujistěte, že máte splněny tyto podmínky:

  • Aktivovaný tarif E-mailing v účtu Boldem.
  • Propojený e-shop s účtem Boldem s kompletními daty o produktech.
  • Aktivní automatizace s nastaveným spouštěčem Nastane akce na webu s možností „Uživatel dokončil objednávku““.
  • Transakční šablony připravené pro zobrazení souvisejících produktů.

Vložení a konfigurace bloku Vlastní

Umístění bloku v automatizaci

Blok Vlastní vložte do automatizace na místo, kde potřebujete vyhodnotit související produkty z objednávky. Obvykle se umísťuje:

  1. Za spouštěč Nastane akce na webu s možností „Uživatel dokončil objednávku“.
  2. Před blok Podmínka nebo přímo před odeslání e-mailu.
  3. Za blok Počkat, pokud chcete počkat určitou dobu po nákupu.

Postup vložení bloku

  1. V levé části editoru automatizace vyberte kartu Operátory.
  2. Přetáhněte blok Vlastní do plátna automatizace.
  3. Dvakrát na blok klikněte pro otevření editoru kódu.
  4. Vložte následující kód:
{{
    numberOfItems = 3
    order = loadOrder stateData.orderId;
    orderItems = order.orderItems;
    orderItems = array.sort orderItems "priceVat"
    orderItems = array.reverse orderItems
    productsWithRelatedItems = []
    i = 0;

    while productsWithRelatedItems.size < numberOfItems && i < orderItems.size
       productWithRelatedItems = {};
       orderItem = orderItems[i];
       orderProduct = loadProduct orderItem.externalId
       if orderProduct == null
            i++
            continue
        end
        if orderProduct.accessoryIds == null || orderProduct.accessoryIds.size == 0
            i++;
            continue;
        end
        productWithRelatedItems.product = orderProduct
        productWithRelatedItems.relatedProducts = loadProducts orderProduct.accessoryIds
        productWithRelatedItems.relatedProducts = array.compact productWithRelatedItems.relatedProducts
        if(productWithRelatedItems.relatedProducts.size == 0)
            i++;
            continue;
        end
        productWithRelatedItems.relatedProducts = array.uniq productWithRelatedItems.relatedProducts
        productWithRelatedItems.relatedProducts = array.sort productWithRelatedItems.relatedProducts 'priceVat'
        productWithRelatedItems.relatedProducts = array.reverse productWithRelatedItems.relatedProducts
        productsWithRelatedItems = array.add productsWithRelatedItems productWithRelatedItems
        i++;
    end
    if((productsWithRelatedItems | array.size) == 0)
        setFinishedState();
    else
        saveData('productsWithRelatedItems', productsWithRelatedItems);
        setOutputPoint('A');
    end
}}
  1. Klikněte na Uložit pro potvrzení změn

Vysvětlení funkcionality kódu

Klíčové parametry

numberOfItems = 3 : Definuje maximální počet hlavních produktů, pro které se budou načítat související položky. Tuto hodnotu můžete upravit podle svých potřeb.

Logika zpracování

Kód postupně zpracovává objednávku zákazníka v následujících krocích:

  1. Načtení objednávky – získá kompletní data o objednávce zákazníka.
  2. Třídění položek – seřadí produkty podle ceny od nejdražších po nejlevnější.
  3. Iterace přes produkty – pro každý produkt v objednávce:
    • Načte detailní informace o produktu.
    • Zkontroluje, zda má definované doplňkové produkty (accessoryIds).
    • Načte související produkty.
    • Odfiltruje neexistující nebo neplatné produkty.
    • Seřadí související produkty podle ceny.
  4. Výstup – Uloží výsledek nebo ukončí automatizaci.

Výstupní body

Blok má dva možné výstupy:

Výstupní bod A : Aktivuje se, pokud byly nalezeny související produkty. Data se uloží do proměnné productsWithRelatedItems a automatizace pokračuje.

Ukončení automatizace : Pokud nejsou k dispozici žádné související produkty, automatizace se automaticky ukončí, což zabrání odesílání prázdných e-mailů.

Struktura výstupních dat

Blok vytvoří proměnnou productsWithRelatedItems s následující strukturou:

[
  {
    "product": {
      // Informace o hlavním produktu z objednávky
      "name": "Název produktu",
      "priceVat": 1500,
      "externalId": "12345"
      // ... další vlastnosti produktu
    },
    "relatedProducts": [
      {
        // První související produkt (seřazeno podle ceny)
        "name": "Doplněk 1",
        "priceVat": 500
        // ... další vlastnosti
      },
      {
        // Další související produkty
        "name": "Doplněk 2",
        "priceVat": 300
      }
    ]
  }
  // ... další hlavní produkty s jejich doplňky
]

Objekt product je strukturován dle modelu ProductFeedItemModel.
Objekt relatedProducts je polem prvků tohoto modelu.

Propojení s dalšími bloky

Za blok Vlastní obvykle následuje blok Podmínka, který vyhodnotí, zda pokračovat v automatizaci:

  • Výstup A – Pokračuje k odeslání e-mailu se souvisejícími produkty.
  • Ukončené stavy se nepropojují, automatizace končí.

Výstup A propojte s blokem Odeslat e-mail, který obsahuje transakční šablonu s podporou zobrazení souvisejících produktů.

Přizpůsobení kódu

Změna počtu produktů

Pro úpravu maximálního počtu zpracovávaných produktů změňte hodnotu:

numberOfItems = 5 // Namísto původních 3

Dodatečné filtry

Pro přidání vlastních podmínek filtrování souvisejících produktů můžete rozšířit logiku:

// Příklad: zpracovat pouze produkty s cenou vyšší než 1000 Kč
if orderProduct.price < 1000
    i++;
    continue;
end

Blok Vlastní poskytuje mocný nástroj pro vytváření pokročilých automatizací. S jeho pomocí můžete vytvořit vysoce personalizované nabídky, které odpovídají konkrétním nákupům vašich zákazníků a výrazně zvyšují pravděpodobnost dalších prodejů.