WeWeb hosts your app on AWS with CloudFront CDN and supports custom domains starting on the Launch hosting plan. Add a CNAME record pointing to WeWeb's servers, verify in App Settings → Hosting → Custom Domain, and SSL is provisioned automatically. For self-hosting, export code to Vercel or Cloudflare instead — no WeWeb hosting plan needed. Session and bandwidth limits are per project, per hosting tier.
WeWeb Hosting: Custom Domains, CDN Infrastructure, and Deployment Options
WeWeb gives you two deployment paths: WeWeb Cloud (managed hosting on AWS with CloudFront CDN) or self-hosting (export your code and deploy anywhere). Both paths start with publishing in the WeWeb editor. WeWeb Cloud is the simpler option — you add a hosting plan, configure DNS, and WeWeb handles everything else including SSL certificates. Self-hosting requires an Essential seat plan for code export and gives you more control, no session limits, and often lower cost for high-traffic apps. This tutorial covers the WeWeb Cloud path in detail: hosting plan tiers, custom domain DNS configuration, SSL setup, staging environments, and the decision framework for choosing between cloud and self-hosting.
Prerequisites
- WeWeb account on Essential plan or above (required for custom domains)
- A registered domain name with access to your DNS provider (Cloudflare, GoDaddy, Route 53, etc.)
- A published WeWeb project (publishing is required before a domain can serve your app)
- Understanding of basic DNS concepts (CNAME records, DNS propagation)
Step-by-step guide
Choose between WeWeb Cloud hosting and self-hosting
Choose between WeWeb Cloud hosting and self-hosting
Before configuring DNS, decide which hosting path is right for your project. WeWeb Cloud is ideal if you want managed infrastructure, automatic builds on publish, easy staging environments, and a single dashboard to manage everything. Self-hosting is better when you need zero session/bandwidth limits, faster global performance (Cloudflare edge), air-gapped compliance requirements, or lower total cost for high-traffic apps. The key trade-off: WeWeb Cloud has session limits (500/month on Free, up to 250,000/month on Scale), while self-hosting on Cloudflare Pages or Vercel has no session limits. To start WeWeb Cloud setup, continue to the next steps. For self-hosting, refer to the WeWeb Export Code tutorial which covers the Vercel and Cloudflare deployment process.
Expected result: You have decided whether to use WeWeb Cloud or self-hosting, based on your traffic and cost requirements.
Select and add a WeWeb hosting plan to your project
Select and add a WeWeb hosting plan to your project
Navigate to your WeWeb editor and click the gear icon in the left navigation bar to open App Settings. Select the Hosting tab. You will see your current hosting configuration — by default, projects are on the Free hosting tier (WeWeb subdomain, 500 sessions/month). To add a paid hosting plan, click Add Hosting Plan or Upgrade. The available tiers are: Free ($0, weweb.io subdomain, 500 sessions/month, WeWeb branding shown), Launch (custom domain, initial bandwidth allowance), Grow (custom domain, 200GB bandwidth), and Scale (up to 250,000 sessions/month, up to 10GB app size, staging environments, removes WeWeb branding). Select the appropriate tier for your needs and complete the billing steps. Note: Adding a hosting plan requires your seat plan to be Essential or above.
Expected result: Your project shows an active paid hosting plan in App Settings → Hosting, and the custom domain configuration option is now available.
Publish your project to make it available for DNS routing
Publish your project to make it available for DNS routing
Before configuring your custom domain, ensure your project is published. WeWeb Cloud hosting only serves the last published version of your app. In the editor top-right, click the Publish button. In the publish dialog, verify you are publishing to the Production environment. Click Publish and wait for the build to complete (typically 30-90 seconds). While the build runs, the dialog shows a progress indicator. Once complete, your app is live at your WeWeb subdomain (e.g., yourapp.weweb.io). Verify it loads correctly before proceeding to custom domain setup — troubleshooting DNS is easier when you know the underlying app is working.
Expected result: Your app loads correctly at its weweb.io subdomain URL before you configure the custom domain.
Configure a custom domain in App Settings
Configure a custom domain in App Settings
In the WeWeb editor, navigate to App Settings → Hosting → Custom Domain. Click Add Custom Domain. Enter your domain name (e.g., app.yourdomain.com or yourdomain.com for a root domain). WeWeb will display the CNAME record you need to create at your DNS provider. The target will be something like your-project-id.weweb-hosted.com. Copy this CNAME target value — you will need it in the next step. WeWeb also shows the verification status, which starts as Pending. Leave this page open while you configure DNS. Note that WeWeb Cloud supports both subdomain configurations (app.yourdomain.com) and root domains (yourdomain.com), though root domain CNAME records require CNAME flattening support at your DNS provider (Cloudflare supports this natively).
Expected result: The App Settings → Hosting → Custom Domain screen shows the CNAME record values you need to configure at your DNS provider.
Create the CNAME record at your DNS provider
Create the CNAME record at your DNS provider
Log into your DNS provider dashboard (Cloudflare at cloudflare.com, GoDaddy, Route 53, Namecheap, or your registrar). Navigate to the DNS management section for your domain. Add a new DNS record with these values: Type = CNAME, Name = the subdomain you want (e.g., 'app' for app.yourdomain.com, or '@' for the root domain), Target/Value = the WeWeb CNAME target you copied in the previous step (e.g., your-project-id.weweb-hosted.com). TTL = 3600 (1 hour) or Auto. Save the record. If using Cloudflare, set the proxy status to DNS Only (gray cloud) initially — the orange cloud (proxied) can be enabled later once the domain is verified. DNS propagation typically takes 5-30 minutes but can take up to 48 hours for some registrars.
Expected result: The CNAME record is saved at your DNS provider and showing as active in the DNS dashboard.
Verify the domain and confirm SSL provisioning
Verify the domain and confirm SSL provisioning
Return to WeWeb App Settings → Hosting → Custom Domain. Click Verify or Refresh to check the DNS propagation status. WeWeb automatically provisions an SSL certificate via Let's Encrypt once the CNAME record resolves correctly. The status will update from Pending to Verified. Once verified, SSL is automatically active — no manual certificate installation required. The verification process can take anywhere from a few minutes to a few hours depending on DNS propagation speed. If verification fails after 24 hours, double-check your CNAME record for typos, confirm the record has propagated using a tool like dnschecker.org, and verify you are not using a conflicting A record at the same subdomain.
Expected result: The custom domain shows as Verified in App Settings → Hosting, with SSL active. Your app loads at your custom domain over HTTPS.
Configure a staging environment (Scale plan only)
Configure a staging environment (Scale plan only)
If your project is on the Scale hosting plan, you can set up a staging environment to test changes before publishing to production. In App Settings → Hosting, look for the Staging section. WeWeb provides a separate staging URL (typically a subdomain like staging.yourapp.weweb.io or a custom staging domain you configure). The staging environment serves a separate published version of your app. To publish to staging only, click the dropdown arrow next to the Publish button and select Staging as the target environment. This allows you to review changes on staging, get client or stakeholder approval, and then publish separately to production. For teams without the Scale plan, a common workaround is to create a second WeWeb project as a staging environment.
Expected result: Changes published to staging appear at the staging URL but not at the production custom domain, giving you a safe preview environment.
Monitor session and bandwidth usage
Monitor session and bandwidth usage
WeWeb Cloud tracks session and bandwidth usage against your hosting plan limits. To monitor current usage, go to App Settings → Hosting and look for the Usage section showing sessions used this month vs your plan limit. If you approach your session limit, WeWeb will send notification emails. To avoid service interruption for users, upgrade your hosting plan before reaching the limit via App Settings → Hosting → Upgrade Plan. For bandwidth, the Grow plan includes 200GB/month — more than sufficient for most apps but worth monitoring if you serve large media files. If you consistently hit limits, consider switching to self-hosting on Cloudflare Pages where there are no session or bandwidth limits.
Expected result: You can see current session and bandwidth usage in App Settings → Hosting and can set up alerts before limits are reached.
Complete working example
1# WeWeb Custom Domain DNS Configuration23## Subdomain Configuration (Recommended)45### Cloudflare DNS Settings6Type: CNAME7Name: app8Target: your-project-id.weweb-hosted.com9Proxy: DNS Only (gray cloud) during verification10TTL: Auto1112### GoDaddy DNS Settings13Type: CNAME14Host: app15Points to: your-project-id.weweb-hosted.com16TTL: 1 Hour1718### Route 53 (AWS) DNS Settings19Record type: CNAME20Record name: app.yourdomain.com21Value: your-project-id.weweb-hosted.com22TTL: 3002324## Root Domain Configuration (yourdomain.com)2526### Cloudflare (supports CNAME flattening)27Type: CNAME28Name: @29Target: your-project-id.weweb-hosted.com30Proxy: DNS Only initially3132### Other providers (use ALIAS/ANAME if supported)33Type: ALIAS or ANAME34Name: @35Target: your-project-id.weweb-hosted.com3637## Verification Checklist38- [ ] CNAME record created at DNS provider39- [ ] No conflicting A records at same name40- [ ] DNS propagated (verify at dnschecker.org)41- [ ] WeWeb domain verification shows Verified42- [ ] HTTPS works (SSL auto-provisioned by WeWeb)43- [ ] App loads at custom domain44- [ ] Old weweb.io subdomain still works (backup access)4546## Common DNS Issues4748# Issue: Verification stuck at Pending49# Fix: Check propagation at dnschecker.org50# Remove conflicting A/AAAA records51# Wait up to 48h for slow DNS providers5253# Issue: SSL certificate error54# Fix: Ensure domain is verified in WeWeb first55# Disable Cloudflare orange-cloud proxy temporarily56# Re-trigger verification in App Settings5758# Issue: Root domain not working59# Fix: Use Cloudflare for CNAME flattening support60# Or configure www subdomain and redirect from rootCommon mistakes
Why it's a problem: Enabling Cloudflare's orange-cloud proxy before WeWeb verifies the domain
How to avoid: During initial setup, set Cloudflare proxy to DNS Only (gray cloud). WeWeb needs to see the CNAME resolve directly to provision SSL. Once WeWeb shows the domain as Verified, you can optionally enable the Cloudflare proxy for performance benefits.
Why it's a problem: Configuring a custom domain without a paid hosting plan
How to avoid: Custom domains require both an Essential seat plan AND a paid hosting plan add-on (Launch or above). Having only the Essential seat plan without a hosting plan add-on will not enable custom domain support. Add a hosting plan in App Settings → Hosting.
Why it's a problem: Expecting session limits to apply to WeWeb editor sessions
How to avoid: Session limits count your app's end-user browser sessions — not editor sessions or developer access. Visiting your app in a browser to test it consumes sessions from your limit just like a real user visit would.
Why it's a problem: Not publishing after making changes, then wondering why the custom domain shows old content
How to avoid: WeWeb Cloud serves only the last published version. Any changes made in the editor are not visible at your custom domain until you click Publish (top-right in editor). Saving your work in the editor is not the same as publishing.
Best practices
- Use a subdomain (app.yourdomain.com) rather than a root domain for your WeWeb app — simpler DNS, works with all providers, and keeps your root domain available for marketing sites
- Verify your DNS configuration using dnschecker.org before returning to WeWeb to verify — this saves time waiting for WeWeb's verification checks
- Set up monitoring alerts for session usage before you hit your plan limit — WeWeb sends email notifications but a third-party uptime monitor gives more visibility
- If you use Cloudflare as your DNS provider, set proxy status to DNS Only during initial WeWeb domain verification, then optionally re-enable proxy after verification succeeds
- For production apps with no session limit tolerance, self-hosting on Cloudflare Pages is more reliable than WeWeb Cloud — Cloudflare has no session caps
- Keep your WeWeb subdomain (yourapp.weweb.io) functional as a backup access point — useful if DNS issues affect your custom domain
- Document your DNS configuration in a team wiki — DNS records are easy to forget and critical to recreate if you switch DNS providers
Still stuck?
Copy one of these prompts to get a personalized, step-by-step explanation.
I have configured a CNAME record pointing app.mydomain.com to my WeWeb project's CNAME target, but WeWeb still shows the domain verification as Pending after 2 hours. What should I check to troubleshoot this? I am using GoDaddy as my DNS provider.
In WeWeb, I want to set up a staging environment where I can test changes before publishing to my production custom domain. My hosting plan is the Grow plan. Does the Grow plan support staging environments, or do I need to upgrade to Scale? What is the recommended workaround if my plan does not support staging?
Frequently asked questions
Can I use the same custom domain for multiple WeWeb projects?
No. A custom domain can only be connected to one WeWeb project at a time. If you want separate apps at different subdomains (app.yourdomain.com and admin.yourdomain.com), each needs its own WeWeb project with its own hosting plan and separate CNAME record.
Does WeWeb provide SSL certificates, or do I need to set one up myself?
WeWeb automatically provisions SSL certificates via Let's Encrypt once your domain is verified. There is no manual certificate setup required. The certificate is renewed automatically before it expires. You do not need to purchase or manage SSL certificates.
What happens to my custom domain if I cancel my WeWeb hosting plan?
If you cancel your hosting plan, your app reverts to the WeWeb subdomain (or becomes unavailable if no free hosting is configured). Your DNS CNAME record will still point to WeWeb's servers but will not resolve correctly. You would need to either add a new hosting plan or update your DNS to point to a self-hosted deployment.
Can I point my apex/root domain (yourdomain.com without www) to WeWeb?
Yes, but it requires DNS provider support for CNAME flattening or ALIAS records. Cloudflare supports this natively — set the CNAME record at the '@' name. Traditional DNS providers like GoDaddy require an ANAME or ALIAS record type. If your DNS provider does not support root domain CNAME flattening, use www.yourdomain.com and configure a redirect from the root domain at your DNS provider.
Talk to an Expert
Our team has built 600+ apps. Get personalized help with your project.
Book a free consultation