Latest release: v0.11.0

Changelog

Every release of the engine, CLI, Studio, and providers. Upgrading is pnpm up "@hogsend/*" — never a fork merge.

v0.11.0

CLI-first Studio auth

  • Public Studio sign-up is closed: there is no unauthenticated network path that creates a user.
  • First admin via hogsend studio admin create (new CLI command, with reset and list) or env bootstrap (STUDIO_ADMIN_EMAIL / STUDIO_ADMIN_PASSWORD) on a zero-user database.
  • Self-service password reset, wired through the engine mailer; tokens are single-use with a 15-minute TTL.
  • Auth rate limiting is now shared across replicas via Redis.

Upgrade: pnpm up "@hogsend/*". If your Studio admin already exists, nothing changes; new deploys set STUDIO_ADMIN_EMAIL or run the CLI once.

v0.10.0

Bring your own email provider

  • Provider-neutral EmailEvent webhook contract and an HTML-only send wire: the EmailProvider is now a dumb wire, and rendering, preferences, first-party tracking, and the send log stay engine-owned — so everything survives a provider swap.
  • New opt-in @hogsend/plugin-postmark: swap with EMAIL_PROVIDER=postmark. Resend stays the default.
  • Bounce normalization: auto-suppression now fires only on permanent bounces; transient bounces are recorded without suppressing.
  • Provider-native open/click tracking is forced off where possible — first-party tracking is the source of truth.

Upgrade: Postmark deploys need POSTMARK_SERVER_TOKEN; Resend deploys change nothing.

v0.9.0

Outbound destinations

  • The durable outbound webhook spine becomes a fan-out engine: defineDestination() plus shipped presets for PostHog, Segment, and Slack alongside signed Standard-Webhooks.
  • Every delivery reuses the same retry/backoff/dead-letter machinery.
  • ENABLE_POSTHOG_DESTINATION auto-seeds a PostHog endpoint on the email funnel so the full lifecycle fans out durably.
  • Breaking: ctx.posthog.capture and ctx.identify were removed from the journey context — PostHog is now one destination among many; the context keeps only vendor-neutral orchestration primitives.

Upgrade note: open/click events now emit per hit (not first-touch only) — size webhook consumers accordingly.

v0.8.0

Outbound webhooks + inbound presets

  • Signed outbound webhook stream: managed endpoints, per-endpoint retry/backoff, dead-letter queue, and a reaper that re-drives due retries.
  • Inbound integration presets for Clerk, Supabase, Stripe, and Segment — set the secret env var and the signature-verified route auto-enables.
  • hogsend webhooks CLI command and verifyHogsendWebhook in the client.
v0.7.0

The front door: Data API + client SDK

  • Public /v1 data plane: contacts, events, transactional emails, lists, and campaigns behind an hsk_ API key.
  • New @hogsend/client typed SDK over the data plane.
  • Identity gains email/anonymous keys with a real merge/alias resolver.
  • Lists are code-defined over the preference store; campaigns are durable, idempotent, preference-checked broadcasts.
Stay on the line

Start on the latest release

One scaffold command pulls v0.11.0; one pnpm up keeps you current. Your journeys live in your repo, so an upgrade is a dependency bump — never a fork merge.

Free to self-host · One scaffold command · No per-contact billing

pnpm dlx create-hogsend@latest my-app