• Blog
  • Docs
  • Pricing
  • We’re hiring!
Log inSign up
petermillspaugh

petermillspaugh

docs

markdown docs site
Public
Like
docs
Home
Code
6
components
4
images
1
pages
6
styles
1
README.md
H
index.tsx
Branches
1
Pull requests
Remixes
History
Environment variables
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Sign up now
Code
/
pages
/
guides
/
in-val-out.md
Code
/
pages
/
guides
/
in-val-out.md
Search
10/16/2025
in-val-out.md
title:
In, Val, Out
description:
Manage input (like user signups) and automate output (e.g., Slack messages)

A common pattern in Val Town is what we call In, Val, Out, or Input/Val/Output (I/V/O). You have data coming in, and you want to do something with it then output something. For example:

  1. Webhook received from Supabase when a user signs up
  2. Enrich the user data with Clay
  3. Send your team a Slack notification

There's a combinatorial explosion of possibilities, so we've listed some examples and ideas. Feel free to add new use cases, or ask us to lend a hand—we're happy to help.

Input

Messages, email:

  • Email: Handle received emails
  • Gmail: Handle forwarded emails from Gmail
  • Slack bot: Handle incoming Slack messages
  • Discord bot: Handle incoming Discord messages
  • Telegram bot: Handle incoming Telegram messages

Events:

  • GitHub webhooks: Receive GitHub webhooks for issues, stars, PRs, etc.
  • Supabase webhooks: Handle Supabase webhooks for inserts, updates, and deletes
  • Stripe webhooks: Handle Stripe webhooks, e.g., orders, refunds, etc.
  • HTML forms: Send HTML form data in a POST request

You can hook up any tool in your stack as long as it can send data to your val's HTTP endpoint or email. That might be data from Clerk, Vercel, Linear, Sentry, Cal.com, Shopify, PostHog, Cloudflare, Google Forms, Typeform, or anywhere else—just send it to a val.

Val

AI enrichment, browser automation:

  • std/openai: Prompt an OpenAI model
  • Clay: Enrich user data with Clay
  • Browserbase: Search the web with Browserbase
  • Browserless: Search the web with Browserless
  • Kernel: Search the web with Kernel
  • Steel: Search the web with Steel

You can also call your LLM of choice, like Claude, or run arbitrary enrichment and analysis using other tools, like Exa.

Output

Notifications:

  • Email: Send email directly from a val
  • Slack: Send a Slack message to your team
  • Discord: Ping yourself in a Discord server
  • Telegram: Send a telegram message

Whether you use Resend, Loops, Twilio, or some other platform, as long as it has an API you can use it in Val Town.

Persistence:

  • std/sqlite: Store in Val Town's built-in SQLite
  • std/blob: Persist to Val Town blob storage
  • Google Sheets: Write to a spreadsheet
  • Airtable: Update your Airtable with new data
  • Neon: Write to your Neon Postgres database
  • PlanetScale: Write to your PlanetScale db
  • Supabase: Write to your Supabase db
  • Upstash: Write to your Upstash db
  • AWS S3: Upload to an S3 bucket

You can of course store your data in Cloudflare R2, Notion, or any other database or CRM. Let us know if you'd like help with your use case, and we'll continue to add examples to this docs page.

FeaturesVersion controlCode intelligenceCLIMCP
Use cases
TeamsAI agentsSlackGTM
DocsShowcaseTemplatesNewestTrendingAPI examplesNPM packages
PricingNewsletterBlogAboutCareers
We’re hiring!
Brandhi@val.townStatus
X (Twitter)
Discord community
GitHub discussions
YouTube channel
Bluesky
Open Source Pledge
Terms of usePrivacy policyAbuse contact
© 2025 Val Town, Inc.