Documentation
BobbinTroubleshooting
Updated
Every page returns 403 after signing in
If a user who was already signed in before this fix still receives 403, sign out and sign back in once to complete enrolment. Bobbin enrols the authenticated account into this installation's team on its first successful sign-in.
create-admin says an Owner already exists
Sign in with the existing Owner, or create another operator by rerunning the command with --force, then have that account sign in. Bobbin enrols each successfully authenticated account into the same installation team.
The provider says delivery failed, or no capture appears
- Check the URL the provider is using against the Capture URL on the endpoint page. An unknown identifier returns
404and nothing is stored. - Bobbin always answers a stored request with
204 No Contentand an empty body. A provider that requires a particular response body or a200specifically will treat that as a failure even though the capture was stored. - Check
https://<your-host>/upreturns200. If it does not, look at the deployment in Laravel Cloud.
A capture has expired
Captures older than the endpoint's retention days are deleted by the daily cleanup, together with their delivery history. They cannot be recovered. Raise Retention days on the endpoint's Security settings page before you need the data.
Old captures are not being deleted
The cleanup runs on Laravel Cloud's scheduler. Make sure the scheduler is still enabled on the environment, or run php artisan captures:prune from Laravel Cloud.
Secrets appear in old captures
Redaction applies only to requests received after you change the settings. Captures stored earlier keep their original values until retention removes them. Lower Retention days if you need them gone sooner; the next daily cleanup deletes everything outside the new window.
The destination is rejected
The form shows The destination must be an absolute HTTP or HTTPS URL with a publicly routable host. Check that the URL:
- starts with
http://orhttps://; - has a host that resolves in DNS, and only to public addresses (not
localhost,127.0.0.1,10.x,192.168.x,172.16–31.xor other private or reserved ranges); - contains no
user:password@, no#fragmentand no{or}.
A deployed Bobbin cannot replay to your laptop or a private network. Deploy the receiver somewhere public, or put it behind a public URL you control.
There is no Queue replay button
The capture page shows that the endpoint needs exactly one active destination. Save a destination on Security settings.
If the settings page says the endpoint has multiple active destinations and the form is disabled, the endpoint's data is inconsistent and Bobbin blocks configuration and replay for it until the data is repaired in the database. The agent tools report this as destination_state: conflict.
A replay stays queued
Replays run on the managed queue. In Laravel Cloud, check that the environment's managed queue exists, is the default queue and is processing jobs. Do not set QUEUE_CONNECTION yourself.
A delivery waiting between retries also shows queued; its Attempts count and Latest safe error tell you which case you are in.
A replay fails
Read Response status and Latest safe error in the delivery history:
| Error | Meaning |
|---|---|
Destination returned HTTP 3xx. |
The destination redirected. Redirects are never followed; use the final URL as the destination. |
Destination returned HTTP 4xx. |
The destination refused the request. A common cause is a signature or credential check failing on a redacted header or body, or on a signature that has expired since the provider sent it. |
Destination returned HTTP 5xx. or 429 |
The destination errored or throttled on all four attempts. |
Destination connection failed. |
Bobbin could not connect, or the destination took longer than 15 seconds to respond, on all four attempts. |
Destination is no longer safe to contact. |
The destination host now resolves to a non-public address. |
Cannot safely replay a redacted Connection header. |
The capture was stored with its Connection header redacted. It cannot be replayed. |
Delivery failed after an unexpected queue error. |
The queue job itself failed. Check the application logs in Laravel Cloud, then queue the replay again. |
The destination received the same request twice
Delivery is at-least-once. If a destination processed a request but Bobbin did not record the 2xx (for example, the response was slow), Bobbin retries it. Each Queue replay click is also a separate delivery. Make receivers idempotent, for example by recording the provider's event identifier.