---
name: bijection-suppression
description: "Evaluate and integrate the Suppression component with Bijection."
---

# Suppression

Do-not-contact suppression list + opt-in proof (GDPR/CAN-SPAM), hash-keyed and channel-aware, as a Bijection component

- Package: @bijectionhq/suppression
- Category: Messaging
- Status: Preview
- License: MIT
- Bijection source (repository access required): https://github.com/bijectionhq/suppression/tree/b3b94194dfe96ed5b912895ead046738cee8069b
- Upstream: https://github.com/vllnt/convex-suppression/tree/d5294fae01d9deec19c89ab99a2414a1b8ddf949
- Documentation: https://docs.bijection.com/components/using
- Directory: https://bijection.com/components/suppression

## Get the source

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

```sh
git clone https://github.com/bijectionhq/suppression.git
cd suppression
git checkout b3b94194dfe96ed5b912895ead046738cee8069b
```

## 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-suppression. 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 Suppression List. Follow the installation and configuration steps exactly.

# Suppression List

## Instructions

@vllnt/convex-suppression stores do-not-contact decisions and opt-in evidence keyed by a contact hash supplied by your backend. A send eligibility check lets different outbound workflows consult the same suppression state.

suppress records a channel-specific or global decision. recordOptIn stores evidence for a list, and isEligible combines suppression with an optional opt-in requirement. Repeated writes update the same key rather than creating duplicate rows.

Your backend normalizes and hashes contacts, authorizes changes, and decides retention and messaging policy. Stored hashes and proof still need appropriate privacy handling. The component provides data and checks; it does not send messages or establish legal compliance by itself.

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-suppression
```

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

## Use cases

- Email products: block sends after an unsubscribe, bounce, or complaint.
- Mobile messaging: apply channel-specific suppression to SMS or push campaigns.
- Multi-provider systems: keep suppression decisions when changing delivery providers.
- Account erasure flows: retain an appropriate suppression record without depending on the deleted account row.

## How it works

suppress records a channel-specific or global decision. recordOptIn stores evidence for a list, and isEligible combines suppression with an optional opt-in requirement. Repeated writes update the same key rather than creating duplicate rows.

Your backend normalizes and hashes contacts, authorizes changes, and decides retention and messaging policy. Stored hashes and proof still need appropriate privacy handling. The component provides data and checks; it does not send messages or establish legal compliance by itself.

## 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 Suppression List is not needed

## Resources

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