
Database options

ServerlessWP supports MySQL or a SQLite database stored in Vercel Blob or an S3-compatible bucket. SQLite runs on demand, but some plugins are incompatible and competing database writes can fail. Use MySQL for sites with multiple active editors or frequent submissions. See how SQLite + S3 works.
Database selection follows this order:
- MySQL: all four connection variables below are set.
- SQLite + S3:
SQLITE_S3_BUCKETis set. - SQLite + Vercel Blob:
BLOB_STORE_ID,SQLITE_BLOB_STORE_ID, orSQLITE_BLOB_READ_WRITE_TOKENis set on Vercel. - Otherwise, the setup page appears.
SQLite + Vercel Blob
Connect a private Blob store in your Vercel project’s Storage tab. Vercel supplies the store ID and OIDC authentication; each new git branch starts with its own fresh SQLite database. The deploy button handles this setup and shares the store with media uploads.
| Environment variable | Purpose / default |
|---|---|
BLOB_STORE_ID | Connected store ID; supplied by Vercel. |
SQLITE_BLOB_STORE_ID | Optional database-specific store ID; overrides BLOB_STORE_ID. |
SQLITE_BLOB_READ_WRITE_TOKEN | Optional static token instead of OIDC. The database does not use BLOB_READ_WRITE_TOKEN. |
SQLITE_BLOB_PATHNAME | Database base name; default: wp-sqlite. |
For separate database and upload stores, connect the private database store with the SQLITE environment variable prefix and the upload store without a prefix.
SQLite + S3
Create a private S3-compatible bucket (including Cloudflare R2), preferably near your functions. Works on Netlify, AWS, and Vercel.
| Environment variable | Purpose |
|---|---|
SQLITE_S3_BUCKET | Bucket name. |
SQLITE_S3_API_KEY | API access key. |
SQLITE_S3_API_SECRET | API secret key. |
SQLITE_S3_REGION | Bucket region. |
SQLITE_S3_ENDPOINT | Optional custom endpoint, e.g. for Cloudflare R2. |
MySQL database option
Create a MySQL-compatible database and set the following; wp-config.php connects automatically. TiDB is one hosted option.
| Environment variable | Purpose |
|---|---|
DATABASE | Database name. |
USERNAME | Database user. |
PASSWORD | Database password. |
HOST | Database host. |
TABLE_PREFIX | Optional table prefix. |
Media uploads on Vercel Blob
The stream wrapper persists uploads in object storage because local writes do not survive redeploys. The deploy button enables it; for an existing project, configure: