Environment Variables Guide
A complete guide on how to obtain and configure every environment variable for your project.
Critical (Required for the site to run)
License
These keys are required to verify your purchase and start the application.
- LICENSE_KEY — The license key you received after your purchase.
- LICENSE_PRODUCT — The identifier for the template/product you bought.
- LICENSE_SERVER_URL & LICENSE_SERVER_SECRET — Used to validate your license key on launch.
How to get these:
You will receive LICENSE_KEY, LICENSE_PRODUCT, and LICENSE_SERVER_URL in an email immediately after purchasing the template.
For LICENSE_SERVER_SECRET, you must generate your own random 32-character string. The easiest way is to ask our chatbot (widget in the bottom right corner) to generate one for you. For example, just ask: Generate 32 random characters for my LICENSE_SERVER_SECRET.
Alternatively, you can generate it using your terminal:
openssl rand -base64 32Or simply type any long, random sequence of characters.
🛡️ Staging & Development
Your license key is only "consumed" when deployed on a custom production domain. You can freely use it on localhost or *.vercel.app domains during the development phase without affecting your license binding.

Database (Neon)
Your connection to the database. Without it, the app will throw a 500 error instantly.
- DATABASE_URL — Your primary pooled database connection string.
- DATABASE_URL_UNPOOLED — The unpooled connection string (helps avoid timeouts/overloads).
- DIRECT_URL — Sometimes required by Prisma. Often has the exact same value as your regular database URL or unpooled URL.
How to configure your Neon database project:
- Go to neon.tech and sign up.
- Project nameType any name you like (e.g., your website name or "production-db").
- Postgres versionLeave it on the default version (Postgres 17). It's the most recent and stable version, fully supported by our template.
- Region (Important 🌍)Choose the region that matches your Vercel deployment location to ensure maximum speed.
- If your website is deployed in the US, select: AWS US East 1 (N. Virginia)
- If your website is deployed in Europe, select: AWS EU Central 1 (Frankfurt) or the closest European region available in the dropdown.
- Backend Services (Authentication)You can leave this unchecked/disabled. Our template already comes with its own built-in, pre-configured authentication system, so you don't need Neon's managed auth.
- Once configured, click "Create Project". A page will appear with the section "Connect your app manually". Click "Copy Snippet".postgresql://neondb_owner:p5QW...eY@ep-lingering-water-a2v...c-3.eu-central-1.aws.neon.tech/neondb?sslmode=requireThis is your
DATABASE_URLandDIRECT_URL. - For
DATABASE_URL_UNPOOLED, click "Go to project" at the bottom. At the top of the dashboard, click the "Connect" button. This opens the "Connect to your database" modal. Turn off the "Connection pooling" switch, copy the resulting string, and paste it into Vercel asDATABASE_URL_UNPOOLED.

