
- Member joins → welcome email
- Form submitted → confirmation sent
- Milestone reached → celebration email
Who this guide is for
- Replit developers shipping apps that need transactional email
- Vibe coders who want to ship notifications as fast as they ship features
- Anyone on Replit who wants polished, branded emails without the infrastructure
Why can’t I just ask Replit to build email?
You could. Ask Replit’s AI to send a welcome email when someone signs up. It’ll wire up an email provider and write the integration code. But then:- How do you preview that email with real user data before it goes out?
- How do you track who opened it? Who clicked?
- What happens when emails bounce?
- Are you setting up DKIM and SPF records for deliverability?
- What about retry logic when the provider has an outage?
- What about scheduled emails? Recurring digests? Drip sequences?
- After you’ve built a few workflows, how do you see how they’re all performing in one place?
- How do you iterate on email copy without redeploying?
Prerequisites
- A Replit app with one of the following:
- An external database like Supabase or Neon that you’ve explicitly connected (Replit doesn’t set these up by default; you would have prompted Replit to use one)
- A legacy Replit database created before December 4, 2025 (see below for details)
- 5 minutes
Does your Replit project have a compatible database?
Dreamlit needs direct database access to set up triggers and react to changes. Here’s how to check if your project is set up correctly.Using Supabase or another external database
If you’ve explicitly prompted Replit to connect your app to Supabase, Neon, Railway, or another external PostgreSQL database, you’re good to go. Skip ahead to Connect Dreamlit to your database.Using Replit’s built-in database
Replit offers a built-in PostgreSQL database, but its accessibility depends on when you created it.- Created before Dec 4, 2025
- Created after Dec 4, 2025
DATABASE_URL environment variable:- If it contains
neon.tech/neondb, you have the legacy database and can connect to Dreamlit - If it contains
helium/heliumdb, you have the newer restricted database (see next tab)
Connect Dreamlit to your database
- Legacy Replit Database (Neon)
- Supabase
- Other Postgres
Create a Dreamlit account
Get your connection string
DATABASE_URL. It should contain neon.tech/neondb.Example: Welcome email workflow
Let’s walk through creating a welcome email that sends when someone signs up.Step 1: Create the workflow in Dreamlit
Click Create Workflow and describe what you want:“Send a welcome email when a new user signs up”The AI generates everything: the database trigger, email template, and copy.

Step 2: Update your Replit app (if needed)
Here’s the key insight: Dreamlit securely connects to your database and reacts to changes, not your code. When a new row appears in yourusers table, Dreamlit sends the email automatically.
If your Replit app already creates user records on signup, you’re done. No code changes needed.
If you need to add a table for Dreamlit to use as a trigger, prompt your AI assistant:
“When a user signs up, add a row to the user_signups table with their email and name”
Or for something like order confirmations:
“When a user completes checkout, insert a row into the orders table with the order details”
Step 3: Preview and publish
Preview your email with real data from your database, then click Publish.Prompting your AI to work with Dreamlit
Dreamlit triggers emails based on database changes. When building in Replit, focus on getting data into your database. Dreamlit handles the rest. Good prompts:| You want… | Prompt with… |
|---|---|
| Welcome emails | ”Store new signups in a user_signups table” |
| Order confirmations | ”Insert order details into orders when checkout completes” |
| Comment notifications | ”Save comments to a comments table with the post_id and author” |
| Activity alerts | ”Log user actions to an activity table” |
More workflow ideas
Looking for inspiration? Check out our use cases for example prompts across welcome emails, order confirmations, reminders, internal alerts, and more.Send from your own domain
By default, emails send from Dreamlit’s domain. To send from your own domain (like[email protected]), you can set up a custom email domain in minutes.
Add your domain
mail.yourapp.com).Verify automatically

FAQ
Why can't Dreamlit connect to my Replit database?
Why can't Dreamlit connect to my Replit database?
How do I know if I have the legacy or new Replit database?
How do I know if I have the legacy or new Replit database?
DATABASE_URL environment variable in Replit Secrets:- Contains
neon.tech/neondb→ Legacy database (works with Dreamlit) - Contains
helium/heliumdb→ New database (needs external database)
Will Replit ever support external database connections?
Will Replit ever support external database connections?
Why aren't my emails sending?
Why aren't my emails sending?
- Is your workflow published? Saved workflows don’t run until you click Publish.
- Is the trigger table correct? Make sure it matches where your Replit app actually writes data.
- Is data being written? Check your database to confirm rows are being created.
- Try the preview. Use the preview to test with sample data and verify the workflow runs.
Do I need to change my Replit app code?
Do I need to change my Replit app code?
Will my emails keep working after I redeploy?
Will my emails keep working after I redeploy?
Can I send Slack notifications too?
Can I send Slack notifications too?
How do I test without emailing real users?
How do I test without emailing real users?
What if I'm already using Resend, SendGrid, or another email provider?
What if I'm already using Resend, SendGrid, or another email provider?
You’re all set
Describe what you want. Dreamlit builds it. Now go ship your next workflow.Supabase Auth emails
Email domain setup
Use cases
Get support
Appendix: Adding Supabase to your Replit app
If you need to add an external database, Supabase is the easiest option. Here’s how:Create a Supabase project
Add environment variables to Replit
SUPABASE_URL: Your Supabase project URLSUPABASE_ANON_KEY: Your Supabase anon/public keyDATABASE_URL: Your Supabase connection string (found in Project Settings → Database)
Update your app to use Supabase
“Replace the Replit database with Supabase. Use the SUPABASE_URL and SUPABASE_ANON_KEY environment variables.”Or if you prefer direct Postgres:
“Connect to Postgres using the DATABASE_URL environment variable instead of the Replit database.”
