Summary: Formspark has a real form-CRUD API and excellent spam options, and its webhooks are explicitly unsigned. Postbag signs every webhook, records every delivery attempt, routes many forms into one schema, and runs as one container you can host yourself.
| Capability | Postbag | Formspark |
|---|---|---|
| Free tier | 5 forms, 1,000 submissions/month, 5 destinations, 90-day retention (paid plans not yet on sale) | 250 submissions, 10 forms (Formspark pricing) |
| Entry paid | Not yet on sale | One-time bundle: 50,000 submissions / 100 forms (currently $25) |
| Management API | Full /v1 API for every object (forms, schemas, streams, mappings, destinations, routes, deliveries, events), OpenAPI generated from the live routes | Yes: forms CRUD with scoped keys |
| Webhooks | Yes, HMAC-SHA256 signed (Postbag-Signature t=…,v1=…), retried with backoff, dead-lettered and retryable | Yes, unsigned ("Formspark does not currently sign webhook requests") |
| Yes (Resend), Reply-To from the submission | Yes | |
| Chat destinations | Telegram today; Slack and Discord next | Slack |
| Spam | Honeypot, per-form rate limit, origin allowlist, Cloudflare Turnstile; spam is stored and reversible, never dropped | OOPSpam, Botpoison, Turnstile, reCAPTCHA, hCaptcha, honeypot, spam words |
| File uploads | Not yet (text fields only; 256 KB) | Via Uploadcare |
| Self-hosting / source | Yes: one Docker image + Postgres, same image as the hosted product | No |
| Schemas and drift | Versioned, immutable form and stream schemas; observe / enforce / managed modes; drift detection and inference | No versioned schemas |
| Many sites → one destination | Projects, tags, streams (many forms → one schema → one destination), delivery windows, digests | Workspaces and team invites; per-form config |
| For AI agents | llms.txt, openapi.json, GET /v1/me, POST /v1/quickstart, _test submissions with delivery ids to poll, errors with hint + docs, Idempotency-Key, if_exists: return | No llms.txt, MCP or CLI found |
Formspark facts checked on against: formspark.io/pricing, API reference, Webhooks (unsigned). Prices and quotas change; verify on their pages. Tagline quoted: "a simple way to save information from your website via forms without having to set up a server".
Choose Formspark if
- You want a flat one-time price for a handful of simple forms.
- You need uploads or a wide choice of captcha providers right now.
Choose Postbag if
- Your downstream system must verify that a webhook really came from the form backend.
- You need retries you can see and replay, and a record of every attempt.
- Many forms should map onto one shape for one partner.
- Self-hosting or agent-driven setup matters.
What Postbag does differently, in one paragraph
Postbag treats a submission as a database row before anything else and delivery as an outbox drained by a worker, so every attempt is recorded and retryable and nothing is dropped, including spam. It adds streams, so many forms with different field names map onto one versioned schema and go to one partner or CRM with windows and digests. Every webhook is signed. The whole product is one API described by /openapi.json and /llms.txt, so an AI agent can create, verify and route a form without a browser. And it ships as one Docker image plus Postgres, so the hosted product and a self-hosted install are the same thing.