Commit Graph

15 Commits

Author SHA1 Message Date
KM Koushik 62e0a1db88 feat: add contact-book variable registry for campaign personalization (#359)
* feat: add contact-book variable registry for campaign personalization

* test: include contact-book variables default in service expectation

* fix: address personalization review issues

* fix text

* fix: normalize contact variable access across contact flows

* stuff

* fix
2026-03-08 00:03:58 +11:00
Dave Stockley 7428a1fbfa feat: add contactBooks to sdk, add delete campaign public endpoint (#352)
* feat: add contactBooks to sdk, add delete campaign public endpoint

* fix: pr review notes

* refactor: pr feedback

* feat: bulk delete/create contacts

* refactor: rename a few methods for consistency

* refactor: update openapi docs based on pr feedback

* refactor: update open api docs, based on pr feedback

* fix: delete campaign security issue

* refactor: delete campaign requires team id (from context)

* fix: enums
2026-03-04 07:10:43 +11:00
KM Koushik e3e9635a5f feat: add customizable contact double opt-in flow (#350)
* feat: add customizable contact double opt-in flow

* test: add double opt-in service coverage

* fix: address review comments for double opt-in PR

- Make pending status conditional on doubleOptInEnabled flag
- Backfill legacy unsubscribeReason for reliable pending detection
- Add doubleOptInContent to contact book listing select
- Fix duplicate toast on DOI editor subject save failure
- Harden searchParams parsing against string[] values
- Make default DOI template use link mark for clickable URL
- Make public API create+update atomic via transaction
- Prevent contact upsert failure when DOI email send fails
- Fix empty string template variable replacement

Co-authored-by: opencode <opencode@anthropic.com>

* fix: harden double opt-in confirmation safeguards

Preserve explicit unsubscribe intent in DOI flows and prevent confirmation links from re-subscribing opted-out contacts. Also sanitize subscribe-page error messaging and use timing-safe hash comparison for link verification.

* ui stuff

* fix: require doubleOptInUrl in double opt-in templates

* feat: add configurable from address for double opt-in emails

* feat: add resend confirmation flow for pending contacts

* fix: move subscribe confirmation to explicit POST flow

* test: add contact book public API endpoint coverage

* docs: add double opt-in documentation and update OpenAPI spec

Add a user guide for the double opt-in feature covering setup, contact
statuses, email customization, template variables, and best practices.
Update the OpenAPI spec to include doubleOptIn fields in all contactBook
request/response schemas.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: opencode <opencode@anthropic.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 00:34:20 +11:00
KM Koushik 8676965019 feat: add webhooks (#334) 2026-01-18 20:50:54 +11:00
KM Koushik f40a311cc9 fix: enforce contact book ownership (#341) 2026-01-17 18:08:05 +11:00
KM Koushik 1e79f13bd4 add export contact book option (#318) 2025-12-14 10:08:54 +11:00
KM Koushik fd3c600b2e add upload contacts support (#314) 2025-12-13 08:15:42 +11:00
KM Koushik 159b15e37e queue bulk contacts (#273) 2025-10-12 06:18:04 +11:00
Vamsi Sai 1216b8085e fix: contact update mutation (#265) 2025-10-03 04:32:09 +10:00
KM Koushik 3f9094e95d feat: make billing better (#203) 2025-08-25 22:35:21 +10:00
KM Koushik 0fc27d8d7e auto unsubscribe on bounce and compaints (#117)
* auto unsubscribe on bounce and compaints

* console
2025-03-18 00:25:11 +11:00
KM Koushik 3111af51fc add search for contact book (#100) 2025-02-06 23:36:12 +11:00
KM Koushik d224be07a2 add contact search (#98) 2025-02-03 22:41:34 +11:00
KM Koushik b75b125981 add new design (#70)
* add new design stuff

* add more ui things

* add more ui changes

* more ui changes

* add more design

* update emoji
2024-09-28 20:48:26 +10:00
KM Koushik 5ddc0a7bb9 Add unsend campaign feature (#45)
* Add unsend email editor

Add email editor

Add more email editor

Add renderer partial

Add more marketing email features

* Add more campaign feature

* Add variables

* Getting there

* campaign is there mfs

* Add migration
2024-08-10 10:09:10 +10:00