Every integration has a boundary: an external system can be unavailable, respond late or send the same event more than once. Design the workflow around those possibilities from the start.
Give each request a traceable identifier. Decide which operations are safe to retry, how long to wait and how duplicate events should be handled. Keep credentials on the server and use the provider’s actual specification to shape the adapter.
Build an operational view that distinguishes pending, successful and failed work. Exercise exception scenarios during testing and document how your team investigates them. These decisions are more useful than assuming the happy path will always work.