Contact detail page: view, edit, delete, custom data, external ID #32

Closed
opened 2026-10-15 01:18:35 -04:00 by vmanne-poc · 0 comments
Owner

Today: a contact can be added (email and first name only) or unsubscribed. It can't be opened, edited or deleted. Custom data can only be set by import, and the event history is stored but not shown.

Plan

  • API:
    • GET, PATCH and DELETE /projects/:id/contacts/:cid
    • create and update accept firstName, lastName, data (a JSON object with a size limit) and externalId
  • New field Contact.externalId, unique per project when set. It lets an outside system update a contact even after the email changes. Import and the API can match on it. This needs a migration.
  • New contact and Edit contact pages:
    • email, first and last name
    • custom data as an editor that checks the JSON
    • external ID
    • status shown (read-only, except resubscribe through opt-in)
  • Contact detail page:
    • fields and dates (added, subscribed, unsubscribed)
    • the activity timeline from ContactEvent (sign-up, opens, clicks, unsubscribe, bounce, complaint)
    • the campaigns the contact received
  • Deleting a contact asks for confirmation. Their messages stay for reporting (contactId is set to null).
**Today:** a contact can be added (email and first name only) or unsubscribed. It can't be opened, edited or deleted. Custom data can only be set by import, and the event history is stored but not shown. **Plan** - API: - `GET`, `PATCH` and `DELETE /projects/:id/contacts/:cid` - create and update accept `firstName`, `lastName`, `data` (a JSON object with a size limit) and `externalId` - New field `Contact.externalId`, unique per project when set. It lets an outside system update a contact even after the email changes. Import and the API can match on it. This needs a migration. - **New contact** and **Edit contact** pages: - email, first and last name - custom data as an editor that checks the JSON - external ID - status shown (read-only, except resubscribe through opt-in) - **Contact detail** page: - fields and dates (added, subscribed, unsubscribed) - the activity timeline from `ContactEvent` (sign-up, opens, clicks, unsubscribe, bounce, complaint) - the campaigns the contact received - Deleting a contact asks for confirmation. Their messages stay for reporting (`contactId` is set to null).
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
vmanne-poc/Postak#32
No description provided.