# Troubleshooting

> Common Seedly Sites problems and their fixes - install, live setup, deploys, domains, email, AI features, billing, and updates.

Common problems and their fixes, grouped by what you were doing. If you do not see your issue, run the doctor (`npx pnpm run setup:check`) - it names what is wrong in plain English - then ask in the Seedly Community on [Facebook](https://www.facebook.com/groups/seedly.crm).

---

## Prerequisites and the Local Sandbox

### "command not found": node, pnpm, or git

Either the tool is not installed yet ([Install guide](/docs/help/install)) or your terminal window predates the install. Close the terminal, open a new one, and try again. For pnpm, always use `npx pnpm`.

### node --version shows 20 or lower

You need Node 22 or newer. Install the current LTS from [nodejs.org](https://nodejs.org) and re-check.

### npx pnpm install fails or hangs

Retry on a stable connection. If it fails with a permissions error, close and reopen the terminal and try once more.

### The dev servers start but the browser page will not load

Give both servers a moment to finish starting. The CMS is on port 3000 and the studio on 4321; make sure nothing else is using those ports.

### The admin will not let me create a first user

A user already exists in that database. Log in with the email you expect, or use the password reset.

---

## Live Setup (Railway / Cloudflare / GitHub)

### The cms service will not boot on Railway

Check the database connection value is the Railway Postgres connection string and the production database adapter is selected on the cms service. Then read the service's deploy logs for the first error.

### The builder will not load in production

Almost always the CMS-to-studio wiring: on the cms service, confirm the studio internal URL matches your pagebuilder service's internal domain and port, then redeploy. See [Provisioning](/docs/help/provisioning).

### The doctor says NOT READY

Work top-down through the red lines; each names the exact variable or check. Set it on the correct Railway service and redeploy. The [env-vars reference](/docs/help/env-vars) explains every value.

### The doctor says a value is "still the vendor default"

Set your own value for that variable - most often the super-admin email, the deploy repo, or the platform secret.

### A check passes locally but not in prod

You set the value on your machine but not on the Railway service. Set it on the service and redeploy.

---

## Deploying a Client Site

### The Deploy action failed in GitHub Actions

Open the failed run and read the failing step. First-time failures are usually a missing GitHub Actions secret (the Cloudflare token, account id, R2 keys, or the deploy token).

### The site is live but images are broken

Check the public media URL is set correctly and the R2 bucket has a working public URL. Then redeploy the site.

### The custom domain shows the wrong site or an error

The domain must be added in two places: on the tenant's Cloudflare Pages project AND as the tenant's custom domain in the portal, with the DNS record set at your registrar. See [Hosting & Domains](/docs/help/hosting-domains).

### The pages.dev URL does not redirect to the custom domain

The redirect takes effect on the NEXT deploy after you set the custom domain. Deploy the site again.

---

## Email

### A test email never arrives

Confirm your sending domain is verified with your email provider, then check its activity log for a bounce or block. Confirm the email key and From address are set on the cms service and that it redeployed.

---

## AI Features

### Generate or port errors with an authentication message

Re-check the Anthropic API key on the cms service and confirm the service redeployed after you set it.

---

## Billing

### The Stripe webhook returns 400 or 401

The webhook signing secret does not match the endpoint, or the webhook URL is wrong. Re-copy both from Stripe and try again. See [Billing](/docs/help/billing).

---

## Updating

### After an update the admin errors about the database

You likely skipped the migration step. Back up Postgres, then run the cms migrations. See [Updating](/docs/help/updates).

---

## When in Doubt, Never

- Never restore a full database backup over a live database without a current dump of that live database first.
- Never run `provision` again on an already-live instance.
- Never commit an env file or any secret to Git.
- Never delete a Railway service, Cloudflare project, R2 bucket, or GitHub repo unless you are certain; those are one-way actions.

---
Source: https://seedlysites.com/docs/help/troubleshooting
