title: | In, Val, Out |
---|---|
description: | I/O with a val in the middle |
pubDate: | 2025-10-02:00:00.000Z |
author: | Pete Millspaugh |
One of the most common patterns in Val Town is to take data input from some external source, do something useful with that data, and send output to another external source.
I/O but with a val in the middle: I/V/O. In, val, out.
The canonical example is a user signup alert in Slack:
- Receive a webhook when a user signs up (e.g., from Supabase)
- (Optionally) process or enrich user data in your val (e.g., with Clay)
- Notify your team on Slack
Remix this val to your liking. Maybe you use in-house auth or another provider like Auth0. Maybe you want to take the new user's email address and query for existing users from the same employer. Maybe you'd prefer a Discord notification or an email.
Regardless of the tools you use and the result you want, a val can flexibly handle it. The in-val-out pattern goes beyond new user alerts, of course. Dozens of examples are listed on the I/V/O docs, but the best examples will be the vals you create and use. Consider this a Call For Vals.
Input could be customer support email you receive, stars or new issues on your GitHub repo, failed payments from Stripe, user signups from Supabase, calendar invites, Sentry errors, form submissions—you name it.
Once you've piped input into a val, you could analyze or classify data with OpenAI or Anthropic, enrich it with browser automation via Browserbase or Kernel, verify phone numbers or emails with Twilio, process images and video, parse PDFs, or pipe data directly to an output channel.
After input and processing, you could notify yourself over email or Slack, create a Linear issue, open a GitHub PR, write to a Notion doc or Airtable, update a Google Sheet, persist data in SQLite or Supabase, or whatever else would be useful to you and your team.
--
Reach out to the Val Town team on Discord or over email if you'd like a hand setting up I/V/O, or feel free to open a docs PR linking to your val.