You’re in flow with Cursor. AI writes your code, suggests fixes, keeps you moving. Then you need to add email, and suddenly you’re wiring up SMTP, hand-coding HTML templates, and debugging webhook payloads. Flow broken.Dreamlit brings the same AI-first approach to email. It securely connects to your Postgres database and reacts to data changes directly. Your app writes a row; Dreamlit sends the email. No SDK to install, no API calls to add to your codebase, no deployment changes. It works with any Postgres provider (Supabase, Neon, Railway, Render, RDS, or self-hosted), so it fits whatever stack Cursor helped you build.
The AI generates a starting point, but you can refine it:
Hover to edit: Hover over any text in the email preview and click to edit inline. Change headlines, body copy, or button text directly.
Brand styles: Go to Settings → Brand Styles to define your logo, colors, fonts, and visual style. The AI can apply your brand when generating email designs. Learn more about Brand Styles →
Chat with AI: Ask Dreamlit to make changes: “Make the tone more casual” or “Add a section about our mobile app.”
Dreamlit triggers emails based on database changes. When building with Cursor, focus on getting data into your database. Dreamlit handles the notification logic.Common patterns:
You want…
Write code that…
Welcome emails
Inserts a row into users on signup
Order confirmations
Inserts a row into orders on checkout
Comment notifications
Inserts a row into comments with the author and post
Payment receipts
Inserts or updates a row in payments when payment succeeds
Activity alerts
Logs actions to an activity or events table
You don’t need to write any email code. Just make sure the data lands in your database, and Dreamlit takes it from there.
Pro tip: Ask Cursor to help you add the database write. Try prompting: “When a user completes checkout, insert the order details into an orders table.”
Any workflow that triggers on a database change. Check out our use cases for example prompts across welcome emails, order confirmations, reminders, internal alerts, and more.
By default, emails send from Dreamlit’s domain. To send from your own domain (like hello@yourapp.com), set up a custom email domain in minutes.
1
Add your domain
Go to Settings → Email Domains and click Add domain. Enter your domain (we recommend a subdomain like mail.yourapp.com).
2
Verify automatically
Dreamlit can automatically configure your DNS records for you. Just click Verify with your DNS provider, sign in to your provider, and authorize the changes.
Automatic DNS setup, no manual records needed
If your DNS provider isn’t supported for automatic setup, you can add the records manually. Dreamlit shows you exactly what to add.
3
Start sending
Once verified, select your domain when creating email workflows. Your emails will now come from your own brand.
Dreamlit is natively built on PostgreSQL-compatible databases: Supabase, Neon, Railway, Render, AWS RDS, Google Cloud SQL, Azure Database for PostgreSQL, CockroachDB, and self-hosted Postgres.
No. Dreamlit connects to your database, not your hosting. Deploy your Cursor-built app anywhere: Vercel, Railway, Render, AWS, or self-hosted. As long as Dreamlit can reach your database, your email workflows will run.
Can I use this with any framework Cursor generates?
Yes. Dreamlit works with Next.js, React, Vue, SvelteKit, Express, FastAPI, Django, Rails, and any other framework that writes to a Postgres database. The framework doesn’t matter. The database does.
No, and that’s the point. Your email workflows live in Dreamlit, separate from your codebase. This means you can iterate on emails without touching code, and non-technical teammates can make changes too.
Yes. Dreamlit supports Slack alongside email. Just describe what you want: “Notify our team on Slack when a new order comes in.” Learn more about Slack →
Use the preview feature to send test emails to yourself with real data from your database. Your workflow won’t email actual users until you publish it.
What if I’m already using Resend, SendGrid, or another email provider?
Dreamlit works alongside traditional email providers. Since Dreamlit takes a fundamentally different approach (database-driven, AI-generated workflows), you don’t need to migrate off your existing setup. Try Dreamlit for your next workflow and keep using your current provider for everything else.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Dreamlit AI","colors":{"primary":"#211F26","light":"#FFFFFF","dark":"#211F26"},"logo":{"light":"https://mintcdn.com/notikaai/5oYlSr6CYnDtP1nH/logo/logo.svg?fit=max\u0026auto=format\u0026n=5oYlSr6CYnDtP1nH\u0026q=85\u0026s=6a42bf3e0ba53bffd9f71388b245160d","dark":"https://mintcdn.com/notikaai/5oYlSr6CYnDtP1nH/logo/logowhite.svg?fit=max\u0026auto=format\u0026n=5oYlSr6CYnDtP1nH\u0026q=85\u0026s=4ad6a9428edeca551e0861c8feeb4d5c"},"favicon":"https://mintcdn.com/notikaai/5oYlSr6CYnDtP1nH/favicon.svg?fit=max\u0026auto=format\u0026n=5oYlSr6CYnDtP1nH\u0026q=85\u0026s=900c3dce9e6121983352a882067426f0","navbar":{"links":[{"href":"mailto:support@dreamlit.ai","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.dreamlit.ai"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/dreamlit-ai"}},"seo":{"indexing":"all"},"integrations":{"ga4":{"measurementId":"G-HEMM1933Q9"},"posthog":{"apiKey":"phc_1AsHWVve9XKNlHmx3SMiEwnIy0fxwNbRYnR8lEHoEaz"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity",{"title":"llms.txt","description":"Short LLM-readable index for Dreamlit docs and product pages.","href":"/llms.txt"},{"title":"llms-full.txt","description":"Full LLM-readable canonical URL inventory.","href":"/llms-full.txt"}],"display":"header"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"notikaai","hasAudioNarration":false,"actualSubdomain":"notikaai","customDomains":["dreamlit.ai"],"gitSource":{"type":"github","owner":"dreamlit-ai","repo":"webapp","deployBranch":"prod","contentDirectory":"apps/docs","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true,"issues":true,"edits":true},"entitlements":{},"buildId":"6af21f1772ceb183dca289bf","clientVersion":"0.0.4102","searchFilterCounts":[{"language":"default","tag":"Dreamlit Engine (Legacy)","count":59},{"language":"default","tag":"MCP","count":15},{"language":"default","tag":"Quick Start","count":14},{"language":"default","tag":"Learning Center","count":11},{"language":"default","tag":"Configuration","count":8},{"language":"default","tag":"Dreamlit","count":8},{"language":"default","tag":"Resources","count":8},{"language":"default","tag":"Guides","count":7},{"language":"default","tag":"Step types","count":7},{"language":"default","tag":"Get Started","count":5}]},"assistantConfig":{},"basePath":"/docs","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"guides/cursor-email","slug":"/guides/cursor-email","pageMetadata":{"title":"Cursor Email: Send Notifications Without Breaking Your Flow","sidebarTitle":"Cursor Apps","description":"Add email to your Cursor app in minutes. Describe what you want in plain English, and Dreamlit builds the workflow.","icon":"code","href":"/guides/cursor-email"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Add email to your Cursor app in minutes. Describe what you want in plain English, and Dreamlit builds the workflow.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,blockquote:`blockquote`,code:`code`,hr:`hr`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Card,CardGroup,CodeBlock,Frame,Heading,OptimizedImage,Step,Steps,Tab,Table,Tabs,Tip}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`how-do-i-add-email-to-my-cursor-app`,children:`How do I add email to my Cursor app?`}),`\n`,_jsxs(_components.p,{children:[`You’re in flow with `,_jsx(_components.a,{href:`https://cursor.com`,children:`Cursor`}),`. AI writes your code, suggests fixes, keeps you moving. Then you need to add email, and suddenly you’re wiring up SMTP, hand-coding HTML templates, and debugging webhook payloads. Flow broken.`]}),`\n`,_jsx(_components.p,{children:`Dreamlit brings the same AI-first approach to email. It securely connects to your Postgres database and reacts to data changes directly. Your app writes a row; Dreamlit sends the email. No SDK to install, no API calls to add to your codebase, no deployment changes. It works with any Postgres provider (Supabase, Neon, Railway, Render, RDS, or self-hosted), so it fits whatever stack Cursor helped you build.`}),`\n`,_jsx(`p`,{align:`center`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/notikaai/T7GIY-rl_ZpOUF1h/images/cursor-dreamlit.png?fit=max\u0026auto=format\u0026n=T7GIY-rl_ZpOUF1h\u0026q=85\u0026s=29e090da0146fbcc4f7035114f65e47a`,alt:`Cursor + Dreamlit`,style:{borderRadius:`12px`,maxHeight:`300px`},\"data-og-width\":`762`,width:`762`,\"data-og-height\":`501`,height:`501`,\"data-path\":`images/cursor-dreamlit.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/notikaai/T7GIY-rl_ZpOUF1h/images/cursor-dreamlit.png?w=280\u0026fit=max\u0026auto=format\u0026n=T7GIY-rl_ZpOUF1h\u0026q=85\u0026s=4d79d8fe9df436d36588c3def20679df 280w, https://mintcdn.com/notikaai/T7GIY-rl_ZpOUF1h/images/cursor-dreamlit.png?w=560\u0026fit=max\u0026auto=format\u0026n=T7GIY-rl_ZpOUF1h\u0026q=85\u0026s=09fbb759552e0f3face2bcd767430c86 560w, https://mintcdn.com/notikaai/T7GIY-rl_ZpOUF1h/images/cursor-dreamlit.png?w=840\u0026fit=max\u0026auto=format\u0026n=T7GIY-rl_ZpOUF1h\u0026q=85\u0026s=f3848604d65885713e395940f9220f11 840w, https://mintcdn.com/notikaai/T7GIY-rl_ZpOUF1h/images/cursor-dreamlit.png?w=1100\u0026fit=max\u0026auto=format\u0026n=T7GIY-rl_ZpOUF1h\u0026q=85\u0026s=2c24e2238b055159fb3c63046d4bda22 1100w, https://mintcdn.com/notikaai/T7GIY-rl_ZpOUF1h/images/cursor-dreamlit.png?w=1650\u0026fit=max\u0026auto=format\u0026n=T7GIY-rl_ZpOUF1h\u0026q=85\u0026s=7b2b320af0c21b19e7ec357a64742ce3 1650w, https://mintcdn.com/notikaai/T7GIY-rl_ZpOUF1h/images/cursor-dreamlit.png?w=2500\u0026fit=max\u0026auto=format\u0026n=T7GIY-rl_ZpOUF1h\u0026q=85\u0026s=42f446c6c336868060dcc5dbf4cde842 2500w`})}),`\n`,_jsx(Heading,{level:`2`,id:`who-is-this-guide-for`,children:`Who is this guide for?`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Cursor developers`}),` who want email without the infrastructure detour`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Anyone with a Postgres database`}),` (Supabase, Neon, Railway, RDS, or self-hosted)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Teams`}),` who want non-technical teammates to edit email copy without touching code`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`why-use-dreamlit-instead-of-building-email-in-cursor`,children:`Why use Dreamlit instead of building email in Cursor?`}),`\n`,_jsx(_components.p,{children:`You could ask Cursor to wire up an email provider and write the integration. It’ll generate working code. But then:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`How do you preview that email with real user data before it goes out?`}),`\n`,_jsx(_components.li,{children:`How do you track who opened it? Who clicked?`}),`\n`,_jsx(_components.li,{children:`What happens when emails bounce?`}),`\n`,_jsx(_components.li,{children:`Are you setting up DKIM and SPF records for deliverability?`}),`\n`,_jsx(_components.li,{children:`What about retry logic when the provider has an outage?`}),`\n`,_jsx(_components.li,{children:`What about scheduled emails? Recurring digests? Drip sequences?`}),`\n`,_jsx(_components.li,{children:`After you’ve built a few workflows, how do you see how they’re all performing in one place?`}),`\n`,_jsx(_components.li,{children:`How do you iterate on email copy without redeploying your app?`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Or just use Dreamlit and skip all of that. We handle it end-to-end.`}),`\n`,_jsx(Heading,{level:`2`,id:`what-do-i-need-before-starting`,children:`What do I need before starting?`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`A `,_jsx(_components.strong,{children:`PostgreSQL database`}),` for your app (Supabase, Neon, Railway, Render, AWS RDS, Google Cloud SQL, or any Postgres)`]}),`\n`,_jsx(_components.li,{children:`5 minutes`}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`how-do-i-connect-dreamlit-to-my-database`,children:`How do I connect Dreamlit to my database?`}),`\n`,_jsx(_components.p,{children:`Dreamlit works with any PostgreSQL database. The setup depends on which provider you’re using.`}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Supabase`,id:`supabase`,children:[_jsx(_components.p,{children:`If your Cursor app uses Supabase, connecting is two clicks:`}),_jsxs(Steps,{children:[_jsx(Step,{title:`Create a Dreamlit account`,children:_jsxs(_components.p,{children:[`Go to `,_jsx(_components.a,{href:`https://app.dreamlit.ai`,children:`app.dreamlit.ai`}),` and sign up.`]})}),_jsxs(Step,{title:`Connect via OAuth`,children:[_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Connect Supabase`}),` and authorize the connection. Dreamlit securely connects to your Supabase project.`]}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/notikaai/adckcWobFeOatSLI/images/supabaseconnect.gif?s=fae094684d1c16f9d6ba024157359ea0`,alt:`Connecting Supabase via OAuth`,\"data-og-width\":`1408`,width:`1408`,\"data-og-height\":`1080`,height:`1080`,\"data-path\":`images/supabaseconnect.gif`,\"data-optimize\":`true`,\"data-opv\":`3`})})]})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`That’s it. 2 clicks and you’re connected.`})}),_jsx(Tip,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Need auth emails?`}),` (password reset, magic links, email verification) Check out our `,_jsx(_components.a,{href:`/guides/supabase-auth-emails`,children:`Supabase Auth Emails guide`}),` for one-click setup.`]})})]}),_jsxs(Tab,{title:`Neon`,id:`neon`,children:[_jsxs(Steps,{children:[_jsx(Step,{title:`Create a Dreamlit account`,children:_jsxs(_components.p,{children:[`Go to `,_jsx(_components.a,{href:`https://app.dreamlit.ai`,children:`app.dreamlit.ai`}),` and sign up.`]})}),_jsxs(Step,{title:`Get your connection string`,children:[_jsxs(_components.p,{children:[`In your Neon dashboard, copy your `,_jsx(_components.strong,{children:`pooled connection string`}),`. It looks like:`]}),_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`postgresql://user:password@ep-xxx.region.aws.neon.tech/dbname`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})})]}),_jsx(Step,{title:`Connect in Dreamlit`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Connect Postgres`}),` and paste your connection string. Follow the guided setup to grant Dreamlit the minimal permissions it needs.`]})})]}),_jsxs(_components.p,{children:[`For detailed setup instructions, see `,_jsx(_components.a,{href:`/configuration/data-sources/postgres#commands-to-run-to-set-up-your-dreamlit_app-database-user`,children:`commands to set up your database user`}),`.`]})]}),_jsxs(Tab,{title:`Railway / Render`,id:`railway-%2F-render`,children:[_jsxs(Steps,{children:[_jsx(Step,{title:`Create a Dreamlit account`,children:_jsxs(_components.p,{children:[`Go to `,_jsx(_components.a,{href:`https://app.dreamlit.ai`,children:`app.dreamlit.ai`}),` and sign up.`]})}),_jsx(Step,{title:`Get your connection string`,children:_jsx(_components.p,{children:`In your Railway or Render dashboard, find your Postgres connection string under your database settings.`})}),_jsx(Step,{title:`Connect in Dreamlit`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Connect Postgres`}),` and paste your connection string. Follow the guided setup to grant Dreamlit the minimal permissions it needs.`]})})]}),_jsxs(_components.p,{children:[`For detailed setup instructions, see `,_jsx(_components.a,{href:`/configuration/data-sources/postgres#commands-to-run-to-set-up-your-dreamlit_app-database-user`,children:`commands to set up your database user`}),`.`]})]}),_jsxs(Tab,{title:`AWS RDS / Cloud SQL / Other`,id:`aws-rds-%2F-cloud-sql-%2F-other`,children:[_jsxs(Steps,{children:[_jsx(Step,{title:`Create a Dreamlit account`,children:_jsxs(_components.p,{children:[`Go to `,_jsx(_components.a,{href:`https://app.dreamlit.ai`,children:`app.dreamlit.ai`}),` and sign up.`]})}),_jsx(Step,{title:`Get your connection details`,children:_jsx(_components.p,{children:`You’ll need your database host, port, database name, and credentials.`})}),_jsx(Step,{title:`Connect in Dreamlit`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Connect Postgres`}),` and enter your connection details. Follow the guided setup to create a dedicated `,_jsx(_components.code,{children:`dreamlit_app`}),` user with minimal permissions.`]})})]}),_jsxs(_components.p,{children:[`For detailed setup instructions, see `,_jsx(_components.a,{href:`/configuration/data-sources/postgres#commands-to-run-to-set-up-your-dreamlit_app-database-user`,children:`commands to set up your database user`}),`.`]})]})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`how-do-i-create-my-first-email-workflow`,children:`How do I create my first email workflow?`}),`\n`,_jsx(_components.p,{children:`Here’s an example: setting up a welcome email that sends when someone signs up.`}),`\n`,_jsx(Heading,{level:`3`,id:`step-1-create-the-workflow`,children:`Step 1: Create the workflow`}),`\n`,_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Create Workflow`}),` and describe what you want:`]}),`\n`,_jsxs(_components.blockquote,{children:[`\n`,_jsx(_components.p,{children:`“Send a welcome email when a new user signs up”`}),`\n`]}),`\n`,_jsx(_components.p,{children:`The AI generates everything: the database trigger, email template, and copy.`}),`\n`,_jsx(Frame,{caption:`The AI generates your workflow automatically`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/notikaai/ND5vtH9yB3HGk0VQ/images/new-workflow.gif?s=cf7aaa6638f6349bb3e9cf79f7512383`,alt:`AI generating a welcome email workflow`,\"data-og-width\":`1784`,width:`1784`,\"data-og-height\":`720`,height:`720`,\"data-path\":`images/new-workflow.gif`,\"data-optimize\":`true`,\"data-opv\":`3`})}),`\n`,_jsx(Heading,{level:`3`,id:`step-2-preview-with-live-data`,children:`Step 2: Preview with live data`}),`\n`,_jsx(_components.p,{children:`Click any step to open the preview panel and see real data from your database flowing through the workflow.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Query steps`}),` show the data being fetched or filtered`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Email steps`}),` show the fully rendered email with actual user data`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Preview with different data`}),` to test different scenarios.`]}),`\n`,_jsx(Heading,{level:`3`,id:`step-3-customize-your-email`,children:`Step 3: Customize your email`}),`\n`,_jsx(_components.p,{children:`The AI generates a starting point, but you can refine it:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Hover to edit`}),`: Hover over any text in the email preview and click to edit inline. Change headlines, body copy, or button text directly.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Brand styles`}),`: Go to `,_jsx(_components.strong,{children:`Settings → Brand Styles`}),` to define your logo, colors, fonts, and visual style. The AI can apply your brand when generating email designs. `,_jsx(_components.a,{href:`/configuration/email/brand-styles`,children:`Learn more about Brand Styles →`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Chat with AI`}),`: Ask Dreamlit to make changes: “Make the tone more casual” or “Add a section about our mobile app.”`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`step-4-publish`,children:`Step 4: Publish`}),`\n`,_jsxs(_components.p,{children:[`Once you’re happy with the preview, click `,_jsx(_components.strong,{children:`Publish`}),`. Dreamlit installs a lightweight trigger on your database and starts reacting to new signups.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`how-does-cursor-work-with-dreamlit`,children:`How does Cursor work with Dreamlit?`}),`\n`,_jsx(_components.p,{children:`Dreamlit triggers emails based on database changes. When building with Cursor, focus on getting data into your database. Dreamlit handles the notification logic.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Common patterns:`})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`You want…`}),_jsx(_components.th,{children:`Write code that…`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Welcome emails`}),_jsxs(_components.td,{children:[`Inserts a row into `,_jsx(_components.code,{children:`users`}),` on signup`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Order confirmations`}),_jsxs(_components.td,{children:[`Inserts a row into `,_jsx(_components.code,{children:`orders`}),` on checkout`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Comment notifications`}),_jsxs(_components.td,{children:[`Inserts a row into `,_jsx(_components.code,{children:`comments`}),` with the author and post`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Payment receipts`}),_jsxs(_components.td,{children:[`Inserts or updates a row in `,_jsx(_components.code,{children:`payments`}),` when payment succeeds`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Activity alerts`}),_jsxs(_components.td,{children:[`Logs actions to an `,_jsx(_components.code,{children:`activity`}),` or `,_jsx(_components.code,{children:`events`}),` table`]})]})]})]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`You don’t need to write any email code.`}),` Just make sure the data lands in your database, and Dreamlit takes it from there.`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Pro tip:`}),` Ask Cursor to help you add the database write. Try prompting: “When a user completes checkout, insert the order details into an `,_jsx(_components.code,{children:`orders`}),` table.”`]})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`will-my-emails-work-if-i-change-hosting-providers`,children:`Will my emails work if I change hosting providers?`}),`\n`,_jsx(_components.p,{children:`Dreamlit connects to your database, not your hosting provider. Whether you deploy to:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Vercel`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Railway`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Render`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Fly.io`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`AWS / GCP / Azure`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Self-hosted`})}),`\n`]}),`\n`,_jsx(_components.p,{children:`Your email workflows keep running. Change hosting providers, spin up new environments. Dreamlit reacts to database changes and handles the rest.`}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`what-other-workflows-can-i-build`,children:`What other workflows can I build?`}),`\n`,_jsxs(_components.p,{children:[`Any workflow that triggers on a database change. Check out our `,_jsx(_components.a,{href:`/getting-started/use-cases`,children:`use cases`}),` for example prompts across welcome emails, order confirmations, reminders, internal alerts, and more.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`how-do-i-send-from-my-own-domain`,children:`How do I send from my own domain?`}),`\n`,_jsxs(_components.p,{children:[`By default, emails send from Dreamlit’s domain. To send from your own domain (like `,_jsx(_components.code,{children:`hello@yourapp.com`}),`), set up a custom email domain in minutes.`]}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Add your domain`,children:_jsxs(_components.p,{children:[`Go to `,_jsx(_components.strong,{children:`Settings → Email Domains`}),` and click `,_jsx(_components.strong,{children:`Add domain`}),`. Enter your domain (we recommend a subdomain like `,_jsx(_components.code,{children:`mail.yourapp.com`}),`).`]})}),_jsxs(Step,{title:`Verify automatically`,children:[_jsxs(_components.p,{children:[`Dreamlit can automatically configure your DNS records for you. Just click `,_jsx(_components.strong,{children:`Verify with your DNS provider`}),`, sign in to your provider, and authorize the changes.`]}),_jsx(Frame,{caption:`Automatic DNS setup, no manual records needed`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/notikaai/ND5vtH9yB3HGk0VQ/images/auto-dns.gif?s=ce1cca7fadcd17e41cb37a8fdce2753d`,alt:`Automated DNS verification flow`,\"data-og-width\":`1024`,width:`1024`,\"data-og-height\":`720`,height:`720`,\"data-path\":`images/auto-dns.gif`,\"data-optimize\":`true`,\"data-opv\":`3`})}),_jsx(Tip,{children:_jsx(_components.p,{children:`If your DNS provider isn’t supported for automatic setup, you can add the records manually. Dreamlit shows you exactly what to add.`})})]}),_jsx(Step,{title:`Start sending`,children:_jsx(_components.p,{children:`Once verified, select your domain when creating email workflows. Your emails will now come from your own brand.`})})]}),`\n`,_jsxs(_components.p,{children:[`This improves deliverability and looks more professional to your users. `,_jsx(_components.a,{href:`/configuration/email/custom-domain`,children:`Full domain setup guide →`})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`faq`,children:`FAQ`}),`\n`,_jsx(Heading,{level:`3`,id:`what-databases-does-dreamlit-support`,children:`What databases does Dreamlit support?`}),`\n`,_jsx(_components.p,{children:`Dreamlit is natively built on PostgreSQL-compatible databases: Supabase, Neon, Railway, Render, AWS RDS, Google Cloud SQL, Azure Database for PostgreSQL, CockroachDB, and self-hosted Postgres.`}),`\n`,_jsx(Heading,{level:`3`,id:`why-aren’t-my-emails-sending`,children:`Why aren’t my emails sending?`}),`\n`,_jsx(_components.p,{children:`A few things to check:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Is your workflow published?`}),` Saved workflows don’t run until you click Publish.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Is the trigger table correct?`}),` Make sure it matches where your app actually writes data.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Is data being written?`}),` Check your database to confirm rows are being created.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Try the preview.`}),` Use the preview to test with sample data and verify the workflow runs.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`do-i-need-to-change-my-deployment`,children:`Do I need to change my deployment?`}),`\n`,_jsx(_components.p,{children:`No. Dreamlit connects to your database, not your hosting. Deploy your Cursor-built app anywhere: Vercel, Railway, Render, AWS, or self-hosted. As long as Dreamlit can reach your database, your email workflows will run.`}),`\n`,_jsx(Heading,{level:`3`,id:`can-i-use-this-with-any-framework-cursor-generates`,children:`Can I use this with any framework Cursor generates?`}),`\n`,_jsx(_components.p,{children:`Yes. Dreamlit works with Next.js, React, Vue, SvelteKit, Express, FastAPI, Django, Rails, and any other framework that writes to a Postgres database. The framework doesn’t matter. The database does.`}),`\n`,_jsx(Heading,{level:`3`,id:`can-cursor-edit-my-dreamlit-workflows`,children:`Can Cursor edit my Dreamlit workflows?`}),`\n`,_jsx(_components.p,{children:`No, and that’s the point. Your email workflows live in Dreamlit, separate from your codebase. This means you can iterate on emails without touching code, and non-technical teammates can make changes too.`}),`\n`,_jsx(Heading,{level:`3`,id:`can-i-send-slack-notifications-too`,children:`Can I send Slack notifications too?`}),`\n`,_jsxs(_components.p,{children:[`Yes. Dreamlit supports Slack alongside email. Just describe what you want: “Notify our team on Slack when a new order comes in.” `,_jsx(_components.a,{href:`/configuration/slack`,children:`Learn more about Slack →`})]}),`\n`,_jsx(Heading,{level:`3`,id:`how-do-i-test-without-emailing-real-users`,children:`How do I test without emailing real users?`}),`\n`,_jsx(_components.p,{children:`Use the preview feature to send test emails to yourself with real data from your database. Your workflow won’t email actual users until you publish it.`}),`\n`,_jsx(Heading,{level:`3`,id:`what-if-i’m-already-using-resend-sendgrid-or-another-email-provider`,children:`What if I’m already using Resend, SendGrid, or another email provider?`}),`\n`,_jsx(_components.p,{children:`Dreamlit works alongside traditional email providers. Since Dreamlit takes a fundamentally different approach (database-driven, AI-generated workflows), you don’t need to migrate off your existing setup. Try Dreamlit for your next workflow and keep using your current provider for everything else.`}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next steps`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Supabase Auth emails`,icon:`shield-keyhole`,href:`/guides/supabase-auth-emails`,children:_jsx(_components.p,{children:`Set up password reset, magic links, and more`})}),_jsx(Card,{title:`Email domain setup`,icon:`at`,href:`/configuration/email/custom-domain`,children:_jsx(_components.p,{children:`Send from your own domain`})}),_jsx(Card,{title:`Use cases`,icon:`lightbulb`,href:`/getting-started/use-cases`,children:_jsx(_components.p,{children:`More workflow examples`})}),_jsx(Card,{title:`Get support`,icon:`headset`,href:`/resources/getting-support`,children:_jsx(_components.p,{children:`We’re here to help`})})]}),`\n`,_jsx(Heading,{level:`2`,id:`references`,children:`References`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/configuration/data-sources/postgres`,children:`Dreamlit Postgres setup guide`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/configuration/data-sources/supabase`,children:`Dreamlit Supabase integration`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://supabase.com/docs/guides/auth/auth-smtp`,children:`Supabase Auth SMTP docs`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/getting-started/use-cases`,children:`Dreamlit use cases`})}),`\n`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(_components.p,{children:`Last validated: 2026-04-12`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Cursor Email: Send Notifications Without Breaking Your Flow","sidebarTitle":"Cursor Apps","description":"Add email to your Cursor app in minutes. Describe what you want in plain English, and Dreamlit builds the workflow.","icon":"code","href":"/guides/cursor-email"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"How do I add email to my Cursor app?","slug":"how-do-i-add-email-to-my-cursor-app","depth":2,"children":[]},{"title":"Who is this guide for?","slug":"who-is-this-guide-for","depth":2,"children":[]},{"title":"Why use Dreamlit instead of building email in Cursor?","slug":"why-use-dreamlit-instead-of-building-email-in-cursor","depth":2,"children":[]},{"title":"What do I need before starting?","slug":"what-do-i-need-before-starting","depth":2,"children":[]},{"title":"How do I connect Dreamlit to my database?","slug":"how-do-i-connect-dreamlit-to-my-database","depth":2,"children":[]},{"title":"How do I create my first email workflow?","slug":"how-do-i-create-my-first-email-workflow","depth":2,"children":[{"title":"Step 1: Create the workflow","slug":"step-1-create-the-workflow","depth":3,"children":[]},{"title":"Step 2: Preview with live data","slug":"step-2-preview-with-live-data","depth":3,"children":[]},{"title":"Step 3: Customize your email","slug":"step-3-customize-your-email","depth":3,"children":[]},{"title":"Step 4: Publish","slug":"step-4-publish","depth":3,"children":[]}]},{"title":"How does Cursor work with Dreamlit?","slug":"how-does-cursor-work-with-dreamlit","depth":2,"children":[]},{"title":"Will my emails work if I change hosting providers?","slug":"will-my-emails-work-if-i-change-hosting-providers","depth":2,"children":[]},{"title":"What other workflows can I build?","slug":"what-other-workflows-can-i-build","depth":2,"children":[]},{"title":"How do I send from my own domain?","slug":"how-do-i-send-from-my-own-domain","depth":2,"children":[]},{"title":"FAQ","slug":"faq","depth":2,"children":[{"title":"What databases does Dreamlit support?","slug":"what-databases-does-dreamlit-support","depth":3,"children":[]},{"title":"Why aren’t my emails sending?","slug":"why-aren’t-my-emails-sending","depth":3,"children":[]},{"title":"Do I need to change my deployment?","slug":"do-i-need-to-change-my-deployment","depth":3,"children":[]},{"title":"Can I use this with any framework Cursor generates?","slug":"can-i-use-this-with-any-framework-cursor-generates","depth":3,"children":[]},{"title":"Can Cursor edit my Dreamlit workflows?","slug":"can-cursor-edit-my-dreamlit-workflows","depth":3,"children":[]},{"title":"Can I send Slack notifications too?","slug":"can-i-send-slack-notifications-too","depth":3,"children":[]},{"title":"How do I test without emailing real users?","slug":"how-do-i-test-without-emailing-real-users","depth":3,"children":[]},{"title":"What if I’m already using Resend, SendGrid, or another email provider?","slug":"what-if-i’m-already-using-resend-sendgrid-or-another-email-provider","depth":3,"children":[]}]},{"title":"Next steps","slug":"next-steps","depth":2,"children":[]},{"title":"References","slug":"references","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"notikaai","siteName":"Dreamlit AI","title":"Cursor Email: Send Notifications Without Breaking Your Flow - Dreamlit AI","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-08-18T04:42:55.208Z","originalFileLocation":"guides/cursor-email.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Add email to your Cursor app in minutes. Describe what you want in plain English, and Dreamlit builds the workflow.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Dreamlit AI\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/notikaai/HoOX77VHSfRwGtal/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/notikaai/HoOX77VHSfRwGtal/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/notikaai/HoOX77VHSfRwGtal/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/notikaai/HoOX77VHSfRwGtal/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/notikaai/HoOX77VHSfRwGtal/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/notikaai/HoOX77VHSfRwGtal/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/notikaai/HoOX77VHSfRwGtal/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/notikaai/HoOX77VHSfRwGtal/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/notikaai/HoOX77VHSfRwGtal/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Cursor Email: Send Notifications Without Breaking Your Flow - Dreamlit AI\">\u003cmeta data-mint-head property=\"og:description\" content=\"Add email to your Cursor app in minutes. Describe what you want in plain English, and Dreamlit builds the workflow.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Dreamlit AI\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://dreamlit.ai/docs/guides/cursor-email\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://notikaai.mintlify.site/docs/_mintlify/api/og/v2?division=Guides\u0026amp;title=Cursor+Email%3A+Send+Notifications+Without+Breaking+Your+Flow\u0026amp;description=Add+email+to+your+Cursor+app+in+minutes.+Describe+what+you+want+in+plain+English%2C+and+Dreamlit+builds+the+workflow.\u0026amp;theme=cd9765a2269f5674b365d03b\u0026amp;signature=b5f369932d83b974b1bb75c04575d3238d361b9045c9bebba16ac89e5b450517\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Cursor Email: Send Notifications Without Breaking Your Flow - Dreamlit AI\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Add email to your Cursor app in minutes. Describe what you want in plain English, and Dreamlit builds the workflow.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://notikaai.mintlify.site/docs/_mintlify/api/og/v2?division=Guides\u0026amp;title=Cursor+Email%3A+Send+Notifications+Without+Breaking+Your+Flow\u0026amp;description=Add+email+to+your+Cursor+app+in+minutes.+Describe+what+you+want+in+plain+English%2C+and+Dreamlit+builds+the+workflow.\u0026amp;theme=cd9765a2269f5674b365d03b\u0026amp;signature=b5f369932d83b974b1bb75c04575d3238d361b9045c9bebba16ac89e5b450517\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/notikaai/HoOX77VHSfRwGtal/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Dreamlit AI\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#211F26\">\u003clink data-mint-head rel=\"canonical\" href=\"https://dreamlit.ai/docs/guides/cursor-email\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/guides/cursor-email.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://dreamlit.ai/#organization\",\"name\":\"Dreamlit AI\",\"url\":\"https://dreamlit.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/notikaai/5oYlSr6CYnDtP1nH/logo/logo.svg?fit=max\u0026auto=format\u0026n=5oYlSr6CYnDtP1nH\u0026q=85\u0026s=6a42bf3e0ba53bffd9f71388b245160d\"}},{\"@type\":\"WebSite\",\"@id\":\"https://dreamlit.ai/docs#website\",\"name\":\"Dreamlit AI\",\"url\":\"https://dreamlit.ai/docs\",\"publisher\":{\"@id\":\"https://dreamlit.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://dreamlit.ai/docs/guides/cursor-email#webpage\",\"url\":\"https://dreamlit.ai/docs/guides/cursor-email\",\"name\":\"Cursor Email: Send Notifications Without Breaking Your Flow\",\"description\":\"Add email to your Cursor app in minutes. Describe what you want in plain English, and Dreamlit builds the workflow.\",\"dateModified\":\"2026-08-18T04:42:55.208Z\",\"isPartOf\":{\"@id\":\"https://dreamlit.ai/docs#website\"},\"breadcrumb\":{\"@id\":\"https://dreamlit.ai/docs/guides/cursor-email#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://dreamlit.ai/docs/guides/cursor-email#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Guides\",\"item\":\"https://dreamlit.ai/docs/guides/supabase-auth-emails\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cursor Email: Send Notifications Without Breaking Your Flow\",\"item\":\"https://dreamlit.ai/docs/guides/cursor-email\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://dreamlit.ai/docs/guides/cursor-email#article\",\"headline\":\"Cursor Email: Send Notifications Without Breaking Your Flow\",\"name\":\"Cursor Email: Send Notifications Without Breaking Your Flow\",\"description\":\"Add email to your Cursor app in minutes. Describe what you want in plain English, and Dreamlit builds the workflow.\",\"url\":\"https://dreamlit.ai/docs/guides/cursor-email\",\"mainEntityOfPage\":{\"@id\":\"https://dreamlit.ai/docs/guides/cursor-email#webpage\"},\"dateModified\":\"2026-08-18T04:42:55.208Z\",\"publisher\":{\"@id\":\"https://dreamlit.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://dreamlit.ai/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Dreamlit AI\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Dreamlit AI\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/docs/guides/cursor-email.md","siteName":"Dreamlit AI","nav":{"global":null,"tabs":[{"tab":"Dreamlit","icon":"rocket","pages":[{"title":"Dreamlit","href":"/introduction"}]},{"tab":"Dreamlit Engine (Legacy)","icon":"gears","groups":[{"group":"Get Started","pages":[{"title":"Dreamlit Engine","icon":"book-open","href":"/getting-started/introduction"},{"title":"Use cases","icon":"lightbulb","href":"/getting-started/use-cases"},{"title":"How it works","icon":"gears","href":"/getting-started/how-it-works"},{"title":"FAQ","icon":"circle-question","href":"/getting-started/faq"},{"title":"Quickstart","icon":"rocket","href":"/getting-started/quickstart"}]},{"group":"Dreamlit for...","pages":[{"title":"For vibe coders","href":"/getting-started/for-vibe-coders"},{"title":"For developers","href":"/getting-started/for-developers"},{"title":"For product teams","href":"/getting-started/for-product-teams"}]},{"group":"Guides","pages":[{"title":"How to Set Up Supabase Auth Emails with Dreamlit","sidebarTitle":"Supabase Auth Emails","icon":"bolt","href":"/guides/supabase-auth-emails"},{"title":"How to Add Emails to Your Lovable App (The Easy Way)","sidebarTitle":"Lovable Apps","icon":"heart","href":"/guides/lovable-email"},{"title":"Bolt.new Email: Send Notifications Without the Infrastructure","sidebarTitle":"Bolt.new Apps","description":"Add email to your Bolt.new app in minutes. Describe what you want in plain English, and Dreamlit builds the workflow.","icon":"bold","href":"/guides/bolt-email"},{"title":"Cursor Email: Send Notifications Without Breaking Your Flow","sidebarTitle":"Cursor Apps","icon":"code","href":"/guides/cursor-email"},{"title":"How to Add Emails to Your Replit App (The Easy Way)","sidebarTitle":"Replit Apps","description":"Add welcome emails, notifications, and email blasts to your Replit app. No code changes, no API keys. Just connect your database and describe what you want.","icon":"laptop-code","href":"/guides/replit-email"},{"title":"v0 Email: Send Notifications by Describing What You Want","sidebarTitle":"v0 Apps","icon":"sparkles","href":"/guides/v0-email"},{"title":"Figma Make Email: Design-to-App Meets AI-Powered Notifications","sidebarTitle":"Figma Make Apps","icon":"figma","href":"/guides/figma-make-email"}]},{"group":"Configuration","pages":[{"group":"Data Sources","pages":[{"title":"Supabase","href":"/configuration/data-sources/supabase"},{"title":"PostgreSQL","href":"/configuration/data-sources/postgres"},{"title":"Shopify","href":"/configuration/data-sources/shopify"}]},{"group":"Email","pages":[{"title":"Overview","href":"/configuration/email/index"},{"title":"Custom domain","sidebarTitle":"Custom domain","href":"/configuration/email/custom-domain"},{"title":"Brand styles","sidebarTitle":"Brand styles","href":"/configuration/email/brand-styles"},{"title":"Managing unsubscribed contacts","href":"/configuration/email/managing-unsubscribed-contacts"}]},{"title":"Slack","href":"/configuration/slack"}]},{"group":"Workflow","pages":[{"title":"Basics","href":"/workflow/basics"},{"title":"Preview","href":"/workflow/test-interface"},{"title":"Publishing workflows","href":"/workflow/publishing-workflows"},{"title":"Inspecting inflight workflows","href":"/workflow/inspecting-inflight-workflows"},{"title":"Broadcast","href":"/workflow/broadcast"}]},{"group":"Step types","pages":[{"title":"Database trigger","href":"/steps/database-trigger"},{"title":"Repeating trigger","href":"/steps/repeating-trigger"},{"title":"Supabase Auth trigger","href":"/steps/supabase-auth-trigger"},{"title":"Wait","href":"/steps/wait"},{"title":"Query","href":"/steps/query"},{"title":"Send email","href":"/steps/send-email"},{"title":"Send Slack","href":"/steps/send-slack"}]},{"group":"Troubleshooting","pages":[{"title":"Fix Supabase RLS Access for Dreamlit","sidebarTitle":"Supabase RLS","href":"/troubleshooting/fix-supabase-rls-access"}]},{"group":"MCP","pages":[{"title":"MCP server for AI agents","sidebarTitle":"Overview","href":"/resources/mcp-server"},{"group":"Quick Start","expanded":false,"pages":[{"title":"Dreamlit MCP for Claude Code","sidebarTitle":"Claude Code","href":"/resources/mcp-server/claude-code"},{"title":"Dreamlit MCP for Claude Desktop","sidebarTitle":"Claude Desktop","href":"/resources/mcp-server/claude-desktop"},{"title":"Dreamlit MCP for Codex","sidebarTitle":"Codex","href":"/resources/mcp-server/codex"},{"title":"Dreamlit MCP for Cursor","sidebarTitle":"Cursor","href":"/resources/mcp-server/cursor"},{"title":"Dreamlit MCP for OpenClaw","sidebarTitle":"OpenClaw","href":"/resources/mcp-server/openclaw"},{"title":"Dreamlit MCP for Hermes Agent","sidebarTitle":"Hermes","href":"/resources/mcp-server/hermes"},{"title":"Dreamlit MCP for Gemini CLI","sidebarTitle":"Gemini CLI","href":"/resources/mcp-server/gemini-cli"},{"title":"Dreamlit MCP for VS Code","sidebarTitle":"VS Code","href":"/resources/mcp-server/vs-code"},{"title":"Dreamlit MCP for Windsurf","sidebarTitle":"Windsurf","href":"/resources/mcp-server/windsurf"},{"title":"Dreamlit MCP for Zed","sidebarTitle":"Zed","href":"/resources/mcp-server/zed"},{"title":"Dreamlit MCP for Lovable","sidebarTitle":"Lovable","href":"/resources/mcp-server/lovable"},{"title":"Dreamlit MCP for Bolt","sidebarTitle":"Bolt","href":"/resources/mcp-server/bolt"},{"title":"Dreamlit MCP for Replit","sidebarTitle":"Replit","href":"/resources/mcp-server/replit"},{"title":"Dreamlit MCP for v0","sidebarTitle":"v0","href":"/resources/mcp-server/v0"}]}]},{"group":"Resources","pages":[{"title":"Deliverability","href":"/resources/deliverability"},{"title":"Security","href":"/resources/security"},{"title":"Contact us","href":"/resources/getting-support"},{"title":"Media resources","href":"/resources/media"},{"title":"Pricing","href":"/resources/pricing"},{"title":"System status","url":"https://status.dreamlit.ai","href":"/resources/system-status"},{"title":"Privacy policy","url":"https://dreamlit.ai/privacy-policy","href":"/resources/privacy-policy"},{"title":"Terms of service","url":"https://www.dreamlit.ai/terms-of-service","href":"/resources/terms-of-service"}]}]},{"tab":"Learning Center","icon":"graduation-cap","pages":[{"title":"Learning Center","href":"/learn/overview"}]}]},"basePath":"","title":"Cursor Email: Send Notifications Without Breaking Your Flow - Dreamlit AI","buildId":"dpl_2AK98Hxhwu4fUXpx9atbv41cC328","deploymentId":"dpl_2AK98Hxhwu4fUXpx9atbv41cC328","dynamics":["a74be98ba7","07c022d89b"],"chunks":["zoom-image-lightbox-T84NdC3b.js","lightbox-handle-r17bVUz3.js","Frame-Buk2KjK6.js","DynamicMarkdown-DYYZTGpa.js"]}