Hogsend is brand new.Try it
Hogsend
Integrations

Sources in, destinations out

Events flow in from signed webhooks, your own app, or any custom source, and fan back out to the tools you already run. PostHog is the default source; every other wire in and out is configuration.

Pick your stack

See the actual wiring

Select a source. Each snippet is the real setup — the URL, the header, the secret — condensed from its docs page. Most of these are one env var and a webhook form.

One command and one browser consent — hogsend connect posthog wires person reads and the webhook loop. The inbound source is still scaffold code you own.

Full guide →
# The scaffold asks "Are you using PostHog?" and writes
#   POSTHOG_API_KEY · POSTHOG_HOST · a minted webhook secret
#   — and enables the outbound PostHog destination.

# Once deployed, one command finishes the loop:
$ hogsend connect posthog

# One browser consent (OAuth, PKCE). The credential is stored
# encrypted server-side; person reads are wired (timezones,
# property conditions) and the PostHog → Hogsend webhook is
# provisioned for you — idempotent, adopts an existing one.

# Self-hosted PostHog, or no OAuth? Use a personal key
# scoped to person:read + project:read instead.
Sources — events in

Everything your users do, in one stream

One command connects PostHog; five signed-webhook presets auto-enable the moment you set their secret — no handler, no glue. Or send from your own code, or define a source of your own.

PostHog

One command after deploy. hogsend connect posthog opens a single browser consent, wires person reads, and provisions the PostHog → Hogsend webhook for you — or set the keys yourself if you prefer.

hogsend connect posthog

Stripe

Subscriptions, invoices, failed payments — verified Stripe events become journey triggers without writing a handler.

signed webhook · preset

Clerk

Sign-ups, sign-ins, and user changes arrive as verified events. Drop in the signing secret and the preset is live.

signed webhook · preset

Supabase

Database webhooks and auth hooks flow in as events you can trigger journeys on — verified the moment the secret is set.

signed webhook · preset

Segment

Pipe your existing Segment track calls in as a source. One secret enables the preset; every event is signature-checked.

signed webhook · preset

Intercom & Fin

Support conversations become lifecycle triggers — a Fin AI resolution, an escalation, a bad CSAT rating. Set the client secret and support.* events fire journeys, keyed to the same contact as their product activity.

signed webhook · preset

Your own app

Call the @hogsend/client SDK or POST /v1/events directly from your backend. Identify a contact and fire events from anywhere in your stack.

SDK · POST /v1/events

Anything else

Define a source in TypeScript with defineWebhookSource(): declare auth, validate with Zod, transform the payload, return an event.

defineWebhookSource()
Destinations — events out

Every send fans back out

The outbound event catalog — contact changes, email sends and opens, journey completions, bucket transitions — fans out to the tools you already run, reusing the engine's durable retry, backoff, and DLQ for free.

PostHog

Every email and lifecycle event fans back into PostHog as a captured event — so sends, opens, and journey state live next to product analytics.

preset

Segment

Forward the outbound event stream into Segment and let it fan out to the rest of your downstream tools from there.

preset

Slack

Post lifecycle moments — milestones, failed payments, churn signals — straight into a channel as they happen.

preset

A CRM

Sync contact and engagement events into your CRM so sales and success see the same lifecycle signals you act on.

defineDestination()

A warehouse

Land the raw outbound event stream in your warehouse for modelling, attribution, and reporting alongside the rest of your data.

defineDestination()

Any signed webhook

Define a destination in TypeScript with defineDestination(): pick the events, shape the request, and ship to any HMAC-signed endpoint.

defineDestination()
Get started

Wire up your first connector

Pick a preset, send from your app, or define your own source and destination in TypeScript.