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
- Houd rules atomair — één rule doet één ding. Maakt debugging makkelijker.
- Documenteer in commentaar — schrijf in de rule zelf waarom je iets doet, niet wat (dat zie je al aan de code).
- Test op samples — Channable heeft een preview-modus, gebruik 'm voor je een rule live zet.
- Versioning — Channable houdt versies bij, maar grote wijzigingen vooraf even snapshotten kan geen kwaad.
- Exclude met reason — als je een product uitsluit, geef een reden mee in de exclude-call. Maakt foutzoeken een uur korter.
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)