DEV Community

Yunus Ertürk
Yunus Ertürk

Posted on Originally published at blog.yunuserturk.com

I Ran Real WordPress on Vercel with ServerlessWP. Here's What Broke.

In my guide to hosting WordPress for free on Vercel, WordPress never actually runs on Vercel. You build the site locally, export it to static HTML, and Vercel serves the files.

That works for brochure sites. But readers who tried it have asked me a different question: can I keep the WordPress admin online, on Vercel, and just log in and edit?

ServerlessWP says yes. It runs the real WordPress inside Vercel’s serverless functions, with the database stored as a SQLite file. So I deployed it, used it like a site owner would, and measured what happened.

Short answer (tested October 2026)

Yes, you can run real WordPress on Vercel, with PHP and the admin dashboard, using ServerlessWP. My deployment was live about 60 seconds after clicking Deploy. Publishing a post took under half a second, and admin pages loaded in about 0.4 seconds.

The trade-offs: you can’t install plugins from the dashboard, contact forms need a separate mail service, simultaneous saves can fail because the database is a single SQLite file, the first visit after about 20 quiet minutes took 8 seconds, and the free Vercel Blob plan includes 2,000 write operations a month.

Good for a low-traffic personal site. For a business site with several editors, a shop or busy forms, use ServerlessWP’s MySQL option or regular WordPress hosting.

What is ServerlessWP?

ServerlessWP is an open-source project that runs WordPress on serverless platforms (Vercel, Netlify or AWS Lambda) instead of an always-on server. On Vercel, each page request starts PHP in a function, loads WordPress, and returns the page.

There’s no MySQL server. The database is a SQLite file kept in Vercel Blob storage, and media uploads go to the same Blob store. Vercel lists it as an official template, and the project describes itself as experimental.

Static export (my earlier guide) ServerlessWP
What runs on Vercel Plain HTML files WordPress itself (PHP 8.3)
WordPress admin online No Yes
Database None on Vercel SQLite file in Vercel Blob
Edit a post Edit locally, re-export, push Log in and edit

How long does the setup take?

About a minute of waiting. The project’s README has a “Deploy with Vercel” button that does everything:

  1. Click the button and pick your GitHub account. It copies the project into a new private repository.
  2. Add the Blob store Vercel asks for (private access is the default; keep it).
  3. Leave the two pre-filled environment variables as they are and click Deploy.
  4. Open your new .vercel.app address and run the normal WordPress installer.

Vercel New Project screen cloning the ServerlessWP repository into a private GitHub repository
The Deploy with Vercel button copies ServerlessWP into a new private repository in your GitHub account.

My deployment was live about 60 seconds after I clicked Deploy.

One thing went wrong on the first run, and it’s worth knowing about. Right after deployment, Vercel’s success page loads your site several times at once to make a preview. Those simultaneous requests all tried to create the database file, and the logs showed This blob already exists. I fixed it by giving the database a new file name (the SQLITE_BLOB_PATHNAME environment variable) and redeploying. After that, the installer opened normally.

What works

I tested the things a small business site owner does every week.

Task Result
Write and publish a post Works. Saved in under half a second and visible on the site immediately
Upload an image Works. Took about 2.4 seconds; WordPress generated the usual thumbnail sizes
Stay logged in Works. Ten admin pages in a row, no logouts, about 0.4 seconds each
Redeploy the site Posts and images survive, because the database and uploads live in Blob storage

For a site where one person writes a few posts a month, the admin feels like normal WordPress.

What doesn’t work the way you expect

You can’t install plugins from the dashboard

There’s no Add New button on the Plugins screen. Instead, ServerlessWP shows a notice: “Direct plugin installation is not currently possible with serverless functions.” Open the install page directly and WordPress answers “Sorry, you are not allowed to access this page.” That’s deliberate: ServerlessWP’s wp-config.php sets DISALLOW_FILE_MODS, because anything written to the function’s disk disappears on the next deployment.

To add a plugin, you put its folder in the repository (wp/wp-content/plugins/), commit and push. Vercel redeploys automatically. I added Contact Form 7 this way, and it appeared in the plugin list about a minute after the push. Then you activate it in the dashboard as usual.

WordPress Plugins screen on ServerlessWP with a notice that direct plugin installation is not possible, and Contact Form 7 installed through Git
No Add New button: ServerlessWP explains that plugins go through the Git repository. Contact Form 7 here was added with a commit and push.

It works, but it means every plugin, theme and update goes through GitHub. If the person running the site has never used Git, that’s a real barrier.

Contact forms don’t send email

Contact Form 7 accepted my test submission, then returned “There was an error trying to send your message”. The serverless environment has no mail server for PHP to hand messages to. You need an SMTP plugin connected to a sending service (Postmark, Mailgun, Amazon SES and so on), installed through the repository like any other plugin. The sending domain also needs SPF and DKIM records, or the messages that do go out will land in spam; I covered that in why emails go to spam after a domain migration.

Contact Form 7 on ServerlessWP showing the error There was an error trying to send your message
My test submission: the form works, the email does not.

On a business site this matters more than anything else on this list: a contact form that can’t deliver messages is a lost lead.

Simultaneous saves can fail

SQLite is a single file, and ServerlessWP saves the whole file back to Blob storage after a write. I tested this directly:

  • 3 comments sent one after another: all 3 saved.
  • 5 comments sent at the same moment: 4 saved, 1 failed with a server error.

Nothing was lost silently: the failed request reported its error. But it confirms the project’s own advice: SQLite is fine for light activity, and sites with several editors, busy forms, shops or memberships should use the MySQL option instead.

The first visit after a quiet period is slow

Request Time to first byte
First visit after ~20 minutes with no traffic 8.0 seconds
Next visits 0.9 to 1.3 seconds

There’s no page cache by default (every visit runs PHP), and the function lives in Vercel’s Washington region unless you change it. A low-traffic site will regularly show its first visitor an 8-second wait.

Watch the free Blob limit

Every time WordPress writes to the database, the SQLite file is uploaded to Blob storage again, and each upload counts as an “advanced operation”. My 15 minutes of testing used 116 of them. The free plan includes 2,000 per month, and Vercel’s documentation says that when you go over, Blob storage stays unavailable until 30 days have passed. With the database in Blob storage, the site stops working until then.

Vercel usage panel showing Blob simple and advanced operations for the ServerlessWP test project
Blob usage on the test project after about an hour of testing, including the screenshots for this post.

Should you use ServerlessWP?

Your site My take
Personal blog or portfolio, one editor, you’re comfortable with GitHub Good fit. Free to run at low traffic, and the admin works
Business site with a contact form Possible, but plan for SMTP setup, Git-based plugin installs and the slow first visit
Several editors, a shop, memberships, busy forms Use the MySQL option, or regular WordPress hosting
You want “WordPress, but free” and never want to touch Git Regular hosting will cost you less time

ServerlessWP is the closest thing to real WordPress on Vercel, and for what it is, it works. The setup takes a minute. Running it as a business site takes more: a mail service, a Git workflow for plugins and updates, and an eye on usage limits.

If you’ve deployed ServerlessWP or a static WordPress site on Vercel and got stuck on forms, plugins or speed, get in touch on my blog. Tell me what your site needs to do and I’ll tell you which setup fits.

Top comments (0)