1What FoxPlug reads from Heroku
These are the exact things it reads, and nothing else.
| What | The details it takes |
|---|---|
| Your apps | the list of apps your authorization can see, first 8 read: id, name, created time, web address |
| Recent releases per app | up to 10 per app, newest first: release id, status, created time, and the release description (first 120 characters). Releases still pending are ignored |
| Custom domains per app | the host names of domains marked custom; the default herokuapp.com address is skipped. A failed domain lookup is ignored |
| What is stored from the read | which apps are failing (name, since when, how many failed in a row, web address, last release description), how many apps were read, and the time of the read |
2Moments it finds, and what each becomes
A moment is one thing that happened in Heroku worth a second look. Each one is scored, then it becomes a post, a changelog entry, a thing to fix or an idea to email, or it is skipped.
A release finishes successfully
The moment is titled like this: Deployed my-shop
Your app called my-shop has a release with status succeeded since the last check. FoxPlug makes the moment 'Deployed my-shop' with the description 'Shipped my-shop on Heroku' followed by the release description when there is one.
The newest finished release of an app failed
The moment is titled like this: Your my-shop deploy is failing on Heroku. Fix this first.
The newest release of my-shop that is not pending has status failed, and it happened in the last 7 days. The first card in Today says 'Your my-shop deploy is failing on Heroku. Fix this first.' with how many failed in a row, since when and the last release description. A later succeeded release clears it.
A new app is created
The moment is titled like this: Launched a new app: my-shop
An app created in the last 14 days, and since your last check, becomes 'Launched a new app: my-shop' with the description 'A new app went up on Heroku: my-shop.' The word 'app' is fixed by the code.
A custom domain exists on a new app
The moment is titled like this: Added the domain shop.acme.dev
While the app is less than 30 days old, each custom domain on it becomes 'Added the domain shop.acme.dev' with 'shop.acme.dev now points at my-shop on Heroku.' An older app's domains are never announced.
3How the brain uses it
The rules below are the ones that apply to Heroku. The same rules, with worked examples, are on the brain page.
- An app whose newest finished release failed in the last 7 days becomes the fix line, naming how many failed in a row and since when. Pending releases are not failures. A later good release clears it. How the brain decides
- The fix line reads 'Your <app> deploy is failing on Heroku. Fix this first.' and adds 'Whatever you ship there is not going live.' How the brain decides
- A successful release becomes an update, like Vercel, Netlify and Render deploys. How the brain decides
- A new app (made in the last 14 days) can be a post, and so can its domain while the app is under 30 days old; an old domain is never announced. How the brain decides
- Config variables, logs and add-on data are never read. The brain page text for hosts did not yet name Heroku when this sheet was written, so these rules come from the code and the change that added it. How the brain decides
4Set up Heroku in a few steps
Access: an authorization token, pasted by you. What to give it: authorization token (FoxPlug only reads).
- In Heroku, open Account settings and then Applications.
- Under Authorizations, create a new authorization named FoxPlug and copy its token.
- Paste it into FoxPlug. Keep it private; FoxPlug only reads and never writes.
- Press Check for what's new.
5Limits worth knowing
Where it stops, so nothing surprises you.
- First 8 apps of the list, and 10 releases each.
- A release counts as a failure only when its status is exactly failed, and as a success only when it is succeeded. A release with any other status that is not pending counts as neither.
- A failing line shows only for a failure in the last 7 days.
- The code does not tell kinds of release apart: every release with status succeeded counts as a deploy and becomes a 'Deployed' moment, whatever caused it.
- Clean releases count from the last check, or the last 7 days on the first read; the first read keeps only the single newest moment.
- Custom domains are best-effort: a failed domain lookup is ignored.
- Confirmed by Heroku's docs: the Accept header 'application/vnd.heroku+json; version=3', and the Range header with order=desc.
- NOT confirmed by Heroku's docs: the release status values succeeded, failed and pending. They come from the reader code alone, so a status the code does not know would be skipped or counted as neither success nor failure.
6What it never reads
Read only means read only, and the list below is what the code leaves alone.
- Config variables, log lines and add-on data (the code asks only for the app list, releases and domains)
- Pending releases, which are not a result yet
- Anything that writes to Heroku: it releases nothing, restarts nothing and changes no setting
7How Heroku differs from the tools next to it
Same job as Render and Railway: apps, finished releases, a fix-first line for a failing one. Heroku: an authorization token, three plain REST reads per app (app list, releases, domains), status words succeeded and failed. Render: an API key, status words such as live and build failed, and cancelled deploys are ignored by name. Railway: an account token over GraphQL, with FAILED and CRASHED counted as failures.
8Questions
Can FoxPlug tell me when my Heroku release fails?
Yes, when you press Check for what's new. An app whose newest finished release failed in the last 7 days becomes the first card in your Today brief, and a later succeeded release clears it. The status words it relies on are taken from the code, not from Heroku's documentation, and have not been checked on a real account.
Does it read my config variables or logs?
No. It reads your apps, their latest releases and custom domains only. The release description is kept, up to 120 characters.
Does a release that is still pending count?
No. Pending releases are ignored until they finish.
Has the Heroku connection been tested against a real account?
No. It is marked code-path-only: the code path exists and its offline checks pass, but no real Heroku account of ours has exercised it. Treat the first read as the test.
FoxPlug reads this tool only when you press Check for what's new, and only to read. Plans and limits are on the pricing page. Questions: support.