# WebDIY docs > How to build, publish and run web apps with WebDIY, the AI app builder: your first app, custom domains, databases and sign-in, teams, credits and plans. URL: https://web.diy/docs/get-started/quickstart Last updated: October 30, 2026 # Build and publish your first app Build your first web app by chatting with WebDIY, try it in the Preview and put it online at its own address. By the end of this page, you'll have your own web app live on the internet, built entirely by chatting with WebDIY. All you need is a browser, an email address, and a few minutes. ## Before you start On the Free plan your organization gets 500 credits a month, and once those are gone, up to 100 a day. Credits pay for WebDIY's work on your app, for your app's computer while it's running and for hosting. If you run out partway through a message, the message stops. You can pick up again the next day, when your balance is back up to 100, or buy more credits. See [How credits work](https://web.diy/docs/plans/credits). ## Step 1: Create your account 1. Go to [web.diy](https://web.diy/) and select **Get started**. 2. Select **Continue with Google**, or enter your email address and select **Continue**. 3. If you used email, we'll send you a code. Enter it on the **Check your email** screen and select **Verify code**. 4. Enter your name, pick a theme (System, Light or Dark) and select **Get started**. > **What you should see:** You're taken to the Home screen of your new organization. ## Step 2: Describe your app 1. On Home, type what you'd like to build in the message box. Say who it's for and what it should do, something like: > A booking page for a yoga studio. Visitors see this week's classes, pick one and leave their name and email. Calm colors, and it works well on phones. 2. Send the message. > **What you should see:** Before it builds anything, WebDIY replies with questions about your idea. Sometimes it shows a short form with choices, and you can answer there or in the chat. [Write a good first prompt](https://web.diy/docs/get-started/first-prompt) has more on what to say. ## Step 3: Watch WebDIY build it Once WebDIY has what it needs, it starts building. > **What you should see:** > > - The chat shows what WebDIY is doing at each stage. > - The **Preview** tab shows "Starting your app's computer", then your app, up and running. > - WebDIY checks its own work, taking screenshots of the preview and clicking through your app, and you can follow its checklist in the chat. > - Each reply shows how many credits its message used. ## Step 4: Ask for changes To change anything, send another message, like "Make the header green" or "Add a page about the teachers". You can type your next message while WebDIY is still working. It waits as a card above the message box and runs when the current step ends. > **What you should see:** After each message the Preview updates in place, and it keeps your place in the app where it can. To try your app at another size, choose **Desktop**, **Tablet** or **Phone** in the Preview's toolbar, or drag the edge of the preview. If you'd rather see it on its own, select **Open preview in a new window**. You can open it in a new tab or a new window, or at one of 13 device sizes, anywhere between a small phone and a 4K display. ## Step 5: Publish 1. Select **Publish**, the blue button with a globe at the top of your project. Only a project's Admins can publish, and you're the Admin of any project you create. 2. In the panel that opens, select **Publish**. WebDIY builds a clean copy of your app and shows you each stage as it goes. 3. When it's finished, select **Open site**. > **What you should see:** Your app is live over HTTPS at its website.diy address. The first address is two random words and a number, like `https://quiet-river-4821.website.diy`, and you can change it. Anyone with the address can open your site, though search engines don't list website.diy addresses. On the Free plan, sites show a small "Built with WebDIY" badge. Whenever you make more changes, the Publish button shows a badge. Select **Publish**, then **Publish changes**, to update your live site. We keep your published site up even if you run out of credits. To change the address, open **Tools**, then **Publishing**. ## Where to go next - [Connect a custom domain](https://web.diy/docs/publish/custom-domains) (Pro and Max) - [Your app's database](https://web.diy/docs/database/overview) - [How credits work](https://web.diy/docs/plans/credits) --- URL: https://web.diy/docs/get-started/first-prompt Last updated: October 30, 2026 # Write a good first prompt How to phrase your first message, with examples and how WebDIY asks you questions before it builds. Think of your first message as the start of a conversation. WebDIY reads it, asks about anything it still needs to know and then starts building. The clearer you are up front, the fewer questions it'll ask, and the closer its first version will be to what you pictured. ## What to put in your first message Write it the way you'd explain the idea to the person who's going to build it. A sentence or two on each of these is plenty: - **Who it's for.** "Members of my yoga studio", "my team of six", "people who find my pottery on Instagram". - **What people do in it.** The two or three main things, like booking a class, browsing products or logging a loan. - **What it keeps.** Bookings, orders, sign-ups or notes. When your app needs to remember things, WebDIY offers it a database. - **Who signs in.** Say whether people need an account, and what each person can see. - **How it looks.** A mood, colors and any fonts you have in mind. A screenshot of a design you like says more than a description. - **What you already have.** The name, real text, prices and a logo. Attach any files you have. There's no need to fit everything into one message. Start with the heart of the idea and add features in later messages. ## A few good first messages Each of these makes a good first message. The businesses are only examples. A booking page: > A booking page for The Zen Club, my yoga studio. Visitors see this week's classes, pick one and leave their name and email. I need a page where I can see who booked each class. Calm greens and lots of white space, and it should work well on phones. A catalog for a small shop: > A website for Ember & Slip, a pottery studio. A home page with our story, a gallery of about 20 pieces with photos and prices, and an inquiry form for each piece. Save the inquiries so I can read them. Earthy colors. I've attached our logo and three photos. A tool for a team: > A tracker for our office equipment. Six of us sign in. We log who borrowed what and when it's due back, and the home page lists anything overdue. Plain and fast, no decoration. Now compare them with "Make me a website for my bakery". WebDIY can work with that too, but it'll have to ask you about everything first. ## What happens once you send it? WebDIY replies before it builds anything. It asks about the parts it can't work out from your message, and if it needs several answers, it may show a short form in the chat. Fill in the form or type a reply, whichever is easier. Once it has what it needs, WebDIY builds the first version. You can follow each stage in the chat while the **Preview** shows your app running. After that, WebDIY checks its own work, taking screenshots of the preview and clicking through your app, with a checklist in the chat. Each reply shows the credits its message used. A first build does more work than a small change, so it uses more credits. See [How credits work](https://web.diy/docs/plans/credits). ## Add pictures and files You can attach files to any message from the message box: images, PDFs, plain text and Markdown files. A message can carry up to 10 files, each up to 10 MB. - A sketch or a screenshot shows the layout you want. - A logo or a photo can go straight into your app. Ask WebDIY to use it. - A menu, price list or brief as a PDF or text file saves you typing it all out. Messages have a length limit, so if a long text won't send, attach it as a file instead. ## Keep keys out of the chat If your app uses a service like Stripe or Resend, don't paste its key into the chat. Add the key in **Keys & secrets** instead, then tell WebDIY its name. Your app reads each key by its name, so the value never needs to be in a message. See [Keys & secrets](https://web.diy/docs/database/keys-and-secrets). ## Which model should you use? The message box shows which AI model your message will use. Your plan's default is a good place to start: DeepSeek V4.1 Flash on Free, and Claude Sonnet 5.5 on Pro and Max. Select the model to pick a different one, or to set how long it thinks (Low, Medium, High or Maximum). More thinking suits harder changes, and it uses more credits. ## After the first version Ask for changes the same way, one or two at a time. Name the page, then say what you see and what you'd like instead: "On the bookings page, the date shows as a number. Show it as Tuesday, March 4." You can type your next message while WebDIY is still working. It waits as a card above the message box and runs when the current step ends. Teammates wait until your message has finished. If something looks wrong, describe it in the chat or attach a screenshot. WebDIY can read your app's logs and check the preview for itself. --- URL: https://web.diy/docs/get-started/find-your-way-around Last updated: October 30, 2026 # Find your way around Learn your way around WebDIY, from managing projects to building, previewing, and publishing apps. There are two kinds of screen in WebDIY. The dashboard is where your organization's projects, people and credits live. Inside a project, you chat with WebDIY and see your app. ## The dashboard The sidebar has **Home** and **Projects** at the top, then a group for your organization: **Team**, **Usage**, **Billing** and **Settings**. | Page | What it's for | | -------- | ----------------------------------------------------------------------------------------------------------------- | | Home | A message box for starting a new project, your three most recent projects and anything that needs your attention. | | Projects | Every project in the organization. Deleted projects stay in **Recently deleted** for 7 days. | | Team | The people in your organization, their roles and your invites. | | Usage | Every credit in and out, by day, person, message and project. | | Billing | Your plan, top-ups and invoices. | | Settings | Your profile and how you sign in, plus organization settings like which AI models members may use. | The credits card in the sidebar shows how many credits your organization has left, and selecting it opens your usage. Owners and Admins also get a button there to upgrade or top up. What you can see depends on your role. Viewers see Home, Projects and Team. Builders can open Usage, Billing and Settings, but can't change anything there. A Guest sees only **Shared with you**, the projects they've been invited to. ## Inside a project On a computer, the chat sits on the left and the workbench on the right. In the header you'll find three tabs, **Preview**, **Code** and **Tools**, and two buttons, **Share** and **Publish**. ### The chat This is where your messages and WebDIY's replies go. While WebDIY works, the chat shows what it's doing, stage by stage, and a checklist when it tests your app. - **The message box** is where you type. You can attach files and choose the AI model for each message. While a message is running, the send button turns into **Stop**. - **Details** under a reply opens **Turn details**, with the model, its thinking, the tokens and the credits that message used. - **Revert to this message**, next to a reply, opens History at the version that message made. For tips on what to say, see [Write a good first prompt](https://web.diy/docs/get-started/first-prompt). ### Preview Your app, running on its own computer. In the toolbar you'll find: - **Reload**, and the address field for the page you're on. - **Viewport**, which switches between Desktop, Tablet and Phone. Drag the edge to try other widths. - **Open preview in a new window**, with **Open in new tab**, **Open in new window** and 13 device sizes, anywhere between a small phone and a 4K display, in portrait or landscape. - **Full screen**. While your app starts or updates, the Preview shows the last picture of your app, dimmed, with a single status line like "Starting your app's computer". When a message changes your app, the Preview updates in place. Your app's computer pauses after 10 minutes without activity, and opening the project starts it again. ### Code Your project's files. Select a file to read it in the editor. Builders and Admins can edit files themselves too: select **Save** to keep a change, or **Reset** to undo it. Files are read-only while WebDIY is answering a message. Builders and Admins also get a **Terminal** for running commands on your app's computer. To download the project, open **Tools**, then **Settings**, and use **Download Code** under **Take it with you**. ### Tools Everything about the project that isn't the app itself. **Overview** sits at the top. It tells you whether your site is live and up to date, shows anything that needs you and has shortcuts to the sections used most. The rest are grouped: | Group | Sections | | ------- | ---------------------------------------------- | | Site | Publishing, Domains, Analytics, Logs, Security | | Data | Database, Users & Auth | | Connect | Keys & secrets, Integrations | | Project | Members & sharing, History, Settings | A few more sections are marked **Planned**, and they don't do anything yet. Viewers can open every section except Logs, Security and Keys & secrets. To change Publishing, Domains, Database, Users & Auth, Keys & secrets, Integrations, Security or Members & sharing, you need Admin access to the project. ### Share and Publish - **Share** opens **Members & sharing**, where you can invite people to the project and make a preview link. - **Publish** is the blue button with a globe, and it puts your app online. Only the project's Admins can publish. Everyone else sees a lock on it, with the names of the people who can. See [Publish your app](https://web.diy/docs/publish/publish-your-app). ## On a phone On phones and narrow windows, a floating bar at the bottom switches between **Chat**, **Preview** and **Tools**. Tools opens as a menu: pick a section to open it, and select **Tools** at the top to go back. There's no Code tab on phones. The header keeps the menu button, the project's name and **Publish**. --- URL: https://web.diy/docs/database/overview Last updated: October 30, 2026 # Your app's database Add a Postgres database to your app. Browse its tables, export a table as CSV and see every change WebDIY makes to it. Store information that your app collects, such as inquiries, bookings and sign-ups, in a Postgres database. WebDIY sets it up, runs it and adds the keys your app needs. It comes with sign-up and login for your app's users, and every plan includes it. ## Before you start To add or delete the database, you'll need Admin access to the project. You're the Admin of any project you create. Builders can browse the database and export tables. A project has one database, and your preview and your published site both use it. That matters while you're testing (see [One database for the preview and the live site](https://web.diy/docs/database/overview#one-database-for-the-preview-and-the-live-site)). ## Add a database When your app needs to keep data, WebDIY offers a database in the chat, on a card titled **Add a database**. A project Admin selects **Set it up**. Everyone else sees "A project admin sets this up." You can also add one yourself: 1. Open **Tools**, then select **Database** under Data. 2. Select **Add database**. > **What you should see:** After about a minute the chat says "Database ready: Your app now has a Postgres database with built-in auth." Your new database appears on the Database screen, and **Keys & secrets** lists the keys it set under **From Database**. It's a Postgres 17 database that holds the tables WebDIY creates as you build, and it comes with sign-up and login for the people who use your app (see [Add sign-in for your app's users](https://web.diy/docs/database/app-sign-in)). Six keys your app reads, like `DATABASE_URL`, are added for you too, so there's nothing to paste. ## Changing your tables Ask WebDIY in the chat, in your own words: > Add a table for bookings with the class, the person's name and email, and when they booked. WebDIY writes each change as a migration file in your project and applies it, and the **Changes** tab lists every change in order. When it checks your data, it uses read-only queries. ## Looking at your data Open **Tools**, then **Database**. There are three tabs: | Tab | What it shows | | -------- | ------------------------------------------- | | Overview | The database's status and use. | | Tables | Your tables and their rows. | | Changes | Every change WebDIY has made to the tables. | In **Tables**, pick a table to see its rows. You can filter by a column (contains, is, is empty, isn't empty) or select a column's heading to sort by it. Select a row to see all of it, and **Copy as JSON** to copy it. Rows are read when you open the table, so they don't update live. ### Email addresses start out masked Email addresses stay masked until you select **Show emails**. Then they're visible for ten minutes, or until you select **Hide emails**, and each time you show them it's recorded in the project's audit log. You can't sort or filter by email until emails are shown. ### Export a table as CSV Builders and Admins can download a table as a CSV file of up to 50,000 rows. Emails stay masked in the file unless you choose **Include emails**, and choosing it is recorded in the project's audit log. ## One database for the preview and the live site > **Warning:** Your preview and your published site share one database, so any change to data shows up in both at once. A test booking you make in the Preview is a real booking on your live site. ## Deleting the database 1. Open **Tools**, then **Database**. 2. Open the menu (**⋯**) and select **Delete database…**. 3. Type the project's name and select **Delete database**. > **Warning:** Deleting removes your tables and the accounts people use to sign in to your app, and the six keys it set disappear from **Keys & secrets**. Your published site won't be able to save anything or sign anyone in. Neon, the company that runs the database, keeps a deleted database for 7 days, so it may be possible to get it back. After that, it's gone for good. ## Where to go next - [Add sign-in for your app's users](https://web.diy/docs/database/app-sign-in) - [Keys & secrets](https://web.diy/docs/database/keys-and-secrets) - [Publish your app](https://web.diy/docs/publish/publish-your-app) --- URL: https://web.diy/docs/database/app-sign-in Last updated: October 30, 2026 # Add sign-in for your app's users Let people sign up and log in to your app with an email code or a password. Then see who's joined in Users & Auth, and sign people out or remove them when you need to. Sign-in comes with your app's database, so once you've added one, the people who use your app can sign up and log in. WebDIY builds the sign-in page into your app, and **Users & Auth** shows you who's signed up. Your app's users are the people who use the app you've built. They aren't members of your organization, and they can't open your WebDIY projects. You'll find your own teammates on the **Team** page. ## Before you start - You'll need a database. If your project doesn't have one yet, see [Add a database](https://web.diy/docs/database/overview#add-a-database). Adding it sets up sign-in at the same time. - To sign people out or remove them, you'll need Admin access to the project. Anyone on the project can see the list of users. ## Add sign-in to your app 1. Ask WebDIY for it in the chat, and say who should see what. Something like: > Let people sign up and log in with their email. Only signed-in people can see and cancel their own bookings. 2. Once WebDIY has built it, open the sign-in page in the **Preview** and sign up with your own email address. 3. Check your email for a 6-digit code and enter it. > **What you should see:** Your new account shows up in **Tools**, then **Users & Auth**. What each person can see is decided in your app's code and its database rules, and WebDIY writes both. So you'll want to say plainly in the chat who may see and change what. ## How do people sign in? | Way to sign in | What people do | | ------------------ | ---------------------------------------------------------------------- | | Email code | Type their email and get a 6-digit code. No password to remember. | | Email and password | Choose a password, and confirm their email with a code the first time. | To check which of these your app offers, open **Users & Auth**, then **Sign-in settings**. The sign-in page is part of your app, so if you'd like to change it, ask WebDIY. Sign-in emails come from a shared sender, `auth@mail.myneon.app`. It only sends 6-digit codes, not sign-in links, and there's a limit on how many emails it can send. ## See who's signed up Open **Tools**, then select **Users & Auth** under Data. On the **Users** tab you'll find: - **Accounts**, **New in 30 days** and **With an active session** at the top. - A list of people, with when they joined and when their current session started. You can search it by name, or choose **Not confirmed** under **Show** to see who hasn't confirmed their email yet. - Email addresses, masked until you select **Show emails**. Each time you show them, it's recorded in the project's audit log. Select a person to see when they joined, their email, their user ID (**Copy user ID**) and which of your tables point to them. ## Sign someone out 1. Select the person, then open **More**. 2. Select **Sign out everywhere**, then confirm. > **What you should see:** Within 15 minutes they're signed out of your app on every device. Their account and their data stay put, and they can sign back in with an email code. ## Remove an account 1. Select the person, then open **More**. 2. Select **Remove account…**, then **Remove account**. > **What you should see:** They can no longer sign in to your app. Any rows in your tables that point to them are kept. ## Where to go next - [Your app's database](https://web.diy/docs/database/overview) - [Keys & secrets](https://web.diy/docs/database/keys-and-secrets) - [Publish your app](https://web.diy/docs/publish/publish-your-app) --- URL: https://web.diy/docs/database/keys-and-secrets Last updated: October 30, 2026 # Keys & secrets Keep the API keys your app uses as secrets or public values, out of your code and the chat. Before anything goes live, each publish checks your site for your secrets. Your app may need keys to use other services, like Stripe for payments, Resend for email or OpenAI for AI features. **Keys & secrets** is where those keys live. Your app's code reads each one by its name, so the value never has to go in a file or a message. ## Is it a secret or a public value? | Kind | Who can read the value | Names | Example | | ------------ | ---------------------------------------------------------------------------- | ---------------------------------------------------------- | ----------------------------- | | Secret | Only your app's server | Can't start with `VITE_` | `STRIPE_SECRET_KEY` | | Public value | Anyone who opens your app, because it's built into the pages people download | Start with `VITE_` so your app's browser code can see them | `VITE_STRIPE_PUBLISHABLE_KEY` | If a service calls something secret, private or a password, keep it as a secret. Only use a public value for a key the service says is safe to show, like Stripe's publishable key. ## Before you start - To add, change or reveal a secret, you'll need Admin access to the project. Builders can see the names and the public values. Viewers can't open Keys & secrets. - Use a test key while you build, since your preview and your published site use the same keys. ## Add a key 1. Open **Tools**, then select **Keys & secrets** under Connect. 2. Select **Add secret**, or **Add public value**. 3. Enter the name the service or WebDIY gave you, like `RESEND_API_KEY`, and paste in the value. 4. Save the key. > **What you should see:** The key shows up in its list. Your app restarts in the Preview and picks up the new value within a few seconds. 5. Let WebDIY know in the chat which key you added and what it's for. For example: "I've added RESEND\_API\_KEY. Send a confirmation email when someone books." Names can use letters, digits and `_`, can't start with a digit and can be up to 128 characters long. Names that start with `WEBDIY_` are kept for WebDIY. A project can hold up to 100 secrets. > **Warning:** Because the Preview and your published site share keys, a live payment key charges real cards in the Preview. Use test keys while you build, and switch to live keys once you're ready to take real payments. ## Why keys don't belong in your code or the chat Anyone who opens your app can read the code that runs in their browser, and every file is kept in your project's saved versions and in Download Code. So a key written into a file can leak. - Don't paste a key into the chat. Add it in Keys & secrets instead, then tell WebDIY its name. - If a key has already been pasted or written into a file, add it in Keys & secrets, then make a new key at the service and replace the value, because the old one has been seen. - Stored values are hidden. In the chat, the terminal and the logs, a secret's value shows as `[redacted:NAME]`, even if your app prints it. > **Note:** Local key files named `.env.local`, `.dev.vars` or `.env..local` are never saved in your project's versions or in Download Code. A plain `.env` file is saved like any other file. If the **Security** screen finds a key file in your project, it offers **Move to Keys & secrets**. ## How publishing checks for secrets Every publish checks the built site for the value of each of your secrets. If it finds one, the release is **Blocked** before it goes live, and nothing changes on your live site. The release tells you which secret it found, and in which file. - Public values aren't checked, because they're meant to be public. - The check only knows about keys stored in Keys & secrets. It can't find a key that's written into your code and never stored, which is one more reason to store every key. See [Publish your app](https://web.diy/docs/publish/publish-your-app#when-a-publish-is-blocked-or-fails). ## Reveal, edit or delete a key - **Reveal** shows a secret's value to project Admins, and each reveal is recorded in the project's audit log. - The menu (**⋯**) on a key has **Edit…**, **Copy name** and **Delete…**. Keys under **From Database** are set by your app's database. WebDIY looks after them, so you don't need to change them. ## Services with ready-made key names Open **Tools**, then **Integrations**, to see 12 services and the keys each one needs: Stripe, Resend, OpenAI, Claude, Slack, Google Sheets, Google Calendar, Google Drive, Notion, Airtable, HubSpot and Discord. A service shows **Connected** once every key it needs has a value. From there, WebDIY writes the code that uses it. --- URL: https://web.diy/docs/publish/publish-your-app Last updated: October 30, 2026 # Publish your app Learn how to publish your app, manage its website.diy address, release updates, and troubleshoot common publishing issues. Publishing puts your app online over HTTPS at its website.diy address, and anyone who has that address can open it. Search engines don't list website.diy addresses, so people find your site through the links you share. Each publish builds a clean copy of your app, and your live site only changes when you publish again. So you're free to keep building in the Preview while visitors use the version you published. ## What you'll need You'll need Admin access to the project. You're the Admin of any project you create, and your organization's Owner and Admins count as Admins on every project. For everyone else, **Publish** shows a lock and the names of the people who can publish. Your organization also needs credits, because a publish can only start while it has some. And WebDIY needs to have built a first version of your app. Until it has, the panel says "Nothing to publish yet". ## Publishing for the first time 1. Select **Publish**, the blue button with a globe at the top of your project. 2. In the panel that opens, select **Publish**. > **What you should see:** The panel shows each stage as it runs: Save, Prepare, Install, Build, Upload, Deploy and Go live. You can close the panel and publishing carries on. 3. Once the panel shows **Live**, select **Open site** to visit it, or **Copy address** to share it. > **What you should see:** Your app is live at its own address, something like `https://calm-meadow-4821.website.diy`. Sites on the Free plan show a small "Built with WebDIY" badge. ## Publishing your changes When you change your app after publishing, a dot on the **Publish** button lets you know you have changes that aren't published yet. To put them on your live site, select **Publish**, then **Publish changes**. If nothing has changed, the panel says "Up to date." ## What goes into a publish - Your app's code, as it was last saved. Every publish builds it from scratch on a fresh computer. A front-end app is served as files, and if your app has its own API, the API is published with it. - The same database and keys as the Preview. Your preview and your published site share one database, so a test entry you make in the Preview is a real entry on your live site. Every key in **Keys & secrets** serves both. ## Search engines Search engines like Google and Bing don't list sites at website.diy addresses. Your site still opens for anyone with the link, and link previews still show when you share it. To show up in search results, connect a [domain you own](https://web.diy/docs/publish/custom-domains#showing-up-in-search) (Pro and Max). ## Changing the address Each project starts out with its own address made of two words and a number. To pick a different one: 1. Open **Tools**, then **Publishing**. 2. Type the new name in the **Address** block. It can be 5 to 32 characters long, using lowercase letters, numbers and single hyphens. When the check says "Available.", select **Save**. 3. If your site is live, you'll be asked to confirm. Select **Change address**. > **Warning:** The old address stops working right away, and any links people saved to it will break. For 7 days nobody can take the old address, not even this project. If you'd like your app on a domain you own, see [Connect a custom domain](https://web.diy/docs/publish/custom-domains) (Pro and Max). ## Your release history Every publish is listed in **Tools**, then **Publishing**, then **Releases**, with the newest at the top. Each one shows who started it and where it stands: **Live**, **Replaced**, **Publishing…**, **Blocked** or **Failed**. To read a release's build output, select **Show the log**. ## When a publish can't start The **Publishing** screen and the panel both tell you why. These are the usual reasons: | What you see | What to do | | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | | Only project admins publish | Ask one of the people named, or ask for Admin access in **Members & sharing**. | | Your organization is out of credits | Wait for your daily top-up, or ask an Owner or Admin to buy credits. Your published sites stay up in the meantime. | | A publish started on this project less than 2 minutes ago | Each project can start one publish every 2 minutes. The message tells you when you can start the next one. | | Your organization already has the most publishes running at once | Free runs 1 at a time, Pro 3 and Max 5. Wait for one of them to finish. | | WebDIY is working on a message in this project | Let the message finish, then publish. | ## When a publish is blocked or fails - **Blocked** means we found the value of one of your project's secrets in the built site, so the publish stopped before going live. Your live site hasn't changed. Select **Fix it in chat** to ask WebDIY to move the key out of the browser code. See [Keys & secrets](https://web.diy/docs/database/keys-and-secrets). - **Failed** means the build stopped on an error. The release shows the first error from the build output. Ask WebDIY to fix it, then publish again. ## The "Built with WebDIY" badge Free sites always show the badge. On Pro and Max you can hide it with the **Show the badge** switch in **Tools**, then **Settings**, or from the **Badge** block on the **Publishing** screen. You can also pick which corner it sits in. If your site is already published, the change reaches it within a few seconds, with no need to publish again. ## How your live site uses credits Hosting your published sites uses credits, billed by the hour. If your organization runs out of credits, your sites keep serving anyway. [How credits work](https://web.diy/docs/plans/credits) covers what hosting costs. --- URL: https://web.diy/docs/publish/custom-domains Last updated: October 30, 2026 # Connect a custom domain Give your published app a web address of your own. WebDIY guides you through the setup and takes care of HTTPS for you. With a custom domain, visitors can reach your app at an address you own, like example.com, where search engines can list it. Add your domain in WebDIY, follow the setup instructions, and we'll handle the secure connection. Your original website.diy address will continue to work, too, sending visitors on to your domain. ## What you'll need Custom domains come with the Pro and Max plans. Free doesn't include custom domains. To connect one, you need to be an Admin of the project. You're the Admin of any project you create, and your organization's Owner and Admins can manage every project. Builders and Viewers can open the Domains screen but can't change anything on it. You'll also need access to the domain's DNS settings. Those are usually with the company you bought the domain from. If the project isn't published yet, that's fine. You can still connect the domain, and it starts serving your app when you publish. ## Root domain or subdomain? | You connect | Example | What gets set up | DNS records | | ------------- | ---------------- | -------------------------------------------------------------------------------- | ----------- | | A root domain | example.com | The root domain and its www. One serves your app, and the other redirects to it. | 3 | | A subdomain | shop.example.com | Just that one address. | 2 | Either way, it counts as 1 of your organization's custom domains. ## Connecting your domain 1. In your project, open **Tools**, then select **Domains** under Site. 2. Select **Add domain** to open the **Connect a domain** dialog. 3. Enter the domain, like `example.com`, and select **Continue**. > **What you should see:** Under the field, the dialog spells out what it'll connect: "We'll connect example.com and www\.example.com". 4. In a new tab, sign in to your DNS provider and add each record the dialog lists. Use the copy button next to each name and value, so nothing gets mistyped. You'll also find the records in [The DNS records](https://web.diy/docs/publish/custom-domains#the-dns-records) below. 5. Come back to WebDIY and select **I've added them** to check the records. > **What you should see:** Each record shows **Found** or **Not found yet**, and the screen checks again every 30 seconds while it's open. You can close it and come back later. 6. Once every record is found, we verify that you own the domain and set up the HTTPS certificate. This usually takes a few minutes. > **What you should see:** The domain's card shows it as connected, and visitors reach your app at `https://example.com`. > **Note:** DNS changes usually show up within minutes, though they can take up to an hour. If we don't find the records within 7 days, the claim lapses. Select **Reconnect** on the domain's card to get fresh records. ## The DNS records ### For a root domain | Type | Name | Value | | ----- | --------- | ----------------------------------------------- | | A | `@` | `8.233.131.68` | | CNAME | `www` | `connect.website.diy` | | TXT | `_webdiy` | `webdiy-verify=…` (copy your value from WebDIY) | ### For a subdomain | Type | Name | Value | | ----- | ---------------------------------- | ----------------------------------------------- | | CNAME | your subdomain's name, like `shop` | `connect.website.diy` | | TXT | `_webdiy` | `webdiy-verify=…` (copy your value from WebDIY) | - The A record points your root domain at WebDIY, and a CNAME record points a hostname at WebDIY. The TXT record is how you prove you own the domain. - Enter the TXT name exactly as shown, underscore included. Most DNS editors add your domain to the name for you, so `_webdiy` becomes `_webdiy.example.com`. - The TXT value is different for every domain, so copy yours from WebDIY rather than from this page. > **Tip:** If your domain's DNS is on Cloudflare, set these records to **DNS only** (gray cloud) rather than Proxied. _Figure 1. The DNS checklist for a root domain: two records found, WebDIY waiting on the TXT record. Your TXT value will be different._ ## Which address do visitors land on? For a root domain, the root serves your app and www redirects to it. If you'd rather serve at www, open the menu on the domain's card and select **Serve at www\.example.com instead**. When a project has more than one domain, select **Make primary** on the one you want visitors to land on, and your other addresses redirect to it. If you want an address to serve your app directly, turn off **Redirect to primary** on its card. Search engines may then treat it as a duplicate of your primary domain. ## Showing up in search Once your domain is connected, search engines can list your app there. Your website.diy address sends visitors and search engines on to your primary domain, so your domain is the one in results. Getting listed takes time, and adding your domain to Google Search Console shows you when Google has found it. If you disconnect the domain, or it moves to another project, your site goes back to its website.diy address and drops out of search results over time. ## What if the domain is already in use? If the domain is already connected to another project, WebDIY tells you as soon as you enter it. Add the records and check them as usual. Once they're verified, the domain moves to this project and the other project stops serving at it. ## Disconnecting a domain Open the menu on the domain's card and select **Disconnect**. Your app stops serving at that domain right away, and its slot goes back to your organization. The DNS records stay where they are at your provider, so remove them there if you don't need them anymore. ## How many domains you can connect | Plan | Custom domains | | ---- | ------------------- | | Free | Not included | | Pro | 5 per organization | | Max | 50 per organization | - All the projects in your organization share these slots, and a root domain with its www counts once. - A deleted project holds on to its slots for 7 days, until it's deleted for good. - When every slot is taken, **Add domain** is unavailable. Disconnect a domain you're not using, or upgrade. - If your organization moves to Free, the domains you've connected keep serving, but you'll need Pro to connect another one. To compare plans, see [Plans](https://web.diy/docs/plans/overview). ## Troubleshooting ### My domain still shows my old website Your DNS provider probably still has A, AAAA or CNAME records from a previous website. Remove the old records for the names you're connecting so only WebDIY's are left, then give DNS a few minutes to catch up. ### I'm getting a Cloudflare 1001 or 1003 error Your DNS is on Cloudflare and the record is set to Proxied (orange cloud). Switch this domain's records to DNS only (gray cloud), wait a few minutes and try again. ### Verification keeps failing Start with the TXT record. Its name keeps the underscore (`_webdiy`) and its value has to match exactly, so it's best to use the copy button. If there's already a TXT record with a different value, probably from an earlier claim, replace its value with the one WebDIY shows. ### The certificate seems stuck If your domain has CAA records, they need to allow both certificate authorities. Add `0 issue "pki.goog"` and `0 issue "letsencrypt.org"`, or remove the CAA records. NOT YET SEEN BY A PERSON ON PRODUCTION: the first real root-domain connect (§5). Ask the operator before publishing this page. --> --- URL: https://web.diy/docs/plans/overview Last updated: October 30, 2026 # Plans Free, Pro and Max side by side, with the credits, models, custom domains and seats each one comes with, plus what you get on every plan. Whichever plan you're on, you build the same way, on the same stack, with the same database, sign-in and publishing. Where they differ is in credits, models, custom domains and how many people can join. A plan belongs to an organization, so everyone in it shares the same credits, seats and domains. ## How the plans compare | | Free | Pro | Max | | ------------------------------------ | ------------------- | ------------------------------ | ----------------- | | Price | $0, no card needed | $19.99 a month, or $199 a year | $199 a month | | Plan credits | 500 a month | 2,000 a month | 20,000 a month | | Daily top-up | Up to 100 a day | Up to 100 a day | Up to 100 a day | | Models | 6 | 13 | 14 | | Default model | DeepSeek V4.1 Flash | Claude Sonnet 5.5 | Claude Sonnet 5.5 | | Thinking, up to | Medium | High | Maximum | | Custom domains, per organization | None | 5 | 50 | | Remove the "Built with WebDIY" badge | No | Yes | Yes | | People in the organization | 3 | 5 | 10 | | Publishes building at once | 1 | 3 | 5 | Prices are in US dollars. Paying for Pro yearly works out to $16.58 a month, while Max is billed monthly only. Free comes with 3 projects. ## What you get on every plan - WebDIY builds your app as you chat. It asks about your idea, writes the app, runs it in the Preview and checks its own work. - You can read and edit the code. Open **Code** to work on any file, or take the code with you using **Download Code**. - Your app gets a Postgres database, with sign-up and login for your app's users. See [Your app's database](https://web.diy/docs/database/overview). - You can publish to a free website.diy address, served over HTTPS. Search engines don't list website.diy addresses. See [Publish your app](https://web.diy/docs/publish/publish-your-app). - **Keys & secrets** holds up to 100 keys per project, and every publish is checked for your secrets first. See [Keys & secrets](https://web.diy/docs/database/keys-and-secrets). - Your team gets roles: Owner, Admin, Builder, Viewer and Guest. - An Owner or Admin can add your organization's own Anthropic or OpenAI key, and that maker's model tokens then cost no credits. - Usage keeps a statement of every credit in and out for the last 92 days, which you can export as CSV. - Any plan can buy more credits, starting at $5 for 400. On every plan you can also attach up to 10 files to a message, each up to 10 MB. ## How many credits you get Credits cover WebDIY's work on your app, your app's computer while it runs, and hosting for your published sites. Every plan comes with plan credits, and the daily top-up means you can keep building when they run low. - On Free, your plan credits reset to 500 at the start of each month (UTC). - On Pro and Max, they reset to 2,000 or 20,000 when your plan renews. A yearly plan resets them each month. - On any plan, if your plan credits run out before then, they come back up to 100 at midnight UTC each day. - Unused plan credits don't carry over. Credits you buy are kept separately. They're spent after your plan credits and don't expire. [How credits work](https://web.diy/docs/plans/credits) explains what uses credits and what happens when you run out. ## Which models you can use You pick the model for each message in the message box. Free offers 6 models, with DeepSeek V4.1 Flash as the default. Pro offers 13 and Max 14, both with Claude Sonnet 5.5 as the default. You also choose how long the model thinks: Low, Medium, High or Maximum. Your plan sets the highest level you can pick, and some models offer fewer levels. Owners and Admins can set the organization's default model and choose which models members may use, in **Settings**, then **Models**. That's also where they can add the organization's own Anthropic or OpenAI key, under **Your own AI keys**, with **Connect key**. That maker's models then run on your key, so their tokens cost no credits, though your app's computer still does. A key also opens up every model and thinking level from that maker, on any plan. ## Your plan belongs to your organization Everything you build belongs to an organization, and so do its credits, people and domains. - You can have one Free organization. - If you'd like another organization, say one per client, select **New organization**, give it a name and choose Pro or Max, then select **Continue to payment**. It starts once the payment goes through on Stripe. - Seats count the Owner, members and pending invites. A Guest invited to a single project doesn't take a seat. ## Changing your plan Owners and Admins change the plan on the **Billing** page and pay through Stripe. - An upgrade starts right away. You pay for the rest of the current period, and your plan credits rise to match. - A move to a lower plan waits until the end of the period you've paid for. - To cancel, select **Cancel subscription…** in the Billing page's menu. Your plan runs to the end of the period you've paid for, and then the organization moves to Free. If its Owner already has a Free organization, it goes on hold instead until someone chooses a plan. There's no refund for the days in between. Your projects and any credits you bought stay put. - If your organization moves to Free, its connected custom domains keep serving, but you'll need Pro or Max to connect another one. The [Pricing](https://web.diy/pricing) page has the full comparison. --- URL: https://web.diy/docs/plans/credits Last updated: October 30, 2026 # How credits work One credit balance pays for everything WebDIY does for your organization. Find out what uses credits, how they refill and what happens if you run out. Your organization has one credit balance that everyone in it shares. It pays for WebDIY's work on your app when you send a message, for your app's computer while it runs and for hosting your published sites. ## Where credits come from There are two kinds. Plan credits come with your plan and refill on a schedule. Purchased credits are the ones an Owner or Admin buys. They're spent after your plan credits, and they don't expire. | Plan | Price | Plan credits | | ---- | ------------------------------ | ------------------------------ | | Free | $0 | 500 a month, then 100 a day | | Pro | $19.99 a month, or $199 a year | 2,000 a month, then 100 a day | | Max | $199 a month | 20,000 a month, then 100 a day | Plan credits refill like this: - On Free, they reset to 500 at the start of each month (UTC). - On Pro and Max, they reset to 2,000 or 20,000 when your plan renews. A yearly plan resets them each month. - On any plan, if they run out before then, they come back up to 100 at midnight UTC each day. - Unused plan credits don't carry over to the next month or period. ## What uses credits | What | How it's charged | Where you see it | | ------------------- | ----------------------------------------------------------------- | ------------------------------ | | Messages | The model's work on your message, at the model maker's price | Under each reply, and in Usage | | Your app's computer | Its running time, about 21 credits an hour, charged when it stops | Usage | | Hosting | Your published sites' requests and CPU time, billed each hour | Usage, and Analytics | ### Messages Each message is charged for the model calls it makes, at the model maker's price for the tokens it reads and writes. So a message that reads a lot of files or writes a lot of code uses more credits than a small change. On Pro and Max, the default model, Claude Sonnet 5.5, costs 250 credits per million tokens it reads and 1,250 per million it writes. On Free, the default, DeepSeek V4.1 Flash, costs 37.5 and 150. If an Owner or Admin adds the organization's own Anthropic or OpenAI key, that maker's models run on the key. Their tokens cost no credits, though your app's computer still does. Each reply shows how many credits its message used. If you press Stop, you're charged for the steps the model already ran. ### Your app's computer Each project gets its own computer, which runs while you build, preview or share it, at about 21 credits an hour. It pauses after 10 minutes without activity and starts again when someone opens the project. That includes opening it as a Viewer or through a preview link, and your organization pays for that time too. ### Hosting Published sites are charged for the requests they serve and the CPU time they use: about 37.5 credits per million requests, plus 2.5 credits per million milliseconds of CPU time, billed each hour. Analytics shows how many hosting credits each published site uses per day. ## Keeping an eye on your credits Each reply shows the credits its message used, and the credits card in the dashboard sidebar shows your current balance. For the full picture, open Usage. It lists every credit in and out for the last 92 days, by day, person, message and project, and you can export it as CSV. ## What happens if you run out New messages and new publishes won't go through, and a message that's already running stops once it has spent what's left. Your published sites keep serving, and your projects and their files stay as they are. To carry on, wait for your daily top-up, ask an Owner or Admin to [buy credits](https://web.diy/docs/plans/credits#buy-credits), or upgrade your plan. ## Buy credits Owners and Admins can buy credits on the Billing page. | You pay | You get | | ------- | ------------- | | $5 | 400 credits | | $10 | 800 credits | | $25 | 2,000 credits | | $50 | 4,000 credits | | $100 | 8,000 credits | Like all purchased credits, they don't expire, and they're spent after your plan credits. ## Upgrading or downgrading - An upgrade takes effect right away. You pay for the rest of the current billing period, and your plan credits rise to the new plan's monthly credits, scaled to the share of the period that's left. Say you move from Pro to Max with half the period left: your plan credits go up to 10,000. An upgrade never lowers your credits. - A downgrade takes effect at the end of the billing period. --- URL: https://web.diy/docs/help/troubleshooting Last updated: October 30, 2026 # Troubleshooting Find quick fixes for common WebDIY issues, from app previews and publishing to credits, messages, and sign-in. Browse the solutions below to find and fix your issue. If you can't find what you're looking for, describe the problem in your project's chat. WebDIY can check your app's logs and preview to help identify what's going wrong. ## The preview ### The preview says "Preview paused" Your app's computer paused after 10 minutes without activity. Your files are saved. Select **Wake preview** to start your app again. ### The preview is stuck starting While your app starts up, the Preview shows what it's doing, like "Starting your app's computer" or "Installing packages". It can take a while after a change to your app's packages. If it's been showing "Taking longer than usual" for a few minutes, reload the page. If it says "Preview can't start right now", give it a minute and try again. ### The preview says "Your app didn't start" or "Your app stopped" Your app hit an error while running, but your files are safe. Select **Ask WebDIY to fix it** and WebDIY drafts a message in the chat about what went wrong, ready for you to send. You can also select **Restart the app** to start it again, or **Show details** to see what your app printed. ### The preview says "This page hit an error" The page you're on stopped drawing because of an error in its code. Ask WebDIY to fix it, and mention which page it is. To look at the page as it is, select **Show the page**. ### My change doesn't show in the Preview The Preview updates in place after a message that changes your app. If the change isn't there, select **Reload** in the Preview's toolbar. If it's still missing, tell WebDIY what you expected to see. ### A preview link I shared doesn't open Preview links last 7 days, and a link stops working as soon as someone makes a new one. Ask a project Admin to make a fresh link in **Members & sharing**. A preview link is for showing the app while you build it, so to share the finished app, publish it. ## Messages ### A message stopped before it finished The message says why it stopped: - If it took too long, send another message, like "Carry on", and WebDIY picks up from the files it has already written. - If your organization ran out of credits, see [I'm out of credits](https://web.diy/docs/help/troubleshooting#im-out-of-credits). - If someone pressed Stop, the work done so far is kept. Whatever the reason, you're charged for the steps the message already ran. ### WebDIY's reply stalled If a model's reply stops partway through, WebDIY tries again once within the same message and leaves a small note. If the model's provider is busy, the chat will tell you. Try again in a moment, or pick a different model. ### I can't send a message Usually it's one of these: - Someone else's message is running. Only the person whose message it is can send until it ends, and the message box shows who that is. A project Admin can stop it. - You're a Viewer. Viewers can see the project and the Preview, but they can't chat with WebDIY. Ask a project Admin for Builder access. - Your organization is out of credits or on hold. See below. ### I can't save an edit in Code You'll need Builder or Admin access to the project to edit files. Files are also read-only while WebDIY is answering a message, so wait for it to finish and try again. ### WebDIY keeps getting something wrong It helps to be specific. Name the page, describe what you see and what you'd like instead, and attach a screenshot. If you want to go back to an earlier version, select **Revert to this message** on a reply, or open **Tools**, then **History**. ## Credits ### I'm out of credits New messages and publishing wait until there are credits again. In the meantime your published sites stay up, and your projects and files are kept. To get going again, you can: - wait until midnight UTC, when your plan credits come back up to 100; - ask an Owner or Admin to buy credits on the **Billing** page; or - upgrade your plan. [How credits work](https://web.diy/docs/plans/credits) has the details. ### My credits go down when I'm not building Your app's computer uses credits while it runs. It starts whenever anyone opens the project, Viewers and people with a preview link included, and it pauses after 10 minutes without activity. Hosting your published sites uses credits too, billed each hour. To see where each credit went, open **Usage**. ## Publishing ### Publish is locked Only a project's Admins can publish, and the lock shows who they are. Ask one of them, or ask for Admin access yourself. ### A publish won't start, or it was blocked The Publish panel and the **Publishing** screen both tell you why. For what each reason means and what to do about it, see [When a publish can't start](https://web.diy/docs/publish/publish-your-app#when-a-publish-cant-start) and [When a publish is blocked or fails](https://web.diy/docs/publish/publish-your-app#when-a-publish-is-blocked-or-fails). ### My live site doesn't show my latest changes Your live site only changes when you publish. To send your latest changes there, select **Publish**, then **Publish changes**. ### My custom domain doesn't work The custom domain page has its own [Troubleshooting](https://web.diy/docs/publish/custom-domains#troubleshooting) section with the usual fixes. ### My site doesn't show up on Google Search engines don't list sites at website.diy addresses. To show up in search results, connect a [custom domain](https://web.diy/docs/publish/custom-domains#showing-up-in-search) (Pro and Max). If your site is already on a custom domain, give it time: a new site can take days or weeks to appear. Google Search Console shows you what Google has found. ## Data, sign-in and keys ### Test entries show up on my live site That's expected. Your preview and your published site share one database, so anything you enter while testing in the Preview is real on your live site too. [Your app's database](https://web.diy/docs/database/overview) explains more. ### My app doesn't pick up a key I added - Saving a key restarts your app in the Preview, so give it a few seconds. - Your app's browser code only sees public values whose names start with `VITE_`. - Public values are built into your pages when you publish, so after you change one, you'll need to publish again. See [Keys & secrets](https://web.diy/docs/database/keys-and-secrets). ## Signing in to WebDIY ### My sign-in code didn't arrive If our email isn't in your inbox, check your spam or promotions folder. You can also select **Send new code** on the **Check your email** screen, though there's a short wait between codes. If a code is refused as invalid or expired, ask for a new one. And if the screen says the sign-in has expired, select **Start again** and enter your email again. ### My organization is on hold Everything in it is still there and its sites stay up, but nobody can build or publish until an Owner or Admin chooses a plan or pays for the one they picked. You'll find the button for that in the banner at the top. ## Still stuck? Tell WebDIY about it in your project's chat: what you're seeing and what you expected instead. It can read your app's logs and look at the Preview, so it can often find the cause on its own.