---
name: bijection-email
description: "Evaluate and integrate the Email component with Bijection."
---

# Email

Durable, transport-agnostic outbound transactional email queue — enqueue, retry, idempotent send, and per-message delivery status as a Bijection component

- Package: @bijectionhq/email
- Category: Messaging
- Status: Reference
- License: MIT
- Bijection source (repository access required): https://github.com/bijectionhq/email/tree/4bd39035b59931103119dfe33f0da63f9d808d18
- Upstream: https://github.com/vllnt/convex-email/tree/904430f4615f8489ba57b8e6878c57bb020f8943
- Documentation: https://docs.bijection.com/components/using
- Directory: https://bijection.com/components/email

## Get the source

Bijection repository access is required. Request access at https://bijection.com/contact.

```sh
git clone https://github.com/bijectionhq/email.git
cd email
git checkout 4bd39035b59931103119dfe33f0da63f9d808d18
```

## Before using this component

Read the package README at the recorded revision for setup, dependencies, and API examples. Upstream documentation describes the original package and may differ from the Bijection adaptation. This is a source candidate for evaluation. Catalog inclusion does not establish npm availability or runtime qualification. Check compatibility with your SDK and deployment before adoption. External providers run their own compute.

## Integration workflow

1. Read the source README and package manifest at the recorded revision.
2. Confirm the required SDK, dependency availability, and runtime compatibility.
3. Follow the component's documented setup and configuration. Never invent an npm install command from a catalog package name.
4. Keep credentials in the project's existing secret store.
5. Follow the project's execution rules for verification and report what was actually checked.

## Original upstream skill

The following guidance describes @vllnt/convex-email. Its installation commands and APIs refer to the upstream package. Evaluate compatibility with the Bijection source separately.


> Agents: read this skill fully before writing code that uses Email Queue. Follow the installation and configuration steps exactly.

# Email Queue

## Instructions

@vllnt/convex-email stores outbound messages and their delivery lifecycle in Convex. Your application sends through its chosen transport and reports the outcome, giving your product one place to read queued, sending, sent, or failed state.

enqueue stores a message with an optional deduplication key. Your worker claims it with markSending, calls the provider, and reports markSent or markFailed. Failure handling observes a retry budget. Optional SMTP and JMAP adapters support host-side delivery.

The component does not contact a provider or schedule your sender by itself. Your host owns authentication, recipient policy, templates, credentials, and retry scheduling. Deduplicated enqueue does not guarantee exactly-once external delivery when a provider response is uncertain.

Maintained by [bntvllnt](https://bntvllnt.com) at [VLLNT](https://vllnt.com). Find the author on [GitHub](https://github.com/bntvllnt) and [X](https://x.com/bntvllnt).

### Installation

```bash
npm install @vllnt/convex-email
```

Current npm version: `@vllnt/convex-email@0.1.0`

## Use cases

- SaaS onboarding: queue welcome messages or account invitations.
- Commerce and mobile products: track receipt or confirmation emails after a verified event.
- Learning apps: deliver course notifications or activity summaries.
- Operational tools: expose email status for support and failed-delivery handling.

## How it works

enqueue stores a message with an optional deduplication key. Your worker claims it with markSending, calls the provider, and reports markSent or markFailed. Failure handling observes a retry budget. Optional SMTP and JMAP adapters support host-side delivery.

The component does not contact a provider or schedule your sender by itself. Your host owns authentication, recipient policy, templates, credentials, and retry scheduling. Deduplicated enqueue does not guarantee exactly-once external delivery when a provider response is uncertain.

## When NOT to use

- When a simpler built-in solution exists for your specific use case
- If you are not using Convex as your backend
- When the functionality provided by Email Queue is not needed

## Resources

- [npm package](https://www.npmjs.com/package/%40vllnt%2Fconvex-email)
- [GitHub repository](https://github.com/vllnt/convex-email)
- [Live demo](https://vllnt.com/)
- [Convex Components Directory](https://www.convex.dev/components/vllnt/convex-email)
- [Convex documentation](https://docs.convex.dev)