Build a customer integration portal without building the portal
Customers want self-serve integration setup inside your app. Drop in Pushrail's embedded portal and ship the feature without writing the UI from scratch.
The problem
Every SaaS product reaches the point where 'configure your own integration' becomes table stakes. The customer's IT team wants to wire up the webhook URL themselves. The customer's data team wants to point your events at their warehouse. The customer's ops team wants to see why a delivery failed without filing a ticket. All of this needs a UI inside your product, and building that UI is six months of engineering work for a feature that isn't your core product.
The DIY path is a long one: design a destinations CRUD UI, build forms for every destination type your customers want, handle credential storage and encryption, render per-delivery logs, add replay, add health indicators, add audit logging, support theming so it doesn't look like a different app. Every component has edge cases. Every credential type has its own validation.
Most teams build a partial version, webhook URL plus an API key field, and ship it before the rest is ready. The integrations roadmap gets stuck there.
How Pushrail solves it
Pushrail ships an embedded customer portal as a drop-in React component. You issue a session token for the signed-in customer, render the component inside your dashboard, and the customer gets a fully-featured destinations UI: configure any destination type, view delivery logs, replay failures, set up routing rules, all scoped to their tenant.
Theming reads from your design system, so the portal looks like part of your app. Tenant and sub-tenant isolation is enforced at the API layer; a customer only sees their own destinations and their own logs, never another tenant's.
Engineering's job is to mount the component and refresh the session token. The rest, credential storage, encryption, audit logging, theming, accessibility, is handled.
What you ship to your customers
- A fully-featured integration portal inside your existing dashboard, with your colors and your typography.
- Customer-configurable destinations across all 18 destination types Pushrail supports.
- A delivery log scoped to the signed-in customer, they see what they're allowed to see.
- Customer-initiated replay for their own failed deliveries.
- Tenant isolation: a customer in one tenant can never see another tenant's data, even through the embed.
What this replaces
- Six months of UI engineering on a feature outside your core product.
- Custom credential storage with encryption-at-rest, rotation flows, and audit logging.
- A bespoke delivery log UI with filtering, pagination, and per-attempt detail.
- Per-destination form validation and connection-test code.
Concrete walkthrough
- 1. Sign up your tenant in Pushrail and create the customer accounts you want to expose.
- 2. In your dashboard's 'Integrations' section, mount the `<PushrailEmbed />` React component (npm package `@pushrail/embed-react`).
- 3. From your backend, issue a session token scoped to the signed-in customer using Pushrail's API.
- 4. Pass the token to the component as a prop. The component renders the destinations UI.
- 5. The customer configures a destination, views the live log, and replays failures, all without leaving your app.
Destinations this uses
HMAC-signed JSON POSTs with retries, replay, and a per-attempt audit trail.
Deliver events as NDJSON files into a customer-owned S3 bucket, batched, partitioned, and idempotent.
Stream events directly into a customer's BigQuery dataset, table per event type or single wide table.
Native Kafka producer with SASL/TLS, deliver events into a customer's topic with configurable partitioning.
Related use cases
Stream product events into your customers' BigQuery, Snowflake, or ClickHouse, same canonical event, different destination.
Let enterprise customers point your events at their own infrastructure, close the ACV-driving deals without bespoke engineering.
Stop building one-off CSV exports, let customers stream events into their own warehouse, lake, or queue.
Frequently asked questions
Do I have to build the integration UI myself?
No. Pushrail's embedded customer portal is a drop-in React component (the @pushrail/embed-react package). You mount it in your dashboard and refresh the session token; the destinations UI, credential forms, delivery logs, replay, and routing rules are all built in.
Will the portal match my product's look?
Yes. Theming reads from your design system, so the portal renders with your colors and typography and looks like part of your app rather than a separate tool.
How is one customer prevented from seeing another's data?
Tenant and sub-tenant isolation is enforced at the API layer. The session token binds to one customer, and a customer only ever sees their own destinations and logs, never another tenant's, even through the embed.
What destinations can customers configure in the portal?
All of the destination types Pushrail supports, webhooks, object storage, warehouses, queues, streams, databases, and analytics tools, each with its own credential and connection-test handling built in.
Build a customer integration portal without building the portal
Sandbox is open. No credit card.