CM · Client Communication

Communications Hub & Drip Campaign

The full scope behind "Comms, drip campaign": all outbound/inbound client communication across channels, plus automated nurture sequences — every message logged to the Deal Thread alongside status and owner.

Transactional vs. marketing. The Notifications service handles internal alerts (task assigned, SLA breach). This module handles client-facing messages and nurture sequences — governed by consent, opt-out, and throttling.

Part A · Communications Hub

Email In-app

Unified thread per deal

All channels in one timeline against deal_id; every message logged to CommsMessage + ActivityLog.

Two-way inbound capture

Replies captured via webhooks → auto follow-up task → lead moves to CONNECTED.

Templates + merge fields

{{company}}, {{quote_no}}, {{tracking_link}}… pulled from the deal & enrichment_data. Multi-language for export buyers.

Delivery & read receipts

Status per message: queued → sent → delivered → read → replied (or bounced/failed).

Scheduling & time-zones

Send from a shared or rep identity; respect the recipient's time-zone window.

Consent & opt-out

Unsubscribe / STOP handling, consent capture, suppression list (GDPR / DND aware).

Part B · Drip Campaign Engine

Automated multi-step sequences that keep leads and deals warm without manual chasing.

Trigger (status/event: new lead · no reply in N days · quote sent · sample dispatched)
   Step 1 email (wait 2 days) Step 2 email reminder (wait 3 days)
   condition: replied? → EXIT  |  opened, no reply → Step 3
   sequence exhausted, no engagement create Task / escalate

Triggers & segments

Auto-enroll on status/event; segment by source, region, product, value.

Steps & branching

Ordered steps, per-step channel/template/delay, conditional paths & goal/exit.

Throttling & quiet hours

Rate limits + do-not-disturb windows per region; suppression respected.

Personalization & A/B

Merge fields + enrichment; optional A/B content per step.

Approval

Campaigns & templates need manager approval before going live.

Task hand-off

Exhausted with no engagement → follow-up Task, never silently dropped.

Metrics feed the dashboard: sent · delivered · opened · clicked · replied · bounced · unsubscribed, with conversion attribution back to the funnel.

Data model additions

EntityKey fields
CommsMessagedeal_id · channel · direction · from · to · subject · body · template_id · status · provider_ref · sent_at · read_at
MessageTemplatename · channel · subject · body · locale · merge_fields · approved_by · active
Campaignname · trigger · segment · status (Draft/Active/Paused) · approved_by
CampaignStepcampaign_id · order · channel · template_id · delay · condition
CampaignEnrollmentcampaign_id · deal_id · current_step · status · enrolled_at · next_send_at
Consent / Suppressioncontact · channel · opted_in · unsubscribed_at · reason

Providers (provided by the Client Company)

ChannelProvider options
EmailAmazon SES · SendGrid · Mailgun · SMTP
No change to the 50-day estimate. Hub basics + Module 1 follow-up land in Phase 1; the campaign engine in Phase 2; campaign metrics on the dashboard in Phase 4.