Free Course for Therapists & CounselorsTherapist Website

Module 8 · Go live

Deploy on Vercel (and test the form for real)

12 min

Stage 7 of the kit begins. In this lesson your site stops being a folder on your laptop and becomes a website anyone can open. That step is called a deploy: publishing a site so anyone can open it. Then you’ll send a real message through the live contact form and watch it arrive, because a form that works on your laptop can still fail on the internet.

What hosting costs, honestly

Vercel is the company that will hold your site and send it to visitors. Vercel’s free plan is for non-commercial personal use, and a practice website is commercial, so choose Pro: $20 a month, which includes one seat (one person’s login) that can publish (as of September 2026). Check vercel.com/pricing for today’s price.

If $20 a month isn’t right for you, Netlify, another hosting company, has a free plan that allows commercial use. This course’s steps are written for Vercel.

Vercel's health-privacy agreement — and why this site doesn't need it

Vercel offers a HIPAA business associate agreement, the contract a vendor signs when it handles health information for a practice, as an add-on to Pro at $350 a month. This course’s site doesn’t need it. The contact form asks only logistics, and what someone types goes from their browser straight to Web3Forms; it never passes through Vercel. Vercel serves pages and keeps ordinary visit logs (records of which pages were requested). That answer holds for this design only. If you ever add a form that saves submissions on the site, a database (a store of saved information), or a chat window, the question comes back, so ask before you add any of those.

Publish it

You’ll need your Web3Forms key from Module 5. It lives in .env.local on your laptop, a settings file that is never uploaded to GitHub. If you don’t have it to hand, ask Claude: “What’s my Web3Forms key in .env.local?” The key is public by design (it identifies your form; it isn’t a password), so it’s fine to look at.

  1. Go to vercel.com/new.
  2. Sign up or sign in using your GitHub account, the one from Module 7. That choice is what connects the two services, so don’t make a separate email-and-password account. Vercel may ask whether the site is personal or commercial, or which plan you want: choose Pro. Pro may then ask for a team name (your practice’s name is fine) and a payment card. If it doesn’t ask, or you already have a free account, you’re on the free plan: open your account settings and upgrade to Pro before you click Deploy. Check what your screen says.
  3. When Vercel asks for access to your repositories, approve it.
  4. Find your website’s repository in the list and click Import next to it. You should see a settings screen for the new project.
  5. On the settings screen, change nothing except one section: open Environment Variables (Vercel moves its screens around, so check what your screen says). An environment variable is just a named setting the website reads when it starts. In the name box type NEXT_PUBLIC_WEB3FORMS_KEY. In the value box paste your Web3Forms key. Add it, and confirm both boxes were filled.
  6. Only now, click Deploy.
  7. Wait about a minute. The live link, ending in .vercel.app, appears on the congratulations screen and at the top of the project page. Open it: you should see the same site as in your preview.
The key goes in before you click Deploy

Skip the Environment Variables step and the live form looks perfect but sends nothing. Someone thinks they reached you, and you never hear about it. If you already deployed without the key: add it in your project’s Settings, then open the Deployments tab and choose Redeploy, because a new setting only takes effect on the next deploy. Vercel moves these labels around, so check what your screen says.

The address is public from the moment you click Deploy

Nobody will stumble on it, since it isn’t in Google or linked from anywhere, but anyone with the link can open it. If you skipped Module 6, go back and run the audit and the compliance check now. Don’t put the .vercel.app address on a card, in a directory profile, or in an email signature; your real address arrives next lesson.

Prefer to stay in the chat? Vercel's plugin

You added Vercel’s plugin for Claude Code in Module 0, from Anthropic’s own marketplace of add-ons. If you skipped that step, click the + next to the message box, choose Plugins, and install vercel; the prompt below also installs it if it’s missing. Then paste this:

Let Claude do the deploy

Please use the Vercel plugin to deploy my site to Vercel. If it isn't installed, install it
from the official Anthropic marketplace first (/plugin install vercel@claude-plugins-official).
Before the first deploy, add NEXT_PUBLIC_WEB3FORMS_KEY from my .env.local as an environment
variable in Vercel so my contact form works on the live site. Then give me the live link and
remind me to send a test message through the live form. I'm not technical, so tell me exactly
what to click if I need to approve something in my browser.

What to check: Claude says it added the environment variable before the deploy, and it gives you a link ending in .vercel.app. Open it: you should see the same site as in your preview. You still create the Vercel account and choose Pro yourself.

Test the form for real

You tested the form on your laptop in Module 5. This is the test that counts: the live site, the real inbox. Use made-up details only.

  1. On your .vercel.app site, open the contact page. Fill it in as “Test Person,” test@example.com, and a message like “Live form test.” Nothing real.
  2. Click Send my message. The thank-you page should load at its own address, ending in /thank-you, and start with “Thank you — I’ve got your message.”
  3. Open your Google Workspace inbox. Within a few minutes you should see an email with the subject New message from your website. Check the spam folder too.
  4. Delete the test email once it has arrived. It was a test; it doesn’t need keeping.

