---
title: "Deploy status-express"
description: "A webhook that converts railway events into a readable discord message"
category: "Other"
url: https://railway.com/deploy/qDKd-1
---

# Deploy status-express

A webhook that converts railway events into a readable discord message

**[Deploy status-express on Railway](https://railway.com/template/qDKd-1)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/qDKd-1/manifest.json

- **Creator:** Brandon (opti)'s Projects
- **Category:** Other
- **Total deploys:** 2

## Template content

### Status Express

- **Image:** ghcr.io/railwayapp/function-bun:1.2.2
- **Start command:** `./run.sh Ly8gaW5kZXgudHN4IChCdW4gcnVudGltZSkKLy8gaW5kZXgudHN4IChCdW4gdjEuMiBydW50aW1lKQppbXBvcnQgeyBIb25vIH0gZnJvbSAiaG9ub0A0IjsKaW1wb3J0IHsgY29ycyB9IGZyb20gImhvbm8vY29ycyI7CgppbnRlcmZhY2UgUmFpbHdheUV2ZW50IHsKICBpZD86IHN0cmluZzsKICB0eXBlOiBzdHJpbmc7CiAgdGltZXN0YW1wOiBzdHJpbmc7CiAgZW52aXJvbm1lbnQ6IHsKICAgIGlkOiBzdHJpbmc7CiAgICBuYW1lOiBzdHJpbmc7CiAgfTsKICBwcm9qZWN0OiB7CiAgICBpZDogc3RyaW5nOwogICAgbmFtZTogc3RyaW5nOwogICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7CiAgICBjcmVhdGVkQXQ/OiBzdHJpbmc7CiAgfTsKICBzdGF0dXM/OiBzdHJpbmc7CiAgZGVwbG95bWVudD86IHsKICAgIGlkOiBzdHJpbmc7CiAgICBtZXRhOiB7CiAgICAgIFtrZXk6IHN0cmluZ106IGFueTsgLy8gQ2hhbmdlZCB0byBhbnkgdG8gaGFuZGxlIG5lc3RlZCBvYmplY3RzCiAgICB9OwogICAgY3JlYXRvcj86IHsKICAgICAgaWQ6IHN0cmluZzsKICAgICAgbmFtZTogc3RyaW5nOwogICAgICBhdmF0YXI/OiBzdHJpbmc7CiAgICB9OwogIH07CiAgc2VydmljZT86IHsKICAgIGlkOiBzdHJpbmc7CiAgICBuYW1lOiBzdHJpbmc7CiAgfTsKICB1c2VyPzogewogICAgaWQ6IHN0cmluZzsKICAgIG5hbWU6IHN0cmluZzsKICAgIGVtYWlsOiBzdHJpbmc7CiAgfTsKfQoKY29uc3QgRElTQ09SRF9XRUJIT09LX1VSTCA9IGltcG9ydC5tZXRhLmVudi5ESVNDT1JEX1dFQkhPT0tfVVJMOwoKY29uc3QgYXBwID0gbmV3IEhvbm8oKTsKCmFwcC51c2UoIi8qIiwgY29ycygpKTsKYXBwLmdldCgiLyIsIChjKSA9PiBjLnRleHQoIkhlbGxvIHdvcmxkISIpKTsKYXBwLmdldCgiL2FwaS9oZWFsdGgiLCAoYykgPT4gYy5qc29uKHsgc3RhdHVzOiAib2siIH0pKTsKYXBwLnBvc3QoIi9yYWlsd2F5LXdlYmhvb2siLCBhc3luYyAoYykgPT4gewogIHRyeSB7CiAgICAvLyBQYXJzZSB0aGUgUmFpbHdheSBldmVudCBwYXlsb2FkCiAgICBjb25zdCBwYXlsb2FkID0gKGF3YWl0IGMucmVxLmpzb24oKSkgYXMgUmFpbHdheUV2ZW50OwoKICAgIGNvbnNvbGUubG9nKHBheWxvYWQpOwoKICAgIC8vIEdldCBlbW9qaSBiYXNlZCBvbiBldmVudCB0eXBlCiAgICBjb25zdCBnZXRFdmVudEVtb2ppID0gKHR5cGU6IHN0cmluZykgPT4gewogICAgICBzd2l0Y2ggKHR5cGUudG9VcHBlckNhc2UoKSkgewogICAgICAgIGNhc2UgIkRFUExPWSI6CiAgICAgICAgICByZXR1cm4gIvCfmoAiOwogICAgICAgIGNhc2UgIkJVSUxEIjoKICAgICAgICAgIHJldHVybiAi8J+UqCI7CiAgICAgICAgY2FzZSAiRVJST1IiOgogICAgICAgICAgcmV0dXJuICLwn5qoIjsKICAgICAgICBjYXNlICJXQVJOSU5HIjoKICAgICAgICAgIHJldHVybiAi4pqg77iPIjsKICAgICAgICBjYXNlICJJTkZPIjoKICAgICAgICAgIHJldHVybiAi4oS577iPIjsKICAgICAgICBjYXNlICJTVUNDRVNTIjoKICAgICAgICAgIHJldHVybiAi4pyFIjsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgcmV0dXJuICLwn5qCIjsKICAgICAgfQogICAgfTsKCiAgICAvLyBHZXQgZW1vamkgYmFzZWQgb24gZGVwbG95bWVudCBzdGF0dXMKICAgIGNvbnN0IGdldFN0YXR1c0Vtb2ppID0gKHN0YXR1czogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB7CiAgICAgIGlmICghc3RhdHVzKSByZXR1cm4gIvCflIQiOyAvLyBSZXR1cm4gZGVmYXVsdCBlbW9qaSBpZiBzdGF0dXMgaXMgdW5kZWZpbmVkCgogICAgICBzd2l0Y2ggKHN0YXR1cy50b1VwcGVyQ2FzZSgpKSB7CiAgICAgICAgY2FzZSAiU1VDQ0VTUyI6CiAgICAgICAgY2FzZSAiQ09NUExFVEUiOgogICAgICAgIGNhc2UgIkNPTVBMRVRFRCI6CiAgICAgICAgICByZXR1cm4gIuKchSI7CiAgICAgICAgY2FzZSAiRkFJTEVEIjoKICAgICAgICBjYXNlICJGQUlMVVJFIjoKICAgICAgICAgIHJldHVybiAi8J+aqCI7CiAgICAgICAgY2FzZSAiU0xFRVBJTkciOgogICAgICAgICAgcmV0dXJuICLwn5i0IjsKICAgICAgICBjYXNlICJSRU1PVkVEIjoKICAgICAgICBjYXNlICJSRU1PVklORyI6CiAgICAgICAgICByZXR1cm4gIvCfl5HvuI8iOwogICAgICAgIGNhc2UgIkJVSUxESU5HIjoKICAgICAgICBjYXNlICJERVBMT1lJTkciOgogICAgICAgIGNhc2UgIklOX1BST0dSRVNTIjoKICAgICAgICAgIHJldHVybiAi4o+zIjsKICAgICAgICBjYXNlICJQRU5ESU5HIjoKICAgICAgICBjYXNlICJRVUVVRUQiOgogICAgICAgICAgcmV0dXJuICLij7HvuI8iOwogICAgICAgIGNhc2UgIkNBTkNFTExFRCI6CiAgICAgICAgY2FzZSAiQ0FOQ0VMRUQiOgogICAgICAgICAgcmV0dXJuICLwn5uRIjsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgcmV0dXJuICLwn5SEIjsKICAgICAgfQogICAgfTsKCiAgICAvLyBGb3JtYXQgdGhlIG1lc3NhZ2UgYmFzZWQgb24gdGhlIGV2ZW50IHR5cGUgd2l0aCBlbW9qaXMKICAgIGNvbnN0IGV2ZW50RW1vamkgPSBnZXRFdmVudEVtb2ppKHBheWxvYWQudHlwZSk7CgogICAgLy8gR2V0IHN0YXR1cyAtIGNoZWNrIGJvdGggZGlyZWN0IHN0YXR1cyBmaWVsZCBhbmQgbWV0YS5zdGF0dXMKICAgIGNvbnN0IHN0YXR1cyA9IHBheWxvYWQuc3RhdHVzID8/IHVuZGVmaW5lZDsKICAgIGNvbnN0IHN0YXR1c0Vtb2ppID0gc3RhdHVzID8gZ2V0U3RhdHVzRW1vamkoc3RhdHVzKSA6ICIiOwoKICAgIC8vIENyZWF0ZSBhIHNpbXBsZSwgZGlnZXN0aWJsZSBtZXNzYWdlCiAgICBsZXQgbWVzc2FnZSA9IGAke2V2ZW50RW1vaml9ICoqJHtwYXlsb2FkLnByb2plY3QubmFtZX0qKmA7CgogICAgY29uc3QgZm9ybWF0UmFpbHdheVNlcnZpY2VMaW5rID0gKHByb2plY3RJZDogc3RyaW5nLCBzZXJ2aWNlSWQ6IHN0cmluZykgPT4gewogICAgICByZXR1cm4gYGh0dHBzOi8vcmFpbHdheS5hcHAvcHJvamVjdC8ke3Byb2plY3RJZH0vc2VydmljZS8ke3NlcnZpY2VJZH1gOwogICAgfTsKCiAgICAvLyBBZGQgc2VydmljZSBuYW1lIGlmIGF2YWlsYWJsZQogICAgaWYgKHBheWxvYWQuc2VydmljZSkgewogICAgICBjb25zdCBzZXJ2aWNlTGluayA9IGZvcm1hdFJhaWx3YXlTZXJ2aWNlTGluaygKICAgICAgICBwYXlsb2FkLnByb2plY3QuaWQsCiAgICAgICAgcGF5bG9hZC5zZXJ2aWNlLmlkCiAgICAgICk7CiAgICAgIG1lc3NhZ2UgKz0gYCAoJHtwYXlsb2FkLnNlcnZpY2UubmFtZX0pYDsKICAgIH0KCiAgICAvLyBBZGQgZW52aXJvbm1lbnQKICAgIG1lc3NhZ2UgKz0gYCBpbiAke3BheWxvYWQuZW52aXJvbm1lbnQubmFtZX1gOwoKICAgIC8vIEFkZCBzdGF0dXMgaWYgYXZhaWxhYmxlCiAgICBpZiAoc3RhdHVzKSB7CiAgICAgIG1lc3NhZ2UgKz0gYCAtICR7c3RhdHVzRW1vaml9ICoqJHtzdGF0dXN9KipgOwogICAgfQoKICAgIC8vIEFkZCB3aG8gdHJpZ2dlcmVkIGl0CiAgICBpZiAocGF5bG9hZC5kZXBsb3ltZW50Py5jcmVhdG9yKSB7CiAgICAgIG1lc3NhZ2UgKz0gYFxuVHJpZ2dlcmVkIGJ5ICR7cGF5bG9hZC5kZXBsb3ltZW50LmNyZWF0b3IubmFtZX1gOwogICAgfQoKICAgIC8vIEFkZCBjb21taXQgbWVzc2FnZSBpZiBhdmFpbGFibGUgLSBjaGVjayBpbiBkaWZmZXJlbnQgcGxhY2VzCiAgICBjb25zdCBjb21taXRNZXNzYWdlID0KICAgICAgcGF5bG9hZC5kZXBsb3ltZW50Py5tZXRhPy5tZXNzYWdlIHx8CiAgICAgIHBheWxvYWQuZGVwbG95bWVudD8ubWV0YT8uY29tbWl0Py5tZXNzYWdlIHx8CiAgICAgIHBheWxvYWQuZGVwbG95bWVudD8ubWV0YT8uY29tbWl0TWVzc2FnZTsKCiAgICBpZiAoY29tbWl0TWVzc2FnZSkgewogICAgICBtZXNzYWdlICs9IGBcbj4gJHtjb21taXRNZXNzYWdlfWA7CiAgICB9CgogICAgLy8gQWRkIGRlcGxveW1lbnQgSUQgYXMgYSByZWZlcmVuY2UKICAgIGlmIChwYXlsb2FkLmRlcGxveW1lbnQpIHsKICAgICAgbWVzc2FnZSArPSBgXG7wn5OmIElEOiAke3BheWxvYWQuZGVwbG95bWVudC5pZH1gOwogICAgfQoKICAgIGlmIChwYXlsb2FkLnNlcnZpY2UpIHsKICAgICAgY29uc3Qgc2VydmljZUxpbmsgPSBmb3JtYXRSYWlsd2F5U2VydmljZUxpbmsoCiAgICAgICAgcGF5bG9hZC5wcm9qZWN0LmlkLAogICAgICAgIHBheWxvYWQuc2VydmljZS5pZAogICAgICApOwogICAgICBtZXNzYWdlICs9IGBcbiBbU2VydmljZSBMaW5rXSg8JHtzZXJ2aWNlTGlua30+KWA7CiAgICB9CgogICAgLy8gQ2hlY2sgaWYgRGlzY29yZCB3ZWJob29rIFVSTCBpcyBjb25maWd1cmVkCiAgICBpZiAoIURJU0NPUkRfV0VCSE9PS19VUkwpIHsKICAgICAgY29uc29sZS5lcnJvcigiRGlzY29yZCB3ZWJob29rIFVSTCBub3QgY29uZmlndXJlZCIpOwogICAgICByZXR1cm4gYy50ZXh0KCJEaXNjb3JkIHdlYmhvb2sgVVJMIG5vdCBjb25maWd1cmVkIiwgNTAwKTsKICAgIH0KCiAgICAvLyBTZW5kIHRoZSBtZXNzYWdlIHRvIERpc2NvcmQgdXNpbmcgbmF0aXZlIGZldGNoIGluc3RlYWQgb2YgYXhpb3MKICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goRElTQ09SRF9XRUJIT09LX1VSTCwgewogICAgICBtZXRob2Q6ICJQT1NUIiwKICAgICAgaGVhZGVyczogewogICAgICAgICJDb250ZW50LVR5cGUiOiAiYXBwbGljYXRpb24vanNvbiIsCiAgICAgIH0sCiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsKICAgICAgICBjb250ZW50OiBtZXNzYWdlLAogICAgICB9KSwKICAgIH0pOwoKICAgIGlmICghcmVzcG9uc2Uub2spIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKGBEaXNjb3JkIEFQSSByZXNwb25kZWQgd2l0aCBzdGF0dXM6ICR7cmVzcG9uc2Uuc3RhdHVzfWApOwogICAgfQoKICAgIHJldHVybiBjLnRleHQoIkV2ZW50IHByb2Nlc3NlZCBzdWNjZXNzZnVsbHkiLCAyMDApOwogIH0gY2F0Y2ggKGVycm9yKSB7CiAgICBjb25zb2xlLmVycm9yKCJFcnJvciBwcm9jZXNzaW5nIFJhaWx3YXkgd2ViaG9vazoiLCBlcnJvcik7CiAgICByZXR1cm4gYy50ZXh0KCJFcnJvciBwcm9jZXNzaW5nIHdlYmhvb2siLCA1MDApOwogIH0KfSk7CgpCdW4uc2VydmUoewogIHBvcnQ6IGltcG9ydC5tZXRhLmVudi5QT1JUID8/IDMwMDAsCiAgZmV0Y2g6IGFwcC5mZXRjaCwKfSk7Cg==`
- **Health check:** /api/health
- **Public domain:** Yes

## Documentation

# Status Express

A service that receives Railway webhook events and forwards them to a Discord channel as simple text messages.

NOTE: I suggest disabling `App Sleeping` as it's the default for functions

## Required Variables

```
DISCORD_WEBHOOK_URL=your_discord_webhook_url_here
```

## Configuring Railway Webhooks

1. Go to your Railway project
2. Navigate to Settings > Webhooks
3. Add a new webhook with the URL pointing to your deployed service:
   ```
   https://your-deployed-service.com/railway-webhook
   ```
4. Select the events you want to receive notifications for
5. Save the webhook configuration

## API Endpoints

- `GET /`: Health check endpoint
- `POST /railway-webhook`: Endpoint that receives Railway webhook events and forwards them to Discord

## Similar templates

- [Rocky Linux](https://railway.com/deploy/rocky-linux) — Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀
- [Foundry Virtual Tabletop](https://railway.com/deploy/X5tR6G) — A Self-Hosted & Modern Roleplaying Platform
- [Letta Code Remote](https://railway.com/deploy/letta-code-remote) — Run a Letta Code agent 24/7. No inbound ports, just deploy.

Open this page in a browser: https://railway.com/deploy/qDKd-1
