- Typed exceptions: LeadMailException base with LeadMailRequestException
(structured statusCode/errorCode/logId/validationErrors) and
LeadMailConnectionException; sendEmail/getDomains now throw these instead
of raw Guzzle exceptions, and a malformed body is no longer a silent null.
- Automatic retry with exponential backoff on idempotent calls
(getDomains, verifyEmail); sends are never retried to avoid duplicates.
- Webhook receiver: auto-registered route + LeadMailWebhookController that
verifies the HMAC signature, logs failures, and dispatches a
LeadMailWebhookReceived event. WebhookSignature/WebhookEvent/LeadMailWebhook
helpers for manual handling.
- Webhook self-registration client methods (registerWebhook/getWebhook/
deleteWebhook) and a promptless `leadmail:install` command that registers
the URL and writes LEADMAIL_WEBHOOK_SECRET to .env.
- Null-safe client binding when LEADMAIL_TOKEN is unset.
- Test suite (Pest + Testbench) covering all of the above.