Build a Waitlist Funnel in 20 Minutes 🚀

Maxime Warnault builds a working waitlist landing page in under 20 minutes using Next.js, Notion, Resend, and Upstash Redis. He deploys on Vercel, connects environment variables, and troubleshoots configuration errors to get email notifications working.
Chapters
All right guys, so in this video I'm going to show you how to build a waitlist funnel in literally less than 20 minutes and connect it to Notion. So I just bought this milliondollarmann.ai, helping you become a million-dollar man with AI. I'm not sure what to do with it, so what I'm going to do is I'm going to, um, create a waitlist page using Next.js. We're going to deploy on Vercel and we're going to use Notion as the content management system.
Okay.
So let's get started. All we have to do is to go to Vercel, the waitlist Notion. This is what it looks like. So we have coming soon, simple waitlist template that works with Notion., and we're gonna set this up. So all we have to do is click on deploy. We are going to do Million Dollar Man. Million Dollar Max works as well. So Million Dollar Man, and we're going to create. So you need a Git account, you need a Vercel account. I'm not going to go over this. You can find how to set this up. And then what we need is Notion secret, Notion database, Resend. So Resend is a way to send email. Upstash and okay. So because I don't know how to do that, what we are going to do is ask Claude how to do it.
So we're gonna do this. So We're gonna talk with it.
So I'm deploying this template on Vercel and it's asking me for these environment variables. Can you tell me exactly where to find them?
Okay, and I will send the template.
So now Claude is going to actually do some research and tell me Oh, to do that, let me just—
here's where to grab each one.
So we're gonna need to go to Notion, my integration. So I'm not using Notion pretty much at all, but just for the sake of this video, we are going to, to do it. So we're gonna name this waitlist icon.
It's not integration starts with— copy the integration installable in Okay, Maxime.
So you need a Notion account.
Configure connection settings. Um, copy the integration settings.
So I'm guessing this is installation access token.
Okay, so we're gonna copy this and we're gonna paste this in here.
Notion database. Create a Notion database with at least an email property.
Click on the database page. So how do we create a Notion database? Back to Notion. Learning together, guys. Click on the three dots on the database page. Agents. I'm not seeing it. Notion database. Creating a database. Creating a database, you can unlock. Okay, simple as this. So create new page, I believe. So, uh, empty database.
There we go. Okay, so we're going to name this Waitlist Notion Workspace, and then the database ID is going to be this.
All right, so we're making progress.
Resend API key. So now I need to go to Resend. So I happen to actually have an account that I need to cancel, but we are going to, to set this up.
So let's go ahead and do that. Resend API keys, create an API key, API keys, create API key, waitlist, full access. All domains. Let's go. We're going to copy this and we're going to paste this in here.
Upstash, Redis.
Okay, so now we need— Is this path is in Vercel itself? Storage, create a storage. Okay, so now we need to go to Vercel and we need to go to Storage. Okay, let's go, uh, create a database and we're going to do Upstash for Redis.
Actually, I already have one.
What we're going to do— connect project— Upstash archive due to inactivity.
Let's just create a new one.
Upstash. For Redis, that's what it told me. Yep, connect to a project, pick a region. Just go ahead and do that. All right, we're gonna get on the free plan. Continue. We're gonna name this waitlist. Create. Cache database is ready. Okay, so we have one project here already, Million Dollar Man. Connect, and we need, we need URL and token. Okay, so we're going to show the secret. I'm just going to remove all of this after anyways. So boom, and the token is here.
All right, so I'm going to deploy and we will see what happens. Deploy started 3 seconds ago, dealing the logs. And then I'm going to show you actually how to connect a domain name actually to this template. So bear with me for a second while everything is deploying. And what we can do is, uh, we can go to Million Dollar Man. Building initial commit created.
So we have database build. You should do it. All right, so I have—
in the meantime, I have created a new skill telling me exactly what to tell you guys. So this was the intro. So First problem, most founders don't even know— own their domain yet. I bought million dollar on Cloudflare.
Let me show you the move.
DNS is propagating. While that happens, let's deploy the actual waitlist. This is where Vercel earns its money. There's a template. So I already showed you guys this. So if you're a 6-figure founder watching this and you're still hiring developers to ship landing page, stop and subscribe to the channel right now. I'm building Skaters.io and Million Dollar Man in public. Every system, every funnel, every launch goes on this channel before it goes anywhere else. So, uh, let's see if the build is done. Build is done. Let's check it. So we have deployed. So what we need to do now is just add a domain. So let's just go ahead and do that. Million Dollar Man, what we can do is type milliondollarman.ai and existing to production. We're gonna save. And now what we need to do actually is go into this, click on auto configure because we have used Cloudflare. Now it is connected to our Cloudflare account and we don't have to manually type in all of the DNS stuff.
Okay. So.
We're gonna wait until this—
oops— propagates. And I believe there was a second domain here. Auto-configure. I believe it did both at the same time. Maybe, maybe not. Addition failed.
Add a custom domain. So it's been added. Million Dollar Man. Ai. So this one is the one we need to actually configure now.
Yep.
Okay, so we did the www and it's been activated, and now it's activating the main domain. Okay, so both the main domain, the root domain, and www are going to work.
Okay, so let's see if we have access now.
So we don't have access yet,, but what we can do is access the app right here. So a simple Next.js website, waitlist template with Notion as a CMS. Okay, so we're gonna type Max and join the waitlist. Getting you on the waitlist. Failed to save your details. Please try again. So we probably have entered the wrong information for Notion somehow. I'll show you how to diagnose all of this.
So I'm just waiting for these domains to propagate.
So valid configuration on both. So we should be able now to access this with milliondollarmen.ai. All right, so we have access now. So what I want to do is actually fix the— let's, let's try again.
Max.
Max. Maxers.io. Okay. So generally what I do is I go into the console and— Notion insertion failed. Okay. So we're gonna do Notion, my integration. So right now what I'm going to do is open a new Cloud Code window and just paste this. And say, I'm trying to deploy—
or actually, we did. Yeah. Okay. So now we're going to talk to it.
So it's been deployed, and now I have all of these errors inside of the console. So please help me fix them. All right. And now I'm going to paste this. It's as easy as this. And basically, before we, we do this, what you need is actually to connect your Vercel account to Cloud Code, and you need to connect GitHub, and you need to connect Cloudflare if you, if you want to.
But let's see, I'm, I'm going to—
what to actually check, the issue is So when I put my name and email, it actually shows me this. Okay, so we're going to let him do its, its work and we'll see. I think it's because— yeah, I'm, I'm guessing the credentials were not right, so Get a real error. I know why, because we don't have the email field in here.
Up, email. Most likely because integration isn't connected to connection.
Add connection. No, I don't believe that's it. I think the database schema doesn't match. So name, email, that date. So let's see if we can actually change the property here.
Okay, name.
Can we have an email? Yeah, I want to do that.
So we're going to do name We're going to have email, which is an email, and then the date. Boom.
Okay, so now let's try again.
Failed.
If your database is missing any of these values, workspace Grab the—
ah, okay.
So I actually got the wrong ID. This is the one that we needed. So we need to update the Vercel environment variables that we have set up and notion_database, it needs to change here and we need to put this instead.
So let's refresh.
Let's try again. All right, join the waitlist.
Oops, still not working. Let's just clean this out. Okay, so we— so here are the console errors when we try to sign up.
Gonna take a screenshot of the database.
The waitlist table is done.
So, Milan Doloman logs. Okay, so what we can do is go into the logs. API Notion. Okay, so this is actually a Notion—
could not find database. Okay, Notion error, and the error is— okay, because did I Found it.
You're using the wrong ID, database ID. Okay. I thought I had, because I think we'll need, we need to deploy. Yeah.
Okay.
So let me make sure.
Sorry guys. I missed this.
Notion database, making sure that this match what I have here.
Uh, it doesn't. Edit. Okay, it does. Great.
Save, redeploy, and okay. Because I didn't deploy, the new environment variable was not taken in consideration. So now we need to wait for the deployment to happen, which is gonna take 40 seconds. And we now have, uh, sure. Yours is— okay.
Waitlist. Oh, waitlist. Connection, add connection. Connection, add connections. Waitlist. Add to page.
Okay, probably I had to do this as well. All right, so now we are going to actually refresh the page. We have the new deployment, so Max.
All right, join the waitlist. Ooh, look at this!
And now we have Max on the waitlist.
We don't have the date somehow, but we can simply ask the Cloud Code to help us to do that. So we can say, "It worked. Now please—" Also the date. All right.
And then from this template, what we can do actually on, on the next page, we could— I, I could go on and on and, uh, talking to Claude with this, but basically what we need to do now is to add a form to actually collect information for the application. So we are on the waitlist. If we want people to join a specific type of program or anything, then we would have a bigger form to actually ask them questions, qualify them, and see if they are actually a good fit when the time has come to open the enrollment. So that was it. I just wanted to show you guys how to literally build something like this. So now Claude is telling me the template clones into a GitHub repo, finds the file. Okay, so we would need now to open the repo inside of Cloud Code, which is already inside of GitHub because we have connected it to, to here. So if we go to, I believe it's in settings, Git, it is now inside of GitHub and we have the entire thing in here. And all, all I would have to do is just connect to this GitHub. And open it into my, uh, Cloud Code and then make the changes that I need recommended here. And I will be able to pass the date into Notion. So that's it for this video. Let me know if you guys have any questions and I will see you in the next one. Peace.
More from Maxime

I was talking to one of my clients' husband today and she's very not tech savvy and her hu

Most of the time we undercharge in the marketplace because we feel we do is not valuable e









