Attribute the enquiry, not only the customer card. When campaign-specific aliases land in one inbox, store the original To: address → channel on each enquiry row; summarize first-touch on the customer.

(Diagram: alias → enquiry keeps channel → customer summarizes.)
Suggested shape
1. Alias map (optional) — ads-a@… → channel “Ads A”.
2. Enquiries (one row per email / inbound) — original recipient, channel, from-address, snippet, time, link to customer.
3. Customers — one person one row; first-touch source from the earliest enquiry; optional latest-touch.
If the same person writes via another alias later: add a new enquiry with the new channel; don’t create a second customer. First-touch stays stable; latest-touch may update.
How to verify
- Two test mails to two aliases → two enquiry channels; same from-address → one customer.
- Customer first-touch equals the earliest enquiry’s channel.
Boundaries
- Overwriting a single customer “source” field erases history.
- New customer per email inflates lead counts.
- If the alias never hits the enquiry row, attribution is gone.
Keep source on the touch; keep identity on the customer.

(Local demo: keep original recipient + channel on the enquiry.)
Prompt you can give an agent
For each new inbound mail, map To: via the alias table to a channel, upsert the customer by from-address (no duplicate customers), write an enquiry with original recipient + channel, set latest-touch, and set first-touch only when empty.
Aliases can change; the enquiry row keeps the proof.