Skip to main content
RapidDev - Software Development Agency
weweb-tutorial

WeWeb Hosting and Custom Domains: Cloud vs Self-Hosting

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.

What you'll learn

  • The infrastructure behind WeWeb Cloud hosting (AWS + CloudFront CDN) and what session/bandwidth limits mean
  • How to connect a custom domain with DNS CNAME configuration and automatic SSL
  • The difference between WeWeb Cloud hosting and self-hosting — when to choose each
  • How to configure staging environments for testing before production releases
  • All four hosting plan tiers and which one matches your app's traffic needs
Book a free consultation
4.9Clutch rating
600+Happy partners
17+Countries served
190+Team members
Intermediate10 min read20-30 minWeWeb Essential plan and above for custom domains; Free plan for WeWeb subdomain onlyMarch 2026RapidDev Engineering Team
TL;DR

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

1

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.

2

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.

3

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.

4

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.

5

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.

6

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.

7

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.

8

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

dns-configuration-guide.md
1# WeWeb Custom Domain DNS Configuration
2
3## Subdomain Configuration (Recommended)
4
5### Cloudflare DNS Settings
6Type: CNAME
7Name: app
8Target: your-project-id.weweb-hosted.com
9Proxy: DNS Only (gray cloud) during verification
10TTL: Auto
11
12### GoDaddy DNS Settings
13Type: CNAME
14Host: app
15Points to: your-project-id.weweb-hosted.com
16TTL: 1 Hour
17
18### Route 53 (AWS) DNS Settings
19Record type: CNAME
20Record name: app.yourdomain.com
21Value: your-project-id.weweb-hosted.com
22TTL: 300
23
24## Root Domain Configuration (yourdomain.com)
25
26### Cloudflare (supports CNAME flattening)
27Type: CNAME
28Name: @
29Target: your-project-id.weweb-hosted.com
30Proxy: DNS Only initially
31
32### Other providers (use ALIAS/ANAME if supported)
33Type: ALIAS or ANAME
34Name: @
35Target: your-project-id.weweb-hosted.com
36
37## Verification Checklist
38- [ ] CNAME record created at DNS provider
39- [ ] No conflicting A records at same name
40- [ ] DNS propagated (verify at dnschecker.org)
41- [ ] WeWeb domain verification shows Verified
42- [ ] HTTPS works (SSL auto-provisioned by WeWeb)
43- [ ] App loads at custom domain
44- [ ] Old weweb.io subdomain still works (backup access)
45
46## Common DNS Issues
47
48# Issue: Verification stuck at Pending
49# Fix: Check propagation at dnschecker.org
50# Remove conflicting A/AAAA records
51# Wait up to 48h for slow DNS providers
52
53# Issue: SSL certificate error
54# Fix: Ensure domain is verified in WeWeb first
55# Disable Cloudflare orange-cloud proxy temporarily
56# Re-trigger verification in App Settings
57
58# Issue: Root domain not working
59# Fix: Use Cloudflare for CNAME flattening support
60# Or configure www subdomain and redirect from root

Common 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.

ChatGPT Prompt

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.

WeWeb Prompt

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.

RapidDev

Talk to an Expert

Our team has built 600+ apps. Get personalized help with your project.

Book a free consultation

Need help with your project?

Our experts have built 600+ apps and can accelerate your development. Book a free consultation — no strings attached.

Book a free consultation

We put the rapid in RapidDev

Need a dedicated strategic tech and growth partner? Discover what RapidDev can do for your business! Book a call with our team to schedule a free, no-obligation consultation. We'll discuss your project and provide a custom quote at no cost.