Ship inbox and calendar features without shipping your data.
Riposte runs inside your infrastructure to keep Gmail, Microsoft 365, and IMAP tenants in sync. Launch messaging and scheduling experiences on a unified schema with replayable webhooks and operator tools you already trust.
No shared multi-tenant store. No external vendor touches your content.
Own the data
Mail and calendar content never leaves your VPC. Credentials stay in your secrets manager and storage stays in your Postgres.
Operate on your terms
Tune cadence, retry budgets, and concurrency per tenant. Trigger partial replays without opening an engineering ticket.
Ship faster
Unified schemas, typed SDKs, and local emulators remove provider quirks so your team ships product, not glue code.
Integration lift measured in weeks, not quarters
Run Riposte alongside your stack using container tooling you already trust. The same team that builds your product can deploy, connect providers, and ship features inside a single sprint.
Provision Riposte in dev
Use Docker Compose or Helm to launch Riposte services, Postgres, and Redis inside your network.
- Download the deployment templates and pull signed container images.
- Wire Riposte to your Postgres and Redis instances or spin up ours from Terraform.
- Expose the admin portal behind your existing identity provider with SSO.
Connect providers & tenants
Register OAuth apps, rotate secrets through your vault, and onboard a pilot tenant with one command.
- Use riposte-cli to configure Gmail and Microsoft 365 OAuth with customer-managed credentials.
- Grant scoped service principals and validate consent via the hosted OAuth screen.
- Sync a sandbox tenant and monitor health from the portal.
Ship in-app experiences
Drop the SDKs and scheduler components into your product, then forward normalized webhooks into your queues.
- Embed Riposte’s React scheduler and OAuth button for customer onboarding.
- Stream message.created and event.updated into your existing workers.
- Run targeted backfills to migrate historic conversations before go-live.
Rollout diagram
Provision
Docker Compose / Helm
Connect
OAuth + secrets manager
Launch
SDKs + admin portal
Local quick start
Bash# Bootstrap Riposte locally
curl -O https://download.riposte.co/docker-compose.yml
docker compose --project-name riposte up -d
# Configure providers with your credentials
riposte-cli providers configure gmail \
--client-id $GMAIL_CLIENT_ID \
--client-secret $GMAIL_CLIENT_SECRET
riposte-cli providers configure microsoft365 --tenant-id $AZURE_TENANT
riposte-cli tenants create acme --providers gmail microsoft365
Patterns we see ship fastest
- Embed the OAuth button and scheduler widget directly inside your onboarding flow.
- Pipe normalized webhooks into your existing event bus or workflow engine.
- Backfill historical conversations by label before enabling two-way sync.
Day-two operations
- Delegate replay permissions to support with audit trails for every action.
- Set per-tenant sync cadence from configuration checked into Git.
- Export health metrics into Datadog, Honeycomb, or Prometheus alongside your app.
Polish for developer velocity
From SDKs to screencasts, Riposte meets your engineers where they already work so integration never stalls on tooling.
- Docker Compose bundle for local development and CI smoke tests.
- Admin portal and CLI both authenticated via your SSO.
- Environment templates for staging, canary, and production clusters.
TypeScript, Python, and Go SDKs
Generated from the same schema you deploy so models and webhooks stay in sync.
Three-minute integration walkthrough
Watch a sandbox tenant go live, from docker compose to sending the first webhook.
Docker & Kubernetes guides
Step-by-step docs for local Docker, ECS, and Helm-based deployments.
Platform modules at a glance
Pick the foundations you need today and add depth when the roadmap expands. Each module links to a deeper dive below.
Normalize provider payloads.
Stream deltas with retries.
Backfill exactly what you need.
Control budgets and avoid 429s.
Embed booking with your branding.
Give ops teams guardrails.
Forward events into your stack.
Trace every mailbox and job.
Unified data model
What it does
Normalizes provider payloads into clean shapes for Messages, Threads, Labels, Events, and Attendees.
Why it matters
Ship one integration that behaves the same for Gmail, Microsoft 365, and IMAP.
You control
Choose field projections, map IDs, and define label-to-folder behavior per tenant.
Real-time change delivery
What it does
Delivers webhook events for message and calendar changes with signed payloads, retries, and replay cursors.
Why it matters
Your product reacts instantly without polling or missing bursts.
You control
Filter subscriptions, tune retry budgets, rotate secrets, and replay from any checkpoint.
Historical syncs on demand
What it does
Backfills accounts by label, date range, or search query with resumable checkpoints.
Why it matters
Pull only what a rollout or migration needs without slowing other tenants.
You control
Set concurrency, checkpoints, and label filters from the admin portal or CLI.
Provider-aware request queuing
What it does
Schedules API calls per account with adaptive backoff to stay ahead of 429 and throttling limits.
Why it matters
Sync jobs stay healthy under load even when providers tighten rate windows.
You control
Define per-tenant budgets, concurrency caps, retry strategies, and dead-letter policies.
Queue holding 8 requests
Queue holding 3 requests
Queue holding 0 requests
Scheduler component
What it does
Ships a customizable booking UI that reads and writes availability through the same sync engine.
Why it matters
Offer scheduling in-product with your branding and policies.
You control
Set buffers, overrides, theming, and approval logic before opening slots.
Tooltip: Provider-aware queue is holding 8 requests to respect rate limits
Operations toolkit & admin portal
What it does
Gives support, success, and engineering a shared console for account health, credential rotation, and manual replays.
Why it matters
Resolve incidents without pagers or one-off scripts.
You control
Design roles, guardrails, and audit logs; expose only the surfaces your org needs.
Banner: Partial backfill running for 3,214 items
Health chip: Sync healthy
Extensible data pipelines
What it does
Routes normalized events into your queues, warehouses, or processors with transform hooks.
Why it matters
Keep your existing data stack while Riposte handles provider quirks.
You control
Choose sinks, batch sizes, transforms, and failure handling per destination.
pipeline.on('message.created', ({ record }) => {
queue.push('indexer', normalize(record));
});
pipeline.fanOut(['s3', 'bigquery'], { batch: 500 });
Observability & logging
What it does
Emits structured logs, metrics, and traces for every mailbox, job, and webhook delivery.
Why it matters
Know what happened, when, and why without guessing.
You control
Aggregate with OpenTelemetry, Datadog, Honeycomb, or keep everything local with custom sampling.
4,892 / min
+6.3%
1.8s
-0.4s
92% remaining
Healthy
Five steps from account connect to confident operations
A user links an account inside your product. Riposte finishes the provider handshake inside your boundary.
Minimal refresh material lives in your secrets manager. No middlemen or shared multi-tenant store.
Provider-aware queues run per-account jobs and write normalized records into your Postgres.
Webhooks stream mail and calendar deltas so your services update state in real time.
Operators monitor health, trigger replays, and launch partial backfills from the admin portal.
Banner: Partial backfill running for 3,214 items
Alert: Provider-aware queue is holding 8 requests to respect rate limits
Chip: Sync healthy
Run it inside your infrastructure
- Run on Kubernetes, ECS, or a VM you control.
- Bring your own Postgres or roll out the managed schema that ships with Riposte.
- Optionally pair with Redis, Pub/Sub, or SQS for queue backends.
Keep sovereignty and compliance
- Integrate with your secrets manager for key storage and rotation.
- TLS everywhere and encryption at rest stay on by default.
- All observability and payload data remain inside your boundary.
Common questions from teams evaluating Riposte
Still curious? Talk with an engineer and we'll walk through your architecture and timelines together.
Which providers are supported?
Riposte syncs Gmail, Microsoft 365, and IMAP-compatible sources for mail, plus Microsoft 365 and Google Calendar for events.
Can we backfill a subset only?
Yes. Use labels, date ranges, or search queries to scope partial backfills or run targeted replays for new launches.
How do you avoid 429s?
Per-account queues, adaptive backoff, and provider-aware budgets keep throughput high without tripping rate limits.
Can I skin the scheduler UI?
Absolutely. Every surface is themeable—bring your fonts, colors, availability logic, and microcopy.
Where do logs and metrics go?
Your choice. Forward to OpenTelemetry, Datadog, Honeycomb, or keep them local with your own retention windows.
Can my team run manual replays?
Yes. The operations toolkit exposes guarded replay and backfill flows with audit logs so ops can act without engineering.
Do we have to use your database schema?
No. Connect Riposte to your Postgres instance or deploy the managed schema that ships with the platform.
Ready to see Riposte in your stack?
Walk through deployment patterns, the data model, and how Riposte plugs into your observability and queues.