From stays company-branded on a verified domain while routing replies via Reply-To to the sender’s contact email (recommended pattern for SPF/DMARC), vs. changes to From display name only.Today, the envelope reads as company-sent because handleEmailJob in attik-backend/src/util/functions/emails/sendResendTemplate.ts builds from from verified company domain / company.name (when a Domain record exists), or falls back to a generic noreply-style address—not from the individual sharer. Reply-To is not set on the Resend payload, so Reply targets From.
The repair-list-share template (attik-backend/src/util/functions/emails/resendTemplates/repairListShareEmail.tsx) already names the sharer in the body via senderName / senderRole, populated from senderContactId on POST /repair-list/:id/view-link-send (attik-backend/src/routes/repairList.ts). The gap is reply routing, not necessarily missing copy in the body.
Product feedback: recipients perceive the company as the sender and reply there; client care must relay responses back to the original sender. Slack thread
Constraint: Putting an arbitrary contact address in From usually breaks authentication vs Resend + verified domains; Reply-To: <sender email> is the usual way to preserve deliverability while steering replies to the person.
attik-backend/src/routes/repairList.ts — POST /:id/view-link-send: already resolves senderName / senderRole from senderContactId and inspection people; extend the outbound mail contract so the send path can attach reply metadata (e.g. contact email for Reply-To when present).attik-backend/src/util/functions/emails/sendResendTemplate.ts — handleEmailJob: today sets from and to (+ cc/bcc) on CreateEmailOptions; add support for Resend’s reply-to field when template data supplies a sender address—decision needed on validation (contact must be on the job, must have email).Reply-To is only set where product intends (may stay repair-list-share-only at first).attik-frontend/src/app/client/repair-list/[id]/view/components/ShareViewByEmailModal.tsx — already passes senderContactId when the portal provides it; confirm the selected sharer’s email is available server-side via inspection people (no need to expose in the client if the server derives it).Reply-To = sharer email (with From unchanged for auth), vs. also changing From display name (e.g. “Jane via {Company}”) for readability—second is optional polish.reply_to / email payload fields (align with CreateEmailOptions in code)attik-backend/src/routes/repairList.ts — view-link-sendattik-backend/src/util/functions/emails/sendResendTemplate.tsattik-backend/src/util/functions/emails/resendTemplates/repairListShareEmail.tsxattik-frontend/src/app/client/repair-list/[id]/view/components/ShareViewByEmailModal.tsxPlease authenticate to join the conversation.
Planned
Main App
16 days ago
Linear
Get notified by email when there are changes.
Planned
Main App
16 days ago
Linear
Get notified by email when there are changes.