Access is invite-only during beta. Once invited, create a key to personalize these examples. Production sending requires a separate review.
Send emails with Convex
Install the Convex component and call sendEmail from a mutation.
PostShiba is a Convex component. Enqueue mail from a mutation and it commits with your transaction. The component owns delivery after that.
clusterId is required. This client posts to POST /api/v1/teams/:teamId/clusters/:clusterId/sends.
Node 18 or later. Open pull requests on postshiba/sdks.
Register the component in convex/convex.config.ts:
Options fall back to POSTSHIBA_API_KEY, POSTSHIBA_TEAM_ID, POSTSHIBA_CLUSTER_ID, and POSTSHIBA_WEBHOOK_SECRET. testMode defaults to true. Every recipient must then sit inside testDomains (default inbound.postshiba.com). Set testMode: false to send to real addresses.
Use priority: "bulk" for newsletters. Default is transactional.
Webhooks
Route PostShiba webhooks to the component:
HMAC-SHA256 of {timestamp}.{rawBody} against X-Capsule-Signature with a sha256= prefix. X-Capsule-Timestamp must be within 300 seconds.
Errors and throttling
Failed responses throw PostShibaHttpError with status, code, and retryable.
A 429 with error throttled means the cluster hit its hourly throttle or its 24-hour cap. This component retries with backoff because it owns the queue. Set hourlyLimit under your cluster hourly throttle.
See Errors.