Authentication
- NEXTAUTH_SECRET — A secret used to encrypt session tokens. Without it, you cannot log in.
- JWT_SECRET — Used for custom session encryption.
- NEXTAUTH_URL — The base URL for authentication (e.g., https://yourdomain.com).
How to get these:
For NEXTAUTH_SECRET and JWT_SECRET, you must generate random 32-character strings. The easiest way is to ask our chatbot (widget in the bottom right corner) to generate them for you. For example, just ask: Generate 32 random characters for my NEXTAUTH_SECRET.
Alternatively, you can generate them using your terminal:
openssl rand -base64 32Or simply type any long, random, secure string of characters.

Site URLs
- NEXT_PUBLIC_APP_URL
- NEXT_PUBLIC_SITE_URL
- NEXT_PUBLIC_STORE_URL
How to get these:
These should simply be set to your actual domain name (e.g., https://mywebsite.com). It is necessary for generating correct links and ensuring cookies work properly.
If you don't have a domain name yet, you need to purchase one from a domain registrar like Cloudflare, Namecheap, or GoDaddy before you can fully deploy and use the site in production.

Admin Credentials
- ADMIN_EMAIL — Your email address. The system uses this to recognize you and grant admin rights in the dashboard.
- ADMIN_PASSWORD — The password you'll use to log in as an administrator.
How to get these:
Simply invent a strong password and use your primary email address. Add them to your environment variables in Vercel.

Level 2: Important
The site will run without these, but core features will be broken. You won't be able to accept payments, upload images, or send emails.
Email (Resend)
- RESEND_API_KEY — The API key required to send emails. Without it, users won't get magic links, purchase confirmations, etc.
- EMAIL_FROM — The sender address (e.g.,
no-reply@yourdomain.com).
How to get these:
- Create an account at resend.com.
- On the main page of your dashboard, click the Add API Key button to generate your
RESEND_API_KEYfor Vercel. - To send emails to your customers from your own custom domain (like
info@yourwebsite.com):- Go to the Domains tab in the left sidebar of Resend.
- Click Add Domain and enter your domain name.
- Resend will provide a few DNS records (TXT and MX). Copy them and add them to your domain provider (Cloudflare, GoDaddy, Namecheap, Route53, etc.).
- Once verified, you can update your Vercel variables to use your real domain:
EMAIL_FROM="hello@yourwebsite.com"

Payments (Stripe)
- STRIPE_SECRET_KEY & STRIPE_WEBHOOK_SECRET — Without these, the "Buy" button won't work, and orders won't be processed after successful payment.
- STRIPE_PUBLIC_KEY — Required by the Stripe frontend to initialize payment forms and securely transmit payment data from the client.
How to get these:
- Registration & Business Setup
Log in to your Stripe Dashboard and start the activation process. You'll need to provide your business name, country, website, and describe your services.
- Choosing your business model
When prompted to select how you want to use Stripe, please choose:
👉Non-recurring payments (Accept payments for products and services using a checkout page or invoices).
Why this option?
- Standard for E-commerce, Taxi booking, and Service platforms.
- Allows customers to pay instantly for orders or booked sessions.
Note: Do NOT choose "Recurring payments" (subscriptions) or "Build a platform or marketplace" (Stripe Connect).
- Finalizing Settings
Follow the prompts for "Next, tell us what you sell" and "Who should handle global sales?". When you reach Select how you want to use Stripe, it is MANDATORY to select:
✅ Non-recurring payments
- Get your API Keys
We suggest clicking "Go to sandbox" first to verify that everything works correctly. Once confirmed, you can switch to Live mode, get the live keys, and redeploy on Vercel.
How to extract keys:
- 1. Click "Developers" (bottom left) → "API keys".Publishable key:Copy and paste as
STRIPE_PUBLIC_KEY="pk_..." - 2. Reveal the Secret key and copy it.Secret key:Copy and paste as
STRIPE_SECRET_KEY="sk_..."
Note: Restricted keys are NOT needed for this setup.
- 1. Click "Developers" (bottom left) → "API keys".
- Configure Webhooks
While still in the Developers tab, click Webhooks and then + Add destination.
1. Configure Destination
- Select "Your account".
- Keep the default API version.
2. Events to send
Search for and check the following event:
3. Destination Details
- Destination type: Webhook endpoint
- Destination name: e.g., "Production Website" or "Vercel Webhook"
- Endpoint URL (Most Important 🚀):Generated Webhook URL:
https://your-vercel-domain.com/api/webhooks/stripe
After saving, click on the new destination to see Destination details. Copy the Signing secret (it looks like
whsec_...) and use it as yourSTRIPE_WEBHOOK_SECRET.

Media (Cloudinary)
Required to upload logos, screenshots, or product images.
- CLOUDINARY_URL — The general connection URL. Usually auto-generated by combining your keys.
- CLOUDINARY_CLOUD_NAME & NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME — Your Cloudinary cloud ID.
- CLOUDINARY_API_KEY & CLOUDINARY_API_SECRET — Access keys for uploading images.
- NEXT_PUBLIC_CLOUDINARY_UPLOAD_PRESET — Instructs Cloudinary how to process and store incoming files.
How to set up Cloudinary:
- Go to cloudinary.com and Sign up for a free plan.
- When asked about your use case, select "Hobby".
- After logging in, navigate to your Dashboard → Settings (gear icon) → API Keys.
- Copy and save these values:
- Cloud Name (shown in the top left of your dashboard) ➔ paste as
CLOUDINARY_CLOUD_NAMEandNEXT_PUBLIC_CLOUDINARY_CLOUD_NAME - API Key ➔ paste as
CLOUDINARY_API_KEY - API Secret (click "reveal" to see it) ➔ paste as
CLOUDINARY_API_SECRET
- Cloud Name (shown in the top left of your dashboard) ➔ paste as
- Create an Upload Preset:
- Go to Settings → Upload.
- Scroll down to the "Upload presets" section and click "Add upload preset".
- Set the Signing Mode to "Unsigned".
- Save it, copy the name of the preset, and paste it as
NEXT_PUBLIC_CLOUDINARY_UPLOAD_PRESET.

Rate Limiting (Upstash Redis)
Upstash provides fast Redis storage used to protect your site from spam and bot attacks. Without this, attackers could exhaust your API limits quickly.
Note: If you use Cloudflare protection, this may be optional — ask support if unsure.
- UPSTASH_REDIS_REST_URL & UPSTASH_REDIS_REST_TOKEN
How to set up Upstash Redis:
- Go to upstash.com and sign in with Google or GitHub.
- Click "Create Database".
- Enter any name (e.g.,
my-site-cache) ➔ select a region matching your server (e.g., "Europe (Frankfurt)" or US) ➔ click "Create". - Open the created project, then scroll down to the "REST API" section on the database details page.
- Copy and paste:
UPSTASH_REDIS_REST_URL(the https://... URL)UPSTASH_REDIS_REST_TOKEN(click the eye icon to reveal it)

Google Maps
Required if your site relies on location services (e.g., Taxi Service template).
- NEXT_PUBLIC_GOOGLE_MAPS_API_KEY — The API key to load the maps script.
How to set up Google Maps:
- Go to console.cloud.google.com and sign in.
- Click the project selector at the top → "New Project" → name it after your site.
- In the search bar, find and enable (click "Enable") these 4 APIs one by one:
- Maps JavaScript API (the map itself)
- Places API (address search)
- Directions API (routes)
- Geocoding API (coordinates to address)
- In the left menu go to APIs & Services → Credentials.
- Click "+ Create Credentials" → "API Key".
- Copy the generated key ➔ this is your
NEXT_PUBLIC_GOOGLE_MAPS_API_KEY. - 🛡️ Security tip:Click "Restrict Key" and add your domain (e.g.,
yoursite.vercel.app) under Website restrictions. This prevents others from using your key and spending your quota.
Still stuck? We've got you.
Our support team can help you deploy your template or even do it for you.
Social Login (OAuth)
Allows users to easily sign in to your site with their existing accounts (optional but highly recommended).
GitHub Login Setup
https://yoursite.vercel.apphttps://yoursite.vercel.app/api/auth/callback/githubGITHUB_ID.GITHUB_SECRET.Google Login Setup
The most popular login method. Users love signing in with Google.
https://yoursite.vercel.app/api/auth/callback/googleGOOGLE_CLIENT_IDGOOGLE_SECRET