Bring your own stack

11 adapter slots. 50+ providers.

Every external service CliniManage talks to lives behind an adapter. Pick the provider that fits your existing tooling — swap with a single config change. No lock-in. No "migration story" for you to figure out.

11 adapter domains

One contract per domain. Multiple providers per slot.

Payments

Stripe (default, with Stripe Connect for per-tenant accounts), Square, GoCardless, none (cash-only). Application-fee config per tenant.

Email

MailerLite (default), Mailchimp, SendGrid, Resend, Postmark. Transactional + draft-campaign + subscriber-upsert all behind one contract.

Bookings

Setmore (default), Cliniko, Semble, Google Calendar, none. Slot listing + appointment creation behind a uniform interface.

Accounting

Xero (default, OAuth + Profit/Loss feed), QuickBooks, Sage, FreeAgent. Receivables + journals + invoices.

Payroll

BrightPay-link (default, deliberately outbound-only). Future: Xero Payroll, Sage Payroll, Moorepay.

Identity

Netlify Identity (default), Auth0, Cognito, Entra ID with NHS Smartcard integration. Same getUser contract regardless of provider.

LLM

Anthropic Claude Opus 4.7 (default), OpenAI, Azure OpenAI, local Ollama. Per-tenant model override. Used by the Compliance Copilot + DoC letter drafter.

ATS

Indeed XML feed (default), LinkedIn Recruiter, NHS Jobs, Workable, Greenhouse. Inbound application parsing + vacancy publishing.

Storage

Netlify Blobs (default), S3, GCS, Azure Blob. Per-tenant data residency configurable per object.

Reviews

Doctify (default), Google Business, Trustpilot, Working Feedback. Recent reviews + rating + aggregation.

Registrations

UK regulators built-in: GMC, NMC, HCPC, GDC, GPhC, GOsC. Daily sync, status-change alerts, CQC evidence emission on transitions.

Patient records

In-house lite (default), EMIS, SystmOne, Cliniko, Medesk. We don't replace your PMS — we connect to it.

Build your own

Open SDK. One hour to a new adapter.

Every adapter contract is documented at /docs/adapter-sdk with required + optional functions per domain, plus a complete worked example for a new email adapter (Mailchimp).

Validated on register

The registry validates your adapter against the contract on registration. Missing required function = boot-time error, not first-request error.

Per-tenant config

Tenant chooses the provider via a single field. The platform routes through whichever adapter is registered. Zero call-site changes.

Capability flags

Adapter declares its capabilities. Endpoints check the capability before calling — e.g. "tenant email provider doesn't support campaigns" is a friendly 400, not a runtime crash.

Marketplace coming Q4

Until the marketplace ships, third-party adapters contribute via PR against the main repo. SDK + reference adapters live on GitHub.

The stack is yours.

Bring whatever you already pay for. Switch when you want to. We hold the compliance layer + the orchestration.