Troubleshooting
Find what you are seeing, then the fix. Messages are quoted the way the product shows them.
Start with these checks
Upload problems
| What you see | What to do |
|---|---|
| “ZIP must contain an index.html file at the root level. If this is a React, Next.js, or Vue project, run its build command first and zip the build output folder instead.” | Your homepage must be called index.html and sit at the top of the ZIP, or inside one folder at the top. Rename home.html or Index.html to index.html, move it up, and zip again. |
| “This is a React project, not a built site” — “Nothing was uploaded.” | You uploaded source code. Run the build, then upload the folder it creates — usually dist or build. The commands for each framework are in Website hosting. |
| “This upload is 72 MB, more than the 50 MB of storage on the Free plan.” | One ZIP or folder can be up to 50 MB on Free and 500 MB on Plus and Pro. Compress large images and videos, and leave out design files, old versions and node_modules — or split the site. |
| “hero.mp4 (64 MB) is over the per-file limit: each file can be up to 50 MB on the Plus plan.” | Every file — inside a ZIP or folder too — can be up to 5 MB on Free, 50 MB on Plus and 100 MB on Pro. The message names the files: compress them (videos usually shrink a lot), or upgrade. |
| “Not enough storage: this needs 38 MB but your Free plan has 12 MB left of 50 MB.” | Storage counts every site plus your Media Library images: 50 MB on Free, 500 MB on Plus and 5 GB on Pro. Delete a site or images you no longer need, or upgrade. |
| “ZIP contains 73 files, exceeding your free plan limit of 50 files” | A ZIP or folder can hold 50 files on Free and 100 on Plus; Pro has no file limit for ZIPs and takes 500 files per folder. Remove files the site doesn't use, or upgrade. |
| “You've used every project slot.” | All of your plan's sites are in use. A Free site that has gone offline still holds its slot until it is deleted. Delete a site you no longer need, or upgrade. |
| “Daily deploy limit reached” | Deploys are limited to 15 an hour and 40 a day on Free, and 40 an hour and 150 a day on Plus and Pro. Only deploys that succeed count. Wait for the limit to reset. |
| “Another update of this site is running. Try again in a moment.” | Another upload, restore or GitHub deploy is updating the same site. Wait for it to finish, then try again. |
| The name is refused because it “contains a restricted term” | Names that could impersonate a bank, payment service, brand or sign-in page are blocked. Choose a name that describes your own site. |
| The address has extra digits at the end | The name you chose was taken, so digits were added. Addresses can't be renamed — publish again under a free name and delete this site if you need a different one. |
The security scan blocked an upload
When a scan blocks an upload, nothing is published and the dashboard lists each flagged file with one of these reasons. Fix the file and upload again; if you think the scan is wrong, contact support with the site name.
| Reason shown | What to do |
|---|---|
| Sign-in form detected | Remove the password field, or use a hosted auth provider's redirect flow instead. |
| Password field posting to another server | Remove the password field, or point the form at a supported form service. |
| Payment wording with a data-collecting form | If this is a real billing page, take payments through Stripe or PayPal rather than a raw form. |
| Reads like a brand account notice | Reword the title and headings so the page doesn't read like an account or security notice. |
| Sends visitors away automatically | Use a normal link, or redirect to a path inside your own site. |
| Hidden or encoded destination | If this came from a bundler or packer, ship a standard production build instead of an obfuscated one. |
| Cryptocurrency mining script | Remove the third-party script and check your dependencies for a compromised package. |
| Sends browser cookies off-site | Remove it. For visitor analytics, use the built-in Google Analytics integration. |
| Links to a flagged domain | Check the external links and third-party scripts in this file. |
| Triggers an executable download | Distribute installers through a release host, or package them as .zip. |
| Stylesheet can execute code | Remove those declarations — modern browsers ignore them anyway. |
| Executable file type | Remove it from the folder, or package it as .zip if visitors need to download it. |
| SVG contains a script | Re-export the SVG from your design tool, or strip the <script> and on* attributes. |
The site doesn't look right
| What you see | What to do |
|---|---|
| Images or styles are missing | Check the paths in your HTML. Use paths relative to the page, like images/logo.png — not C:\Users\… or file:///…, which only exist on your computer. Match capitals exactly: Logo.png and logo.png are different files online. |
| A file never arrived | Folder uploads keep web files only — pages, styles, scripts, images, fonts, audio, video, JSON, PDFs and similar — and leave out hidden files and program files. See Limits. |
| A blank white page | Usually framework source uploaded without building, or a build that expects to live in a subfolder. Build the project and upload the output folder; with Vite, keep the default base. |
| Refreshing a page of your app shows the homepage or “not found” | Deep links work when the site is one HTML file plus JavaScript. With several HTML files, link to the real pages, or choose what missing pages show under Page Not Found. |
Your 404.html isn't shown for broken links | It isn't picked up automatically. Choose it under Page Not Found → One of my pages. |
| An old version is still showing after an update | Browsers keep pages for up to 5 minutes, images for 30 and scripts and styles for an hour. Hard-refresh, or give a changed image or script a new file name. |
| The Visual Editor won't let you change something | It can't add or remove elements, and content your scripts create is read-only there. Use Code Edit on Pro, or change the source and use Replace files. |
The site is offline
| What you see | What to do |
|---|---|
| “This site has expired” | A Free site goes offline 3 days after it is deployed and is deleted 7 days after that. Upgrade to Plus before then and it comes straight back online; replacing its files doesn't restart the clock. |
| “Project Not Found” | No site has this address: check the spelling, or the site was deleted. |
| The site was taken down | Sites that break the terms — phishing or malware, for example — can be removed. Contact us if you think it is a mistake. |
| Your custom domain doesn't load | Check the domain still points at Dplooy — see Custom domains. The dplooy.com address keeps working either way. |
Form problems
| What you see | What to do |
|---|---|
| Nothing happens when you press Send | The form isn't posting anywhere. Its action must be your endpoint's address and method must be POST. Remove any onsubmit, event.preventDefault() or fetch code an AI added. |
| “Couldn't send your message” | The endpoint turned the message away. Open it in Forms and read the banner: it may not be assigned to your site yet, it may be paused, or the form may be on another website — turn on Allow submissions from any website. It also appears once the monthly limit is reached, or after a downgrade freezes the endpoint. |
| The message is in Forms, but no email arrived | Check your spam folder. Then check Email me new submissions and Notification address in the endpoint's settings. Messages caught as spam are never emailed. |
| “File uploads are not supported. Submit as application/x-www-form-urlencoded.” | Forms accept text fields only. Remove the file input and enctype="multipart/form-data". |
| Test messages from the Site Builder don't arrive | Test on the published site. The builder's preview and editor can't send messages. |
Passwords and analytics
- Visitors are locked out of a password-protected site — after 5 wrong passwords a visitor has to wait 15 minutes. Once in, they stay in for 24 hours.
- Analytics look low or empty — only page loads count; bots and 404s never do. On Free only the overview is shown. Numbers differ from Google Analytics because the two count differently. See Analytics.
API problems
| Status | What to do |
|---|---|
401 INVALID_API_KEY | The key is missing, mistyped or revoked. Send Authorization: Bearer dpk_live_…, or create a new key. |
429 RATE_LIMIT_EXCEEDED | More than 30 requests in a minute from one address. Wait a minute and retry. |
429 DEPLOY_LIMIT_REACHED | The hourly or daily deploy limit for your plan. Wait for it to reset. |
409 DEPLOY_IN_PROGRESS | Another update of the same site is running. Retry in a moment. |
Every code is listed in the API reference.
Account problems
- No verification email — check your spam or junk folder, then use the resend button on the verification page.
- Forgot your password — use Forgot password? on the sign-in page. The reset link expires after 1 hour.
- Signed up with Google — sign in with Continue with Google. Your password is managed by your Google account, not by Dplooy.