Shipcel vs Heroku
Heroku runs apps as dynos with a marketplace of add-ons such as Postgres and Key-Value Store. It removed its free plans in November 2022. Shipcel deploys to Cloudflare Workers, which need no always-on process, with D1, R2 and KV in the same account and a free plan that doesn’t sleep.
Which one fits
Choose Shipcel if
- You want to start at $0: Heroku has no free tier.
- You don’t want apps to sleep: Eco dynos sleep after 30 minutes without web traffic and stop for the rest of the month when the account’s 1,000 hours run out.
- You want SQL without a paid add-on: Postgres Essential-0 is $5 a month for 1 GB; D1 includes 5 GB on the free plan.
Choose Heroku if
- You run a classic server app (Rails, Django, Node.js or Java) with Procfile processes and want the add-on marketplace.
- You need managed Postgres or Redis with Heroku’s operational tooling.
Side by side
Plans
| Shipcel + Cloudflare | Heroku |
| Free | Cloudflare’s free plan: 100,000 requests a day, D1, KV and R2 free tiers | None |
| Cheapest always-on app | Workers Paid $5 a month per account (the free plan doesn’t sleep either) | Basic dyno $7 a month |
| Sleeping | Never | Eco dynos ($5 for 1,000 hours a month) sleep after 30 minutes idle |
| SQL database | D1: 5 GB free; 5 GB included on Workers Paid | Postgres Essential-0 $5 a month (1 GB) |
| Bandwidth | No per-gigabyte charge | Soft limit of 2 TB per app a month |
| Spending control | No hard cap from Cloudflare. Shipcel’s budget guard alerts over a budget ($0 by default) and can pause the app; Cloudflare’s budget alerts email you | No built-in cap; a billing-alarm add-on is in invite-only alpha |
What it costs
An always-on API with a 1 GB database
A small API that must answer immediately at any hour, with a 1 GB SQL database.
Monthly cost
| Setup | Per month | How it adds up |
| Heroku | $12 | Basic dyno $7 (Eco dynos sleep after 30 minutes without traffic). Postgres Essential-0 $5 (1 GB). |
| Render | $13.30 | Web service 0.5c-512mb $7 (free instances sleep after 15 minutes). Postgres $6 plus 1 GB of storage at $0.30. |
| Shipcel + Cloudflare | $5 | Workers Paid $5, because a 1 GB D1 database is over the free plan’s 500 MB per database. Workers start per request in milliseconds; nothing sleeps. |
Assumptions: Under 10 million requests a month. The API can run as a Worker (JavaScript, TypeScript or Python). A Docker image would run as a Cloudflare Container, billed by use on Workers Paid.
$5 a month instead of $12 to $13.30, with nothing that sleeps.
Billing and surprise-bill protection
- Heroku bills dynos and add-ons per second up to each resource’s monthly price, with no built-in account spending cap.
- Cloudflare’s free plan is never billed for Workers, D1 or KV: over a daily limit, requests and queries fail until midnight UTC. R2 file storage bills usage beyond its free tier (never egress).
- Workers Paid ($5 a month per account) has no hard spending cap. Budget alerts email you when usage passes an amount ($10 by default) but don’t stop anything; per-Worker CPU and subrequest limits can stop runaway code. Shipcel’s budget guard alerts over each app’s budget ($0 by default) and can pause the app, minutes after the budget is crossed.
Moving from Heroku
- Web processes often run as Workers with the
nodejs_compat flag; Python apps can run as Python Workers if their packages are Pyodide-compatible. - Long-running or native workloads can run as Cloudflare Containers on Workers Paid.
- Config vars become Worker secrets in Manage → Runtime secrets.