On the wire
Ships with HTTP status 401, carrying "code": "RU-4019" in the response body alongside the human-readable error message. Existing fields are never replaced by the code: it is additive.
Common causes
- The webhook secret was rotated (turning sync off and back on mints a new one) and the provider side still has the old value configured.
- GitHub: the repository webhook's own "Secret" field does not match the value shown on the connection.
- Linear: the workspace webhook was created with no signing secret, or a different one than the connection stores.
- Jira: the Automation rule's "Send web request" custom header carries the wrong value, or was never added -- Jira Cloud has no native request signing, so this header IS the signature for that provider.
How to fix it
- Re-copy the current secret from Account settings > Integrations > Issue trackers and paste it into the provider's webhook/automation configuration exactly.
- For Jira, confirm the Automation rule's "Send web request" action sends the secret as the documented custom header, not as a query parameter or body field.
Related codes
Still stuck?
Ask support and mention RU-4019: the code pins down the exact refusal path, so you skip the diagnostic back-and-forth.