Integrations
Orchard connects to external services — payments, email, shipping, support — on a per-tenant basis. Each store supplies its own credentials, so each store’s money, mail, and shipping run on its own accounts.
The model
- Per-tenant credentials. Every integration’s keys belong to one tenant. They are stored encrypted in Orchard’s credential vault, decrypted only at the moment of use, and never logged or returned by the API.
- Configured in the admin. A store owner adds and manages integrations under the top-level Integrations area of the admin — you (the developer) generally don’t touch these; you build against the behavior they enable.
- Test vs live. Each integration has test and live credentials, matching the test/live split of your API keys.
Stripe (payments)
Payments run through the tenant’s own Stripe account — Orchard orchestrates checkout and records orders, but funds settle to the tenant, and Orchard never custodies money or touches card data.
directmode is the working path today: the tenant pastes their own Stripe secret/publishable keys. You callPOST /api/v1/checkout/sessionsand get a hosted Stripe Checkout URL — the same call whether the cart is one-time or a subscription.connectmode exists as a setup option in the admin but isn’t wired to a working checkout path yet — see the Stripe guide before building against it.- Stripe → Orchard events arrive at
/api/webhooks/stripe/{tenant_slug}and are verified with Stripe’s own signature. This is internal to Orchard — it is not the same as the outbound webhooks Orchard sends to you. - You never see card numbers. Card entry happens on Stripe-hosted Checkout (PCI SAQ A — see Security & compliance).
- Full setup walkthrough: Stripe integration guide.
Transactional and marketing email (order confirmations, shipment notices, etc.)
send from the tenant’s own Resend account and domain, so messages come from
the store’s brand, not Orchard’s. This is operator-configured; from your side, the
relevant signal is the order.paid webhook if you want to trigger
your own messaging in parallel. Full setup walkthrough:
Resend integration guide.
Shipping
Fulfillment (rates, labels, tracking) is wired to the tenant’s own EasyPost account. Standard parcel shipping is supported out of the box; heavy/freight (LTL) shipping is planned but not available yet — talk to the operator if your catalog needs it. Full setup walkthrough: EasyPost integration guide.
Support and other services
Stores can also connect support tooling — Help Scout has a working customer
sidebar today (see the Help Scout guide);
other support and marketing/CMS connectors are installable from the marketplace
but vary in how deep the integration goes. These are operator-configured and
don’t change your /api/v1 integration.
What this means for you
You build against one surface — /api/v1 and webhooks — and the
per-tenant integrations are resolved behind it automatically based on your API
key’s tenant. You don’t pass provider credentials or pick a Stripe mode; Orchard
does that from the tenant’s configuration.
Setting them up
If you’re the store owner configuring these, see the User Guides → Settings for the click-by-click.