Caddi
Sign inSign up

Forms

A forms backend that fits the shape of agency work. One endpoint per project. Inbox in the dashboard. Direct R2 uploads. Replies that thread.

What you get

  • A per-project endpoint URL — paste it into NEXT_PUBLIC_CADDI_FORM_URL.
  • The @caddi/forms-sdk client (1.5kB).
  • An inbox at /forms/[project] with replies, exports, and webhooks.
  • Presigned R2 uploads for file attachments — no proxying through your server.
  • Per-form rate limits, honeypot, and idempotency.

The 60-second loop

ts
import { submit } from '@caddi/forms-sdk';

await submit({
  endpoint: process.env.NEXT_PUBLIC_CADDI_FORM_URL!,
  fields: { name, email, message },
});

The submission shows up in /forms/<project> within a second. Reply from there or via the API.

Pages in this section

Next

Getting started →