@suluk/email - v0.2.0
    Preparing search index...

    Interface AudienceContact

    Audience-sync (saastarter-parity Phase 3). The newsletter signup stores a subscriber (the MARKETING module's Newsletter entity) AND mirrors it to the email provider's AUDIENCE/list (saastarter POSTs to Resend /audiences/{id}/contacts, src/app/api/newsletter/route.ts:35-41). This is that mirror as a swappable binding: a duck-typed AudienceProvider (consoleAudience for dev; a Workers-safe resendAudience over the REST API, no SDK)

    • a syncNewsletter reconciler that drives the audience from the Newsletter rows (subscribed → upsert, unsubscribed → remove). Content the app SENDS to a provider — never a hosted list.
    interface AudienceContact {
        email: string;
        firstName?: string;
        lastName?: string;
        unsubscribed?: boolean;
    }
    Index

    Properties

    email: string
    firstName?: string
    lastName?: string
    unsubscribed?: boolean