# EmailCampaignComposer

## 2026-08-12 — Add "By tag" recipient mode

**Prompted by:** Hellen Tran (PO) — Contact Tags feature (Clint's decision to defer Smart Lists)

### What changed
- Recipients step gains a third **Send to** option, **By tag**, alongside All clients and Smart list.
- Selecting it reveals a `TagInput` to pick one or more tags; a contact matching **any** selected tag is included (match ANY).
- New props: `tagSuggestions` (the broker's tag library, for autocomplete) and `initialTags`.
- `CampaignRecipientMode` extended to `"all" | "smart_list" | "tags"`; `EmailCampaignPayload` gains `tags: string[]`.
- Review summary shows `Tags — <a>, <b> · match any`; step 2 validates that at least one tag is selected.

### Why
- Smart Lists are deferred this release; brokers segment campaigns by manually-applied contact tags instead. The Smart list mode is retained (component-level) for when Smart Lists return.

### Affected tokens / files
- `packages/shadcn/src/components/ui/email-campaign-composer.tsx`
