Search the exact message or symptom you see. Every entry lists the real cause recorded by the conversion engine and the fix that resolves it, including builder-specific issues.
The upload fails or never reaches 100%
Symptom: The progress bar stalls, or you see “Uploading the results to our servers failed”.
Cause: The archive contains node_modules, .git history or large media, pushing it past the practical upload size.
- →Delete node_modules and the .git folder before zipping
- →Compress images over 2 MB, or move video files to an external host
- →Zip the project folder itself, not a folder that contains several project versions
- →Retry on a stable connection — the uploader retries automatically with exponential backoff
“No project root found” or the converter picks the wrong folder
Symptom: Conversion starts but reports a missing package.json or index.html.
Cause: The ZIP has an extra wrapper folder, or contains multiple projects side by side.
- →Open the ZIP and confirm package.json or index.html sits at the first or second level
- →Remove sibling folders such as backup/, old/ or design/
- →For GitHub, use Code → Download ZIP so the structure matches the repository
The build stops because environment variables are missing
Symptom: Logs show “undefined env” or a runtime error while pre-rendering.
Cause: The project reads secrets at build time that only exist in your own hosting environment.
- →Add a committed .env.example with placeholder values
- →Guard secret usage with a fallback (for example `import.meta.env.VITE_X ?? ""`)
- →Remove backend-only code paths from the public marketing pages before exporting
The build fails on install
Symptom: The job stops early in the build stage with an npm/pnpm error.
Cause: A lockfile references a private package, or a dependency needs native compilation.
- →Include the lockfile that matches your package manager (package-lock.json, pnpm-lock.yaml or yarn.lock)
- →Remove private/registry-scoped packages that are not needed for the public site
- →Pin the Node engine in package.json if your project needs a specific major version
The build fails on TypeScript or lint errors
Symptom: “Type error” appears in the build log and the conversion is marked failed.
Cause: The project only ever ran in dev mode, where type errors are non-blocking.
- →Run a production build locally once and fix the reported errors
- →Or relax the strictest compiler flags for the export build
- →Re-export after the local production build succeeds
The preview shows an empty page
Symptom: The theme installs but the homepage is blank or shows only a header.
Cause: The app is a client-only SPA whose content is injected after hydration, and something blocked hydration during pre-render.
- →Make sure the homepage renders meaningful markup without needing an API call
- →Guard browser-only code with a mount check so it does not throw during pre-render
- →Provide static fallback content for sections that stream data
Only the homepage was converted
Symptom: The WordPress preview contains one page while your site has many.
Cause: Route discovery could not find the other routes: they are not linked and no sitemap or route manifest exists.
- →Link every page from the header, footer or a sitemap page
- →Ship a public/sitemap.xml with all routes
- →Avoid routes that only exist behind a login or a client-side redirect
The job stalls at a fixed percentage
Symptom: Progress freezes and the watchdog eventually marks the job as stalled.
Cause: A page never finishes loading — usually an endless animation, a polling request or a third-party widget.
- →Remove chat widgets, analytics and A/B testing scripts before exporting
- →Stop infinite polling loops on the marketing pages
- →Retry the job — transient render failures are retried automatically up to three times
Images are missing after conversion
Symptom: Broken image icons or empty hero sections in the WordPress preview.
Cause: Images were served by a preview host, an optimizer endpoint or a CDN that requires the original domain.
- →Store images inside the project (src/assets or public/) and import or reference them locally
- →Avoid remote-only image URLs from your builder's preview environment
- →If you use a framework image optimizer, allow unoptimized output for the export build
Fonts fall back to a system typeface
Symptom: Typography looks different in WordPress than on your original site.
Cause: Fonts were loaded from a private CDN or from a stylesheet that was not part of the export.
- →Self-host font files inside the project and reference them from your CSS
- →Keep the @font-face declarations in a stylesheet that is imported by the app
- →Google Fonts links are preserved automatically when they are in the page head
Internal links point to the wrong place
Symptom: Clicking a menu item lands on a 404 inside WordPress.
Cause: Links were generated by JavaScript state instead of real anchor elements, so they could not be rewritten to WordPress permalinks.
- →Use real <a href> or router Link elements with a concrete path
- →Avoid onclick handlers that push routes without an href
- →Re-run the conversion — the link audit rewrites and rescues near-matching paths automatically
The theme will not activate
Symptom: WordPress reports a missing stylesheet or a PHP error on activation.
Cause: The ZIP was unzipped and re-zipped, which changed the folder structure WordPress expects.
- →Upload the ZIP exactly as downloaded through Appearance → Themes → Add New → Upload Theme
- →Do not unzip and re-zip on macOS — it adds __MACOSX wrappers
- →Use PHP 8.1 or newer on your host
Forms do not send email
Symptom: The form submits but nothing arrives in your inbox.
Cause: WordPress sends mail through PHP mail() by default, which most hosts block.
- →Install Contact Form 7 or WPForms (the theme is prepared for both)
- →Add an SMTP plugin and connect a real mailbox or transactional sender
- →Send a test message from the plugin before going live
Can I look at the result before I pay?
Symptom: You want to check quality first.
Cause: Preview is intentionally free; only the deliverable ZIP is paid.
- →Open the WordPress preview and click through every page
- →Check pages, images, links and the mobile layout
- →Pay €17 only when you are satisfied — you then download the theme immediately
The download button asks for payment again
Symptom: After paying you are shown the checkout once more.
Cause: The credit had not been registered yet when the page tried to download.
- →Wait a few seconds and press the download button again — credits are confirmed by the payment webhook
- →Make sure you are signed in with the account you used at checkout
- →If it persists, open the dashboard: your paid conversion is listed there and stays downloadable
Will a page refresh charge me twice?
Symptom: You reload the download page.
Cause: Each conversion consumes exactly one credit, recorded server-side.
- →No. Once a conversion is paid, the job is marked paid and re-downloads are free
- →Every credit movement is logged and visible in your dashboard