Errors · Plans and data
Data and privacy
Errors gets ids, never names, and the SDKs take personal data out of every error before it leaves your server or a page. Errors scrubs again on arrival.
What Errors keeps
Loading what it keeps…
How long a project keeps its error events is its own setting, in Errors' Settings → Error events, up to what its package allows.
Scrubbed in your app
The Laravel SDK replaces these in messages, source lines, log breadcrumbs and URLs, then runs any rule you added with Errors::scrubUsing():
| What | Becomes |
|---|---|
| E-mail addresses | [email] |
| IBANs, with or without spaces | [iban] |
| Finnish personal identity codes | [hetu] |
Phone numbers starting with + or 0 | [phone] |
| Bearer tokens, and any run of 40 or more letters and digits | Bearer [token], [token] |
- SQL goes without values: every quoted string and number becomes
?. A database error keeps the driver's own words and code, its quoted values taken out. - URLs keep their path and their query's keys, never the values. A long random part of a path, a reset or verification token, becomes
[token]; UUIDs and ULIDs stay readable. - Requests are sent by name only: the route, the controller action, the names of the route parameters, form fields and files. Never a value, a header, a cookie or a body.
- People are ids only. An identity that isn't an id, an e-mail say, is left off.
Scrubbed in the page
- A pressed button's label leaves with every letter and digit starred, unless your
maskLabelkeeps it, and always insidedata-mybeast-private. - The page's address and each link leave as a path only, without query or fragment.
- Who it was comes from the token your server signs: ids only.
Your own rules
Errors::scrubUsing() (Laravel SDK), and keep personal data out of exception messages where you can.Erasing a person or an account
When a person asks, or an account is closed, erase what Errors keeps of them:
use MyBeast\Errors\Laravel\Facades\Errors;
// When an account is closed, or a person asks: from a queued job with retries.
Errors::eraseSubject($user->id);
Errors::eraseAccount($team->id);- A person: their error events, what your app was asked to tell them, their entries in webhook deliveries, and any mark of them as your own.
- An account: every error event in it, whoever it happened to, and its people's entries in webhook deliveries.
Each call returns how many rows went or were emptied, and throws when Errors doesn't confirm it: run it from a queued job with retries. Errors still waiting in your app's spool reach Errors after the erasure and are kept, so delay the job a few minutes or erase again then. Without the Laravel SDK, the API does the same.
Opening an issue's Who it hit, and every erasure, is recorded in the project's audit log. An erasure's record never keeps the id it erased.