Twee verschillende taken heten allebei "orkestratie", en die verwarring is waarom multichannel-projecten vastlopen. Journey-orkestratie beslist of, wanneer, waarom en via welk kanaal iemand wordt benaderd — dat is bedrijfslogica. Delivery-operations voeren een al genomen beslissing uit: sender- en routekeuze, providers, doorvoer, retries, statusmapping en failover binnen één kanaal. Beide vragen andere eigenaren, tests en foutafhandeling.
Modelleer klantstate, niet de kanaalworkflow
De belangrijkste keuze is of je systeem één canonieke state bijhoudt voor het proces — deze factuur is onbetaald, deze afspraak onbevestigd — of losse workflows per kanaal die niets van elkaar weten. Met canonieke state werkt elke poging op elk kanaal op hetzelfde record, en dat record bepaalt de volgende stap.
Trigger-events en hun houdbaarheid
Events verouderen: de factuur is net betaald, de afspraak al bevestigd. State moet vlak vóór verzending opnieuw gelezen worden, niet alleen bij planning, en het verzoek moet een versheidsstempel dragen zodat verouderde beslissingen worden geweigerd.
Eligibility-regels, geëvalueerd op verzendmoment
Consent met herleidbaar bewijs, suppressie die kanaaloverstijgend wordt doorgegeven, echte bereikbaarheid van het kanaal, geverifieerde identiteit, taal en lokale tijdzone, quiet hours in lokale tijd, frequentielimieten en traffic class horen allemaal op het verzendmoment gecontroleerd te worden, niet bij inschrijving.
Beslissingslogica: welk kanaal, en waarom
Voorkeurskanaal, urgentie en deadline, gevoeligheid van de inhoud — gewone sms geldt als onversleuteld en zichtbaar op het vergrendelscherm, dus geen inloggegevens of gevoelige data — risico, kosten als é én van meerdere inputs, en kanaalcapaciteit horen vastgelegd in een tabel per use case.
Idempotentie, attempt-state en fallback
Deduplicatie moet op state-niveau gebeuren, met een eigen referentie die vóór verzending wordt opgeslagen. Elke poging heeft een expliciete state nodig — aangemaakt, verzonden, definitieve providerstatus, timeout, vervangen — waarbij een definitieve mislukking duidelijk verschilt van louter geen bevestiging. Fallback hoort te triggeren op deadlines uit het proces en op betrouwbare signalen (expliciete afwijzing, ongeldig doel), terwijl het ontbreken van een afleverbewijs voorzichtig behandeld wordt. Er is een limiet aan kanalen en pogingen nodig, met een pad voor wanneer de keten is uitgeput.
Stopcondities, reacties en attributie
Elke journey heeft expliciete stopcondities nodig — resultaat behaald, state gewijzigd, afmelding of klacht, deadline verstreken, frequentielimiet bereikt, handmatige kill switch — gecontroleerd op verzendmoment. Inkomende reacties en afmeldingen moeten de state machine bereiken en kanaaloverstijgend worden doorgegeven. Eén journey-ID over alle pogingen, kliks en uitkomsten laat zien wat echt heeft gewerkt, in plaats van dat elk kanaal de eer opeist.
Waar elke laag leeft
Delivery-operations — adapters, routing, senderidentiteit, retries, reconciliatie en escalatie — is het deel dat bijna geen team twee keer moet bouwen. Flowstates levert en beheert kanalen en routes, ondersteunt eigen providers via BYOV en ondersteunt hybride opzetten als die beheerde laag. Orkestratie is variabeler en leeft meestal waar de canonieke bedrijfsstate al zit — in je eigen applicatie, een CRM of een door Flowstates ondersteunde workflow.