Channable's kracht zit in de rules — de transformatie-laag tussen je shop-data en wat er naar de marketplace wordt gestuurd. Onderstaande 10 rules komen in vrijwel elke setup terug. Pseudo-code waar het kan; in Channable's UI of expression-editor moet je het soms iets anders typen, maar de logica is gelijk.

1. Title-builder met character cap

De belangrijkste rule. Marketplaces kappen titels op verschillende lengtes (Amazon 200, Bol 75, Google 150). Combineer losse velden tot een title, en cap bij de juiste lengte zonder midden in een woord te kappen.

// rule: build_title
full_title = brand + " " + product_name + " - " + color + " " + size

if length(full_title) > 200:
    title = brand + " " + truncate(product_name, 150) + " " + color
else:
    title = full_title

2. Prijs-floor om underpricing te voorkomen

Voorkomt dat een import-fout of foutieve wisselkoers een product voor onbedoelde prijzen op de marketplace zet. Sluit producten uit waarvan de prijs onder een veilige drempel valt.

// rule: price_floor
if price < (cost_price * 1.15):
    exclude_product("price below 15% margin")
elif price < 5.00:
    exclude_product("minimum price threshold")
else:
    final_price = round(price, 2)

3. Voorraad-cap

Producten met heel veel voorraad krijgen vaak buitensporig veel ad-spend allocatie. Door voorraad te cappen op een redelijk niveau (bijv. 50) voorkom je dat één SKU je hele advertising-budget opslokt.

// rule: stock_cap
if stock > 50:
    display_stock = 50
elif stock < 1:
    exclude_product("out of stock")
else:
    display_stock = stock

4. Conditional product-filter per kanaal

Niet alle producten horen op elk kanaal. Bol.com vraagt EAN, Amazon wil minstens 1 foto, Google Shopping wil GTIN voor merken. Per kanaal een filter:

// rule: amazon_filter
if ean is empty:
    exclude_product("missing EAN")
if count(images) < 1:
    exclude_product("no images")
if category in ["hazmat", "restricted"]:
    exclude_product("restricted category")

5. Regex-cleanup voor productbeschrijvingen

Veel shop-systemen exporteren HTML in beschrijvingen. Marketplaces willen vaak plain text. Plus: dubbele spaties, encoding-issues en niet-toegestane karakters.

// rule: clean_description
description = strip_html(description)
description = regex_replace(description, "\\s+", " ")
description = regex_replace(description, "&[a-z]+;", "")
description = trim(description)
description = truncate(description, 2000)

6. Categorie-mapping per kanaal

Jouw shop-categorieën komen zelden 1-op-1 overeen met marketplace-taxonomie. Channable's mapping-tool helpt, maar voor de moeilijke gevallen schrijf je een rule:

// rule: amazon_category_map
if shop_category == "Damesschoenen / Pumps":
    amazon_cat = "Schuhe & Handtaschen > Damen > Schuhe > Pumps"
elif shop_category == "Herenschoenen / Veterschoenen":
    amazon_cat = "Schuhe & Handtaschen > Herren > Schuhe > Schnürhalbschuhe"
else:
    exclude_product("unmapped category")

7. Dynamische prijs-opslag per kanaal

Verschillende marketplaces hebben verschillende referral fees. Wil je je marge gelijk houden, dan moet je per kanaal de verkoopprijs aanpassen.

// rule: channel_pricing
if channel == "amazon":
    fee_pct = 0.15   // Amazon home & kitchen ref fee
elif channel == "bol":
    fee_pct = 0.13   // Bol commissie
else:
    fee_pct = 0.05   // Google Shopping CPC est.

final_price = round(base_price / (1 - fee_pct - target_margin), 2)

8. Bullet-points opbouwen vanuit USP-velden

Voor Amazon heb je 5 bullet points met elk een specifiek formaat. Vaak heb je losse USP-velden in je shop die je wilt formatteren.

// rule: build_bullets
bullets = []
for usp in [usp_1, usp_2, usp_3, usp_4, usp_5]:
    if usp is not empty:
        formatted = uppercase(first_word(usp)) + ": " + rest_of_words(usp)
        bullets.append(truncate(formatted, 200))

9. Beeld-selectie per kanaal

Niet alle foto's werken op alle kanalen. Amazon wil de witte-achtergrond als hoofdfoto, Meta wil de lifestyle-shot. Selecteer met labels:

// rule: image_selection
if channel == "amazon" or channel == "bol":
    main_image = find(images, label="white_bg")
    alt_images = find_all(images, label="product_detail")
elif channel == "meta" or channel == "tiktok":
    main_image = find(images, label="lifestyle")
else:
    main_image = images[0]

10. Bulk-update via condition: seizoens-prijs

Voor sales-periodes (Black Friday, Sinterklaas) wil je een bulk-discount toepassen op specifieke producten zonder elk product handmatig aan te raken.

// rule: seasonal_discount
if tag contains "blackfriday" and today() >= "2026-11-27" and today() <= "2026-12-01":
    sale_price = price * 0.80   // 20% korting
    show_strike_price = price
else:
    sale_price = price

Best practices die rules-werk makkelijker maken

Vragen over specifieke rules of vastgelopen in je eigen setup? Stuur een mail of bel.


Verder lezen: Wat is Channable en wanneer nuttig? · Feed-rules op maat (dienst)