
If your agent only listens on HTTP, it can only be triggered by things that already speak HTTP. That rules out a huge amount of real-world work — inbound email, user-submitted forms, scheduled runs, vendor notifications that only come as CSVs attached to email.
Hooksbase supports four ingest channels that all land in the same delivery pipeline. Here's when to reach for each.
1. HTTP (the obvious one)
Every webhook gets a public ingest URL like https://hooks.hooksbase.com/v1/ingest/:publicId authenticated with a bearer token. POST JSON, get a delivery ID, carry on.
When to use it: Machine-to-machine. Producer has a retry loop and can send the Hooksbase bearer token directly, or you put a tiny forwarder in front of Hooksbase to authenticate provider events first. Stripe, GitHub, Clerk, Slack, Resend, and your own internal services are all HTTP sources; the setup path depends on whether the source can attach the ingest secret.
Provider packs on Starter+ cover the supported sources: verify signatures after the Hooksbase ingest secret is accepted and before persistence, extract provider.sourceId and provider.eventType, answer Slack url_verification challenges inline. You get structured provider metadata on the delivery record without writing verification code.
2. Email (the underrated one)
Each webhook gets a stable address like hook_xxx@ingest.hooksbase.com. Send mail to it and Hooksbase parses the message with postal-mime into structured JSON:
{
"source": "email",
"from": "customer@example.com",
"to": "hook_abc@ingest.hooksbase.com",
"subject": "Subscription cancellation",
"messageId": "<message-id@example.com>",
"date": "2026-04-25T12:00:00.000Z",
"text": "...",
"html": "...",
"attachments": [
{ "filename": "invoice.pdf", "contentType": "application/pdf",
"size": 132041, "fileRef": { "key": "...", "url": "..." } }
],
"headers": { "message-id": "...", "date": "..." }
}
Attachments up to 15 MB each (50 MB per ingest) are persisted on paid tiers with signed download URLs. Free tier gets metadata only.
When to use it:
- Support agents that triage inbound customer email
- Invoice-parsing agents (receipt forwarded as email, agent extracts line items)
- RFP and lead-qualification agents (sales team forwards mail to the agent)
- Notification-handling agents (vendor alerts that only arrive as email)
Optional per-webhook sender allowlist supports exact addresses (vendor@stripe.com), domain wildcards (*@acme.com), and local-part wildcards (alerts@*).
3. Forms (the "let users trigger agents" one)
POST /v1/form/:publicId accepts application/x-www-form-urlencoded and multipart/form-data with full CORS support. GET /v1/form/:publicId serves a minimal embeddable HTML form if you don't want to build the UI yourself.
File uploads up to 15 MB each (50 MB per ingest) ride the same file-storage pipeline as email attachments — signed download URL plus persistent API retrieval key.
When to use it:
- Website forms that trigger a qualification agent
- Customer-support intake forms ("describe your issue, upload screenshot") that trigger a triage agent
- Internal dashboards where a teammate kicks off an agent run by filling a form
- Any case where a human pressing Submit should wake up an agent
4. Scheduled cron (the "wake up on a cadence" one)
On Starter+, configure one or more cron schedules per webhook with a custom JSON payload template. Hooksbase polls for due schedules every minute and fires through the normal ingest pipeline.
schedule: "0 9 * * 1-5" # weekdays at 9am UTC
payload: { "task": "daily-standup-summary" }
When to use it:
- Daily or hourly agent runs (summaries, health checks, pulse reports)
- Periodic catch-up agents that scan for work the event-driven flow might have missed
- Long-horizon agents that don't need a human trigger
One agent, multiple channels
The agent itself doesn't have to care which channel produced the event. Email, form, and scheduled payloads include a source field (email, form, or scheduled), and typed destinations receive a Hooksbase envelope with sourceChannel. For plain HTTP destinations, route or transform the payload if you want the downstream agent to see an explicit channel field.
That's the real win: one agent, one delivery pipeline, four ways in.