d59f4a10cd017c5395b93f848b0f71ded210d214
The previous coercion treated "1"/"0" as booleans for parity with the reserved `subscribed` column parser, but in custom columns those values are far more often counts, quantities, or ids than true/false flags. Coercing them to booleans hid the numeric segment-filter operators (`gt`, `lt`) for fields that semantically are numbers, and miscategorised them in `ContactService.getAvailableFields()` via `jsonb_typeof()`. Drop "1"/"0" from the truthy/falsy keyword sets in `coerceCustomValue`. With those entries gone the existing `NUMERIC_RE` branch picks both up unchanged (the pattern already matches single-digit `0` and `1`), so they land in `Contact.data` as JSON numbers. Boolean keyword coverage remains for `true`/`false`/`yes`/`no` (case-insensitive, trimmed). The reserved `subscribed` column parser at the top of the worker keeps its own inline keyword set and continues to accept "1"/"0" — that column is explicitly boolean by contract, so the asymmetry is intentional. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Plunk
The Open-Source Email Platform
Introduction
Transactional emails, marketing campaigns, and workflow automation — in one platform. Self-hostable, $0.001 per email, no contact limits.
An open-source, self-hosted alternative to tools SendGrid, Resend or Mailgun.
Features
- Transactional Emails: Send emails straight from your API with template support and variable substitution
- SMTP: Use Plunk as an SMTP relay to send emails from any existing tool or framework
- Campaigns: Send newsletters and product updates to large audiences
- Workflows: Create advanced automations with triggers, delays, and conditional logic
- Segments: Organize contacts with dynamic filtering and target the right audience
- Contact Management: Manage contacts with custom fields and full activity history
- Analytics: Track opens, clicks, bounces, and engagement metrics in real-time
- Custom Domains: Verify and send from your own domains with DKIM/SPF support
- Inbound Emails: Receive and process incoming emails with custom routing rules
Sponsors
Plunk is made possible by the support of our sponsors. If you self-host Plunk, consider supporting via GitHub Sponsors.
Self-hosting Plunk
The easiest way to self-host Plunk is by using the plunk Docker image.
You can pull the latest image from Github.
A complete guide on how to deploy Plunk can be found in the documentation.
Community
- Documentation: docs.useplunk.com
- Discord: useplunk.com/discord
Contributing
You are welcome to contribute to Plunk. You can find a guide on how to contribute in CONTRIBUTING.md.
License
AGPL-3.0 License - see LICENSE for details.
Languages
TypeScript
94.1%
MDX
4.7%
Shell
0.4%
Dockerfile
0.4%
CSS
0.2%
Other
0.2%