Then click through every page on your phone and on your laptop, and check that the crisis block shows at the bottom of every page with nothing covering it.

What if the email never arrives?

Work down this list in order. It’s almost always the first one.

  • The key isn’t in Vercel. Open your project’s Settings, find Environment Variables, and look for NEXT_PUBLIC_WEB3FORMS_KEY. If it isn’t there, add it, then Redeploy from the Deployments tab and test again.
  • The key is there but wrong. Compare it character by character with the one in .env.local; a missing last character is common. Fix it, Redeploy, test again.
  • The inbox filtered it. Search the whole mailbox, spam included, for “New message from your website.” If it’s in spam, mark it as not spam so the next one lands properly.
  • Your Workspace address isn’t receiving any email at all (test it from another account). Then the problem is Google’s setup, not the form: go back to “Set up the Workspace inbox” in Module 5 and finish Google’s “activate Gmail” step.
  • The key was set up for a different address. Web3Forms sends to the email address the key was created for. If that isn’t your Workspace inbox, create a new key for the right address, update it in Vercel and in .env.local, and Redeploy.
  • The page showed an error instead of the thank-you page. Copy the error text and give it to Claude: “My live contact form shows this error. Please find the cause and fix it.”

Web3Forms’ free plan allows 250 messages a month (as of September 2026), which is far more than a practice’s contact form receives, so a limit is very unlikely to be the problem.

Leave the analytics switched off

Vercel’s dashboard (your account’s control pages), and the video below, point to optional analytics. This course adds no analytics, tracking pixels or session recording, and Google Analytics in particular comes with no business associate agreement. On a therapy site, almost every page is about seeking care. If you ever want visitor counts, ask Claude for the one cookieless option (no tracking files in browsers) the kit’s frontend-design skill allows, and keep it off the contact and thank-you pages.

The update loop, from now on

Vercel watches your GitHub copy. When it changes, the live site changes. So updating your website is now one sentence to Claude and about a minute of waiting:

Update your live site, any time

Please save a snapshot of our changes and push them to GitHub so my live site updates.

What to check: Claude confirms the push, and about a minute later the change shows on the live site. Reload the page: you should see the new wording or picture. If you don’t, wait another minute and reload again. If the change alters what the site says, such as a fee, an opening, a state or a credential, the kit has Claude run the compliance check on the changed pages first, note it in compliance-log.md, and make a new dated archive afterwards.

1Say what to changein plain English
2Read the previewbefore it ships
3“Save and push”one sentence
4Live in about a minuteVercel republishes on its own
What success looks like

You should now see your site at its .vercel.app address on your phone, using mobile data rather than Wi-Fi. And your live test message is sitting in your Workspace inbox, with the thank-you page having loaded when you sent it.

If you get stuck

The deploy fails on Vercel, but the site runs fine on your laptop. Copy the error from Vercel’s build log (its record of the publishing step) and paste it to Claude: “My Vercel deploy failed with this error. Please fix it and push the fix.” The fix redeploys on its own: you should see a new deployment appear in the Deployments tab and, after a minute or two, show that it finished without an error. Check what your screen says.

You added the key after deploying. The site doesn’t see it yet. Open the Deployments tab, choose Redeploy, then test the form again.

Your repository isn’t in Vercel’s list. Vercel is looking at a different GitHub account, or wasn’t given access to that repository. Sign out of Vercel, sign back in with the GitHub account from Module 7, and approve access to the repository when asked.

Key takeaways
  • Add NEXT_PUBLIC_WEB3FORMS_KEY under Environment Variables before you click Deploy.
  • Vercel’s free plan is for non-commercial personal use, and a practice website is commercial, so choose Pro: $20 a month, which includes one seat that can publish.
  • Vercel’s $350-a-month health-privacy add-on isn’t needed on this design, because form text never passes through Vercel.
  • Test the live form with made-up details. If nothing arrives, the missing key is the usual cause.
  • No analytics or pixels. Updates are one sentence: save and push.

Watch this step

The same connect-and-deploy you are about to do. Three differences. It uses the free plan, but Vercel's free plan is for non-commercial personal use, and a practice website is commercial, so choose Pro. It skips the environment variable step, so do ours first. And it points to the dashboard's optional analytics: leave those off any page with your contact form. It’s from an independent creator — credited below, so go give them a follow.

How To Deploy A NextJS App To Vercel (Simple)

PedroTechCurated · third-party

More learning resources

Still want another angle? These are hand-picked and vetted to line up with this lesson — from creators and sites worth your time.