Workflow send email node
This module prepares a contact-specific email and queues it through GoodQA's existing outreach permit path. Production registration belongs to the workflow adoption batch; this slice does not enable sending in existing workflows.
A contact event uses that contact. A deal event uses its current primary contact. A company has no selected inbox and is refused. Missing email, do-not-contact, unsubscribe, suppression and permit/cap denials are recorded as refusal codes.
Select a live verified organization SMTP identity, existing campaign and approved template version. Write the subject and plain-text body with the existing workflow merge fields. The rendered message must match that approved template exactly. The sender, author and campaign are checked against current tenant permissions. No approval is created by the action. A different reply-to address is explicitly refused because the existing SMTP transport does not support that override.
Live application returns queued with permit and queue references; queued does not mean delivered. The existing dispatcher handles transport, unsubscribe headers, final permit fencing and provider accounting after transaction commit. The same workflow step never issues another permit, including after an unknown provider outcome. Such outcomes remain queued for reconciliation, without resend.
Dry run returns the rendered subject and recipient without issuing a permit or creating queue/audit records. Stopped dry-run drafts remain the workflow default; only an explicitly live workflow can enqueue delivery.
See registration proposal for the exact action shape and adoption instructions. Custom-value merge tokens remain unavailable until the canonical CRM custom-values module is on main.