It connects to your stack without becoming part of it.
Podium's core imports no vendor SDK and names no provider. Every integration is an adapter behind a narrow contract, so swapping Resend for SendGrid is an install and a default flag.
Adapters you can install today
- Resend
- SendGrid
- Slack
- Airtable
- Cloudflare Workers
Install it, name the secret, make it the default.
Each integration declares the settings it needs and one credential. You give Podium the name of a secret and it resolves it at call time, so the credential is never in the settings.
A misconfigured provider says so on this screen, with the provider's own error. It does not fail silently as four hundred acceptance emails go out.
One default per capability. Everything else is installed and idle until you point at it.

Six capabilities with an adapter you can install now.
The contract under each is the interesting part. Each is the smallest thing a provider could satisfy, so the widest set of providers can.
Put this rendered message on the wire, and tell us when it bounced. Templating, batching, quiet hours and suppression stay on our side.
Resend
Point it at a verified domain and every acceptance, reminder and campaign goes out through it. Bounces and complaints come back on a signed callback and land on the suppression list unwatched.
SendGrid
The same contract, a different provider. Swapping one for the other is an install and a default flag. No template, schedule or audit trail is rewritten.
Outbox only (no provider)
The default when nothing is installed. Every message is composed, rendered, recorded and never sent. It is how you rehearse an announcement to four hundred speakers.
Two-way sync
List tables, describe their columns, upsert by id, enumerate what changed. Six methods, none of which know what a proposal is.
Airtable
A live mirror of proposals, sessions, speakers and sponsors, in a base your AV contractor and sponsorship lead can open. Linked records, single-selects and attachments, not a wall of text.
Chat
Post this into that channel.
Slack
New submissions, decisions and publication into the committee channel. Nobody waits on someone remembering to tell them.
Assets
Hand back a presigned upload, a presigned download, a delete.
Object storage (R2)
Headshots, slides and recordings upload straight from the browser to your bucket. File bytes never pass through the application, so a 200 MB deck is not a request timeout.
First-pass review
Score this proposal against this rubric, and say why.
First-pass triage (local, no model)
Off unless you switch it on. Its opinions sit beside your reviewers', never inside them, and a machine score never contributes to quorum. The shipped evaluator calls no external model; the contract lets you point it at one you trust.
Ticketing
Is this workshop full? Nothing else.
Ticketing (local stub)
One method on purpose. Registration lives in your ticketing system and attendees are not modelled here. The one answer the schedule needs — has this workshop room left — is cached into the published snapshot, so a public page never calls your provider.
The spreadsheet your team keeps anyway, made live.
Organizers keep a spreadsheet regardless. It holds the columns this tool will never have — hotel booked?, swag size, legal cleared the recording— and it is open to sponsorship sales, the AV contractor and the volunteer coordinator. Today it is a stale copy somebody pasted in March.
Map a kind of record to a table and Podium mirrors it, with linked records, single selects and attachments. Every mapped field is pushed; only the ones you mark two-way come back.
When both sides moved, the inbound edit loses. It is not thrown away: it goes into a conflict queue showing both values, and Podium's value is re-pushed so the table converges.
Decisions, entitlements and the schedule are push-only and always will be. A dropdown in a spreadsheet must not be able to send four hundred rejections at 2 a.m.

You get this without installing anything.
136 named events, 22 API scopes, and a public schedule your CDN can cache. This part is not a plugin.
A REST API with scopes that mean something
Read and write are separate scopes, and personal data is a scope on top. A key for your marketing site reads the schedule and cannot read a review or a speaker's email. Keys are scoped to named events, expire, and are shown once.
Signed webhooks on every change
Every fact the platform records is published as a named event: a proposal accepted, a task completed, a schedule published. Each arrives signed, with retries and a dead-letter queue you can replay from.
An embeddable schedule your site can cache
The public schedule is an immutable, versioned snapshot. Your site embeds it, a CDN caches it, and it renders with scripts blocked. Nothing public reads your database.
Import that previews before it writes
Bring your speakers in from the tool you are leaving as CSV, and see what will be created, updated and rejected before a row is written. Everything goes back out as CSV, JSON or a ZIP of the files, under the permissions of whoever asked.
The caller might not be a person.
A conference team is increasingly one organizer and the agent they work through. The management surface is one versioned API, 193 endpoints with the agenda grid among them, built for a caller that retries and cannot ask what a field meant.
| What the API does | What that stops |
|---|---|
| Every write takes an idempotency key, stored and replayed for 24 hours | A retried call that books the room twice |
| Errors are typed and name the rule that was broken | A caller that reads a bare 400 and guesses |
| A write can carry the version it read; a stale one is refused with the current state | An agent overwriting the edit a human made while it was thinking |
| Read and write are separate scopes, and personal data is a scope on top | A schedule integration reading a speaker's phone number |
| Keys are scoped to named events and expire | One leaked key that reaches every event you have ever run |
| Named events arrive on a signed webhook, at least once | Polling, and the staleness that comes with it |
| The specification is a document a model can read | Guessing what an entitlement is |
There is no MCP server here and no OpenAPI document. Anything driving a running instance is driving HTTP, against the surface above and the model it was built from — a specification your own agent can read before it calls anything.
Podium is written by coding agents held to that specification, and the same machinery is what makes your own changes to it survivable. That argument is its own page.
Specified, with no adapter shipped.
The contracts exist and the install screen knows about them. Nobody has written the provider yet. They are listed so the catalogue above can be read as complete.
- Calendar — Push a speaker's session and tech check into their own calendar.
- CRM — Sponsor fulfilment visible to the sales side without a manual export.
- SSO — OIDC discovery, for organizations that want it for staff and reviewers.
- SMS — For the day-of messages that email is too slow for.
- Video — For the recording pipeline after the event.
