Skip to content

fix(contact): the address printed on the site did not receive mail - #376

Merged
github-actions[bot] merged 1 commit into
mainfrom
fix/contact-email
Aug 25, 2026
Merged

fix(contact): the address printed on the site did not receive mail#376
github-actions[bot] merged 1 commit into
mainfrom
fix/contact-email

Conversation

@catomean

Copy link
Copy Markdown
Collaborator

The problem

CONTACT.email was hallo@evig.ch. evig.ch is not registered — no MX record, no A record — so every message a user sent there bounced.

That was the entire conversion path:

  • production has 213 live listings
  • online payment is deliberately unset (.env.selfhost.local.example: "leave unset until go-live"), so checkout shows "Bitte kontaktiere evig, wenn du sofort bezahlen möchtest" — pointing at the dead address
  • CONTACT.phone is '' — there is no phone line

A buyer ready to spend CHF 2,500 on the MacBook in the catalogue had no working way to reach the organisation.

The fix

butaeff@gmail.com — not the long-term brand address, the one that receives mail today. 21 surfaces read it from config (footer, contact page, Impressum, Datenschutz, AGB, CO₂ page…), so one line moves all of them. When evig.ch is registered and its mail is authenticated (Brevo SPF+DKIM), change that line back.

ORG.emailDomain deliberately stays evig.ch — it drives staff-email detection and the default sender, and is not where users write to. Repointing it at gmail would be wrong.

Second dead end, same class

api/auth/forgot-password hardcoded kontakt@revamp-it.ch in its failure message — shown precisely when mail delivery just failed, making that address the user's only remaining way back into their account. It now reads CONTACT.email.

The gate

contact-address-reachable.test.ts holds both rules:

  1. don't publish an address on a domain that receives no mail
  2. don't type a contact address inline — that's how the reset message drifted

Proven by mutation: reverting the domain fails 2 assertions; reintroducing the inline address fails 1. It strips comments first, so prose explaining the rule doesn't trip it — a gate that fails on its own documentation just teaches people to delete the documentation.

Verification

lint, umlaut, card-shell, docs-path and compliance gates green · typecheck clean · 7843 tests

🤖 Generated with Claude Code

CONTACT.email was hallo@evig.ch. evig.ch is not registered — it publishes
no MX and no A record — so every message a user sent there bounced.

That was the whole conversion path. Production has 213 live listings,
online payment is deliberately unset (.env.selfhost.local.example:
'leave unset until go-live'), so checkout shows 'Bitte kontaktiere evig,
wenn du sofort bezahlen möchtest' — pointing at the dead address. There
is no phone either (CONTACT.phone is ''). A buyer holding CHF 2500 had no
working way to reach the organisation.

Now butaeff@gmail.com: not the long-term brand address, the one that
works today. 21 surfaces read it from config — footer, contact page,
Impressum, Datenschutz, AGB — so one line moves all of them. When evig.ch
is registered and authenticated (Brevo SPF+DKIM), change that line back.

ORG.emailDomain deliberately stays evig.ch: it drives staff-email
detection and the default sender, and is not where users write to.

Also fixed the second dead end: the password-reset failure message
hardcoded kontakt@revamp-it.ch — shown precisely WHEN mail delivery just
failed, so that address is the user's only way back in. It now reads
CONTACT.email.

contact-address-reachable.test.ts holds both rules: no publishing on a
domain that receives no mail, and no contact address typed inline.
Proven by mutation — reverting the domain fails 2 assertions, restoring
the inline address fails 1. It strips comments first, so prose explaining
the rule does not trip it.

Verified: lint, umlauts, chrome, docs, compliance, typecheck, 7843 tests.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actions
github-actions Bot merged commit 9ea06c3 into main Aug 25, 2026
9 checks passed
@github-actions
github-actions Bot deleted the fix/contact-email branch August 25, 2026 11:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant