Audiences and subscriber lifecycle

Build waitlists, newsletters, release lists, and preference centers with explicit consent, segmentation, confirmation, and delivery boundaries.

Supported approaches

Subscription lifecycle

available

Expose rate-limitable subscribe, double-opt-in confirmation, unsubscribe, and preference flows without leaking signed tokens.

Packages

@playstack/audiences@playstack/audiences-react@playstack/nest-audiences

Frameworks and integrations

Consent and preferences

available

Retain consent evidence and model list membership as an independent edge that can be removed, restored, and audited.

Segmentation

available

Evaluate application-owned tags and segment plans without placing business data or provider query languages in the core model.

Frameworks and integrations

Broadcast delivery

available

Resolve recipients into suppression-aware queued sends while keeping audience authority separate from delivery providers.

Frameworks and integrations

framework

React

Headless domain bindings plus optional Chakra application and admin compositions, with server authority kept outside the client.

framework

Next.js

Compose Playstack server contracts, React bindings, SSR handoff, and route adapters at the Next.js application edge.

framework

NestJS

Connect portable Playstack capabilities to dependency injection, guards, decorators, request context, workers, and lifecycle hooks.

integration

BullMQ

Dispatch and process typed Playstack jobs through BullMQ with explicit Redis ownership and native queue access.

integration

Inngest

Dispatch portable Playstack queue jobs through Inngest and serve the generated functions from Next.js, NestJS, or another supported framework.

integration

Amazon SES

Deliver rendered messages and SES templates through an application-configured AWS SDK client.

integration

Mailgun

Deliver rendered messages or stored Mailgun templates through an explicit regional provider client.

integration

Postmark

Deliver rendered Playstack mail or Postmark provider templates through an explicit driver and native client escape hatch.

integration

Resend

Deliver transactional mail and synchronize consent-aware audience contacts through explicit Resend adapters.

integration

SendGrid

Deliver rendered messages and dynamic templates through an isolated SendGrid mail client.

integration

SMTP

Deliver portable rendered email through an application-configured Nodemailer transport.

integration

Prisma

Persist Playstack capabilities through explicit application-owned Prisma clients, transactions, and managed schema fragments.

Package reference

@playstack/audiences

Name the audience, not one output format

A launch waitlist, changelog list, customer newsletter, and product announcement audience share the same subscription lifecycle. The application decides what each list means; Playstack supplies portable membership, consent, token, preference, and delivery seams.

Compose a public subscription flow

ts
import { createAudiences } from '@playstack/audiences'

export const audiences = createAudiences({
  persistence,
  tokens,
  emailNormalizer,
  abuseGate,
  delivery,
  events,
  clock,
})

await audiences.subscribe('launch-list', {
  email: input.email,
  consent: {
    source: 'homepage',
    recordedAt: Date.now(),
  },
})

The public Nest controller returns a uniform result and never exposes the confirmation token. The application passes that trusted token to its queued confirmation notification.

Keep local and remote authority honest

A local audience updates inside the application's transaction. A provider-owned audience is eventually consistent through an outbox command and remains pending until the provider confirms it. The package never pretends an external API participated in the database transaction.

Deliver through the shared gate

Audience expansion resolves subscription edges into recipient references, then hands sends to the delivery layer. Suppressions, bounces, complaints, and provider history stay shared with transactional messages without allowing a marketing send to reuse transactional reputation accidentally.

Go

Playstack Pro tag
OriginsPricingBlogNewsletterChangelogStatusRoadmap
ContributorsCommunityIn Use ShowcaseCase StudiesPartnersSponsors
FAQsSupportContact

© 2026 Playstack. All rights reserved.

With OSS
Terms of ServicePrivacy PolicyCookie PolicyImprint

By

Commune Software