BCC recipient support in email builder templates
Objective
- Allow template authors to configure BCC recipients on email builder templates, mirroring the existing CC configuration
- Prevent internal office or client success email addresses from being visible to clients on automated sends
- BCC addresses should be configurable as both role-based recipients (via
ContactSelect) and manual email addresses (viaManualRecipientInput), matching the CC pattern
Background
- Shayna Turilli raised this as a UX concern: when the office or client success team is CC'd on client-facing emails, their address is visible to the client in the email header — which reads as awkward and unprofessional
- A BCC workaround exists today for manually-sent emails but is not configurable on automated email templates
- The email builder already has full BCC infrastructure in place:
EmailBuilderSchemadefinesbcc: [String],sendResendTemplate.tspassesbccthrough to the Resend API, andhandleEmailJobalready includesbccinCreateEmailOptions - The Email Builder UI (
EmailBuilderBase.tsx) renders side-by-side To/CC panels with role and manual address inputs — but has no BCC panel. The save payload insaveEmail()explicitly comments outbcc(// bcc: formData.bcc || []), andbccEmailsdoes not yet exist on the schema — meaning BCC was likely started and intentionally deferred; engineering may have context on why ccEmailsexists onEmailBuilderSchemafor static CC addresses; a parallelbccEmailsfield is missing and will need to be added
Product Decisions
Locked
- BCC scope — Applies to email builder templates (automated sends) only; manual sends already support BCC
- BCC UI layout — Rendered as a collapsible section below the To/CC grid, not as a third column, since BCC will be used infrequently and a third column would add visual clutter
- Parity with CC — When expanded, BCC panel mirrors the CC panel: role-based recipients via
ContactSelect+ manual addresses viaManualRecipientInput
Open
- Schema field naming — A
bccEmailsfield needs to be added toEmailBuilderSchemato mirrorccEmails. Confirm naming convention before schema migration.
Scope
Backend (attik monorepo)
apps/backend/src/models/emailBuilderSchema.ts— AddbccEmails: [String]field toEmailBuilderSchema, mirroringccEmailsapps/backend/src/routes/emailBuilder.ts— Ensure PATCH route accepts and persistsbccandbccEmailsfieldsapps/backend/src/util/functions/emails/sendResendTemplate.ts—handleEmailJobalready supportsbccinCreateEmailOptions; confirmbccEmailsvalues are merged into thebccarray at send time, same as thecc+ccEmailspattern
Frontend (attik-frontend)
src/app/tools/action-flow/email-builder/[email_id]/EmailBuilderBase.tsx— Add collapsible BCC section below the To/CC grid; uncommentbcc: formData.bcc || []insaveEmail(); addbccEmailsto save payload,originalFormDataRef, andcheckForChangesdiffsrc/util/types/serverTypeCollection/emailBuilder.ts— AddbccEmailsto the frontend type definition
References
- ATT-1815 — CC/BCC deduplication (related; covers dedup logic for when BCC is active)
attik/apps/backend/src/models/emailBuilderSchema.tsattik/apps/backend/src/util/functions/emails/sendResendTemplate.tsattik-frontend/src/app/tools/action-flow/email-builder/[email_id]/EmailBuilderBase.tsx
Status: Planned
Log in to comment and vote
No comments yet
Be the first to share your thoughts.