Everything your software needs after deployment.
PostDeploy is the toolkit for operating software after it reaches production. Build elsewhere. Deploy anywhere. Run it with PostDeploy.
Try PostDeploy free for 30 days. No credit card.
This preview is clickable. Open a tool.
Fleet health
All reporting monitors are operational
HTTP monitor
Response time
Availability
Error overview
21 errors in this window
production
side-project api
TypeError: fetch failed
Recent activity
Traffic overview
6,984 pageviews in this window
production
side-project.dev
Traffic
Pageviews Visits
Recent activity
Know that your site, API or scheduled job stopped, before a user tells you.
Nothing announces that a scheduled job stopped. It just stops. There is no failing request to catch, no error page and no exception, so the only observable fact is that nothing happened, and nothing is hard to notice.
PostDeploy inverts the alert for scheduled work: a heartbeat treats silence as the answer.
HTTP, keyword, TCP and DNS checks, plus SSL and domain expiry warnings, plus heartbeats for anything on a schedule. Uptime monitors and cron jobs have separate allowances, so watching a job never uses up a monitor.
Replaces your uptime monitor and your cron watchdog, which are usually two products with two meters.
See uptime and cron monitoringMonitor
Active incidents (1)
nightly-backup (Heartbeat monitor)
missed_heartbeat incident (production)
Slack alert sent at 03:05, six days ago.
The alert you would have gotten, six days ago.
Find the deploy that broke it.
Errors arrive grouped into issues you can triage, not a feed of one-off events. Tag a release and PostDeploy tells you which deploy introduced the problem. Upload a sourcemap and a stack trace from a minified bundle reads like your source.
Replaces the error tracker you bolt on per project, priced per event on top of everything else.
See error trackingObserve
worker/api, 3 events, release v2.4.1
Read your visitor numbers without adding a consent banner.
Pageviews and custom events, no cookies, no raw IP stored, no persistent visitor identifier. The visitor hash uses a salt that rotates daily and is not reversible across days.
Replaces the analytics subscription, and the consent banner that comes with the free one.
See analyticsMeasure
Pageviews Visits
6,984 pageviews, zero cookies
Wired up in one line per pillar
Create a project, then point each pillar at it. Setup happens once.
- 1 Create a project and copy its heartbeat URL.
- 2 Append one curl to the scheduled job.
- 3 PostDeploy alerts you when a ping does not arrive on time.
Errors and analytics take one line each: install
@alplus/sdk
from npm for a JavaScript app, or drop in the analytics script.
npm install @alplus/sdk
import { init, captureException, setUser } from "@alplus/sdk";
init({ key: process.env.POSTDEPLOY_API_KEY, release: "v2.4.1" });
setUser({ id: user.id });
try {
await chargeCustomer(order);
} catch (error) {
captureException(error); // grouped, tagged with the release
throw error;
}
Published on npm. Errors arrive grouped into issues, tagged with the release that shipped them.
# application.ex: one child. Crashes report themselves.
children = [
{AlplusSDK, []},
MyAppWeb.Endpoint
]
# Capture a rescued exception yourself:
try do
risky()
rescue
exception ->
AlplusSDK.capture_exception(exception, stacktrace: __STACKTRACE__)
end
# Ping a heartbeat when the nightly job finishes:
AlplusSDK.heartbeat("hb_YOUR_TOKEN", :finish)
The Elixir SDK attaches to the OTP logger, so unhandled crashes are captured without wrapping call sites.
# config/initializers/alplus.rb
Alplus.configure do |config|
config.key = ENV["POSTDEPLOY_API_KEY"]
config.environment = "production"
config.release = "v1.2.3"
end
Alplus.capture_exception(exception)
Alplus.capture_message("import finished with 3 skips", level: "warning")
# Cron liveness from the job itself:
Alplus.heartbeat("hb_YOUR_TOKEN", state: "finish")
Rack middleware included; every capture is fail-safe and never raises into your app.
# Ping PostDeploy only if the job actually succeeded.
0 3 * * * /usr/local/bin/backup.sh && curl -fsS https://ingest.postdeploy.dev/h/hb_YOUR_TOKEN
No SDK at all: one curl in the crontab. Silence past the schedule pages you.
$ crontab -e
0 3 * * * backup.sh && curl -fsS https://ingest.postdeploy.dev/h/hb_YOUR_TOKEN
✓ heartbeat received, 03:00:12
nightly-backup is watched. Silence now pages you.
Ship your next project with one toolkit, not three.
No credit card to start, and every feature on from the first minute. Pick Indie, Pro or Scale when the trial ends.
Start your 30-day free trial