| 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:
- Webhook received from Supabase when a user signs up
- Enrich the user data with Clay
- 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.
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.
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.
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.