convex-dev-resend

Sends transactional emails from Convex using the Resend component with queueing and webhooks.

Updated Jul 3, 2026
One-click install
npx skills add https://github.com/alex-jordan547/agent-setup --skill convex-dev-resend-alex-jordan547
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: convex-dev-resend
Source: https://github.com/alex-jordan547/agent-setup/tree/main/archive/convex-dev-resend
Command: npx skills add https://github.com/alex-jordan547/agent-setup --skill convex-dev-resend-alex-jordan547

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires @convex-dev/resend.

What problem does it solve? Sending transactional email directly from Convex functions risks rate-limit violations, duplicate sends on retries, and no visibility into delivery status. This Skill wires the official @convex-dev/resend component so emails are queued, batched, retried idempotently, and tracked via webhooks. ## Core Features & Use Cases - Queued, batched sending: Send emails with resend.sendEmail(ctx, payload) from mutations and actions while respecting Resend rate limits. - Webhook-driven delivery tracking: Mount a /resend-webhook endpoint in convex/http.ts to record delivered, bounced, and opened events. - Idempotent retries and cleanup: Prevent duplicate emails on retries and purge old finalized emails with a scheduled cleanup cron. - Use Case: A SaaS app needs welcome emails on signup. Register the component in convex.config.ts, call sendEmail from an internal action, and monitor delivery status with resend.status(ctx, emailId). ## Quick Start Set up the Convex Resend component to send a welcome email from an internal action and track its delivery via webhook.

Frequently Asked Questions about convex-dev-resend

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I send emails from Convex with Resend?

Install @convex-dev/resend, register it in convex/convex.config.ts with app.use(resend), then instantiate Resend in a module and call resend.sendEmail(ctx, payload) from a mutation or action with from, to, subject, and html fields.

How do I track email delivery status in Convex?

Mount a POST route at /resend-webhook in convex/http.ts that calls resend.handleResendEventWebhook(ctx, req), and set RESEND_WEBHOOK_SECRET in the Convex deployment. Query delivery state with resend.status(ctx, emailId).

Does the Convex Resend component support attachments?

The standard sendEmail method follows Resend batch API constraints and does not cover attachments or niche options. Use sendEmailManually with the Resend SDK directly when you need attachments or custom features.

Why are my Resend emails not reaching real inboxes from Convex?

The component defaults to testMode: true, which blocks delivery to real recipients. Set testMode: false explicitly for production, verify your sender domain in the Resend dashboard, and confirm RESEND_API_KEY is valid.

Can I use React Email templates with Convex Resend?

Yes, but rendering React Email templates requires a Convex Node action marked with 'use node'; because the rendering depends on Node.js APIs. Pass the rendered HTML into sendEmail from that action.