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
2 months ago
Linear
Get notified by email when there are changes.
Planned
Main App
2 months ago
Linear
Get notified by email when there are changes.