Skip to main content
By the end of this guide your integration catches typed errors instead of strings, retries only the errors that are safe to retry, backs off with jitter so a rate limit does not compound, and attaches an idempotency key on every write so a retried call never creates a duplicate.

Prerequisites

Steps

Troubleshooting

What you built

You set up typed error catching with GavaiError, learned which codes are safe to retry and which require fixing first, implemented exponential backoff with jitter, and attached idempotency keys to writes so retries never cause duplicate side effects. The integration now survives transient failures without double-executing irreversible operations.

Next steps