Workflows and Data Processing
What you must know
A workflow is a directed graph of activities connected by transitions. Each transition carries a temporary work table whose schema is the targeting dimension plus any added columns. Core activities include Query (selects a population), Enrichment (adds columns by link or join), Split (routes subsets), Union, Intersection, Exclusion, Deduplication, Reconciliation, Update data, Load file, Extract file, Delivery, Approval, Signal, Wait, Scheduler, JavaScript code, Sub-workflow, Jump, and Loop.
In a Query activity, separate the targeting dimension from the filtering dimension. The targeting dimension determines the rows that leave the activity; the filtering dimension is the table used in conditions and may require a link. An Enrichment can add data without changing the population, but a join with the wrong cardinality can multiply rows. Deduplication chooses one record per key, and which record survives depends on the sort and identifier settings. Reconciliation matches incoming data to existing records and can update them. “Keep results between two executions” and incremental processing control persistence and deltas; they are common sources of repeated or missing sends.
Traps and rule of thumb
Union does not automatically align columns; use common columns or explicit mappings. A Delivery activity targets the inbound transition, so an empty transition means no send. The JavaScript code activity runs once for the activity, not once per row unless you write a loop.
Worked example: build Scheduler → Query (incremental on lastModified) → Deduplication on email → Update data → Delivery. Put deduplication after any enrichment that may fan out rows and before the delivery. Rule: model the population first, then add columns, then deduplicate, then send.