Verification and common problems - Laravel
A controlled test event
php artisan tinker --execute="\Dock\Ray\Laravel\Ray::message('DockRay control message');"
The message should appear in the panel under Errors for the project the token points at. Check the environment and the time: the environment comes from RAY_ENVIRONMENT, or from APP_ENV when that is unset.
To check automatic capture, raise an uncaught exception from a temporary route on a staging environment. Remove that route once the test succeeds - further calls bump the counter of an artificial error and eat into the monthly quota.
Common problems
Nothing arrives in the panel
Check, in order: whether RAY_TOKEN and RAY_PRIVATE_KEY are set and belong to the same project, whether a stale config:cache is still in effect (run php artisan config:clear after changing .env), whether the key has been revoked in the panel, and whether the server allows outbound HTTPS.
Exceptions are not reported although the test passes
Most often the reportable() hook is missing. Check as well whether the exception is listed in ray.ignore_exceptions or in Laravel's own dontReport - ValidationException and HttpException are skipped by default, and that is intended.
Transactions are missing
Two independent causes: ray.traces_sample_rate at 0, or the TrackTransaction middleware missing from the group. The token and key alone do not switch timing on.
The transaction list exploded into thousands of rows
A transaction is named after the route pattern, so that picture means the route is declared without a parameter - registered in a loop over identifiers, for instance, or served by a single Route::any('{path}'). Fix the route definition, not the panel.
Queue errors arrive but without transactions
That is by design: queues and Artisan commands run outside the HTTP middleware stack, so they report errors and produce no transactions.
A queue worker does not pick up a configuration change
The hub is a singleton for the whole process, and a worker reads the configuration at startup. After changing .env or config/ray.php, restart the workers (php artisan queue:restart).
One error splits into many entries
The panel groups by the fingerprint sha256(project token + type + message). A message with a record id pasted into it splits one error into a thousand rows. Move the variable part into the context or into tags.
The panel answers 200 but there is no event
A 200 {"success": false} response means the account has used up its monthly error quota. The integration does not treat that as a failure - and rightly so. You can see the quota on the account dashboard; until the end of the month it is counted from recorded usage, so deleting errors does not reset it.
Still not working
Work through the troubleshooting checklist, and if that does not help, write to us. Include the project name, the integration version and roughly when you ran the test: it shortens the way to an answer.