# Third-Party API Integration Pre-Launch Checklist: 18 Things to Verify Before You Ship

> A pre-launch checklist for third-party API integrations covering authentication, error handling, rate limits, webhook security, and observability before going to production.

- **Published:** 2025-04-09
- **Author:** Clixo
- **Reading time:** 5 min read
- **Tags:** integrations, api, checklist, production, webhooks
- **Canonical URL:** https://clixo.sh/blog/third-party-api-integration-pre-launch-checklist

Integrations fail in production in ways they never fail in development. The third-party service goes down. A rate limit you did not know existed kicks in. A webhook fires before your database is ready. The auth token expires at 2 AM on a Sunday. None of these show up in a happy-path test.

This checklist is designed to be run before you flip the production switch on any third-party integration.

```mermaid
sequenceDiagram
  participant APP as Your Application
  participant SM as Secrets Manager
  participant API as Third-Party API
  participant WH as Webhook Endpoint
  APP->>SM: Fetch API credentials at runtime
  SM->>APP: Return scoped token
  APP->>API: Authenticated request with timeout
  API->>APP: Response or 429 rate-limit
  APP->>APP: Retry with exponential backoff
  API->>WH: Webhook event fired
  WH->>WH: Verify HMAC signature
  WH->>APP: Enqueue event for async processing
```

## Authentication and Secrets

- **Secrets are outside source control.** No API keys, client secrets, or webhook signing keys in `.env` files committed to the repo. Use environment variables loaded from a secrets manager (AWS Secrets Manager, Doppler, Vault).
- **Token expiry is handled.** OAuth access tokens expire. Your integration proactively refreshes tokens before expiry, not reactively after a 401. Test this by shortening the expiry in your staging environment.
- **Secrets can be rotated without a deploy.** If a key is compromised, you need to rotate it in minutes, not hours. Verify the rotation path is fast and tested.
- **Permissions are scoped to minimum required.** Your API credentials only have the permissions the integration actually needs. Read-only where possible.

## Error Handling and Resilience

- **Every API call has a timeout.** Never make an HTTP request without a timeout. A hanging request can block a thread pool or exhaust a connection pool. Set aggressive timeouts (5–15 seconds for most integrations) and handle the timeout error explicitly.
- **Rate limit responses are handled.** When the API returns 429, your code backs off and retries after the `Retry-After` header value, or with exponential backoff if the header is absent. Verify this logic is exercised in your staging environment.
- **5xx responses from the provider are retried with backoff.** A transient 503 should not permanently fail an operation. Implement retry logic with exponential backoff and a ceiling on retries.
- **4xx responses do not retry blindly.** A 400 Bad Request or 404 Not Found usually signals a bug in your code, not a transient failure. Log it clearly and alert; do not loop.
- **Circuit breaker or fallback exists for critical paths.** If the third-party service goes down, what does your application do? For non-critical integrations, fail gracefully and queue for later. For critical paths, a circuit breaker prevents cascade failures.

## Webhook-Specific Checks

- **Signature verification is implemented and tested.** Verify every inbound webhook against the provider's HMAC signature before processing. Test with a tampered payload — it should return 401.
- **Endpoint returns 200 before doing slow work.** Acknowledge receipt immediately; process asynchronously. Verify that the processing path actually runs even if the HTTP response is already sent.
- **Idempotency is in place.** Replay the same webhook event twice against your staging endpoint. Confirm the outcome is identical to processing it once. Check for duplicate records, duplicate emails, or double-charged amounts.
- **Endpoint URL is stable and versioned.** Changing your webhook URL requires updating every provider registration. Use a stable path like `/webhooks/v1/stripe` rather than `/api/payments/callback`.

## Rate Limits and Quotas

- **You know the provider's rate limits.** Read the documentation; do not discover limits in production. Note whether limits are per second, per minute, per hour, or per day.
- **Your expected load is under the limit with headroom.** At peak load, how many API calls per minute will you make? Model this, including spikes.
- **You have a plan for limit increases.** Some providers require manual approval for higher limits. Apply before you need it.

## Observability

- **Every API call is logged with its outcome.** Log the provider, endpoint, HTTP status, and latency for every call. Do not log sensitive request/response bodies, but do log enough to diagnose failures.
- **Alerts exist for elevated error rates.** Set up an alert if the error rate for a given integration exceeds a threshold (e.g., more than 5% of calls returning 5xx over 5 minutes).
- **You can trace a failing event end-to-end.** Given a webhook event ID or transaction ID from the provider, can you find every log line related to it? Correlation IDs make this possible.

## One Final Check

Run a chaos test: turn off the staging integration and verify your application degrades gracefully. No unhandled exceptions, no silent data loss, no user-facing crashes.

If any item on this list is incomplete, the integration is not ready for production — regardless of how well it worked in testing.

Building integrations that hold up under real-world conditions is a core part of what Clixo does for product teams. If you want the integration built right from the start, [let us know what you are working on](https://clixo.sh/#contact).

---

Clixo · 1141 W Bryn Mawr Ave, Itasca, IL 60143, US · [hello@clixo.sh](mailto:hello@clixo.sh)
[Start a build](https://clixo.sh/#contact) · [All services](https://clixo.sh/services) · [Agent guide (llms.txt)](https://clixo.sh/llms.txt)
