How to Monitor the Health of Your App’s APIs and Integrations

A customer clicks Sync now, and your application reports success.

The request to the third-party CRM returned HTTP 200. The integration dashboard is green. No infrastructure alarm fired.

An hour later, the customer notices that half of yesterday’s contacts never appeared.

This is why monitoring APIs and integrations is harder than checking whether an endpoint responds.

An integration can be technically reachable while still failing the business outcome it exists to deliver. Requests can succeed slowly enough to damage a workflow. Authentication can fail for one customer while everyone else is healthy. Webhooks can stop arriving, queues can build behind a healthy API, and a provider can return successful responses containing data your application no longer handles correctly.

Good integration monitoring therefore needs to establish both whether the connection is technically healthy and whether the expected business result is still happening.

For Levelworks, this is primarily an Observable and Integrable App Health concern. An application cannot be considered reliably integrated with external systems if teams only discover broken data flows when customers report them.

Start with the four signals every API needs

Google SRE's monitoring guidance describes four “golden signals” for user-facing systems: latency, traffic, errors and saturation. They provide a useful foundation for API monitoring.

Google SRE: Monitoring Distributed Systems

Latency

Measure how long requests take, not merely whether they complete.

For APIs, useful views usually include median latency plus higher percentiles such as p95 or p99. An average can remain comfortable while a smaller but important group of users experiences much slower requests.

Where possible, separate your application's own processing time from dependency time.

AWS API Gateway, for example, exposes both overall Latency and IntegrationLatency, allowing teams to distinguish total request time from the time spent waiting for the backend integration.

AWS: API Gateway Monitoring Metrics

A growing integration latency tells a different story from your own API layer becoming slower.

Traffic

Track how much work is flowing through the connection.

Depending on the integration, this might mean:

  • API requests per minute;
  • records synchronized;
  • webhook events received;
  • jobs submitted;
  • files transferred.

Traffic provides context for everything else. Fifty failures in a minute are very different when normal traffic is 100 requests than when it is 500,000.

Errors

Monitor error rates as well as raw counts.

Useful categories include:

  • connection failures and timeouts;
  • authentication failures;
  • authorization failures;
  • 4xx responses;
  • provider-side 5xx responses;
  • rate-limit responses;
  • invalid or rejected payloads.

Avoid collapsing everything into a single “integration errors” number. A burst of expired credentials requires a very different response from an external provider returning HTTP 500.

Saturation

With a third-party integration, saturation is not necessarily CPU or memory because you do not control the provider's infrastructure.

The constrained resource may instead be:

  • API quota;
  • concurrent-request limit;
  • worker capacity;
  • connection pool;
  • queue depth;
  • retry backlog.

A queue growing faster than workers can consume it is an integration-health problem even while the remote API remains perfectly available.

Monitor both sides of the API boundary

A common blind spot is monitoring only the APIs your application exposes.

Most modern applications also consume APIs from payment providers, identity systems, CRMs, mapping services, communications platforms and other external services.

Those are two separate monitoring surfaces.

For APIs you operate, measure whether consumers can reach them, how quickly they respond and which operations fail.

For APIs your application consumes, instrument outbound calls with information such as:

  • integration/provider;
  • operation;
  • latency;
  • status;
  • timeout;
  • retry behavior.

OpenTelemetry defines common conventions for HTTP client and server telemetry, including request-duration metrics and traces representing outbound HTTP calls. Standardizing this telemetry makes it much easier to compare behavior across different services and integrations.

OpenTelemetry: HTTP Semantic Conventions

Tracing becomes particularly useful during diagnosis. Instead of separately seeing that checkout became slow and that the payment API's latency increased, a distributed trace can connect the dependency call directly to the customer request that triggered it.

Do not treat every HTTP 200 as success

One of the most important rules in integration monitoring is that protocol success does not necessarily mean business success.

Google SRE explicitly includes implicit failures in its discussion of error monitoring: a service can return a successful protocol response while still returning the wrong result.

Suppose an import API returns:

{

  "accepted": 0,

  "rejected": 250

}

The HTTP request succeeded.

The integration did not.

Monitor application-level outcomes such as:

  • records accepted versus rejected;
  • imports fully versus partially completed;
  • jobs reaching their intended final state;
  • payments actually created;
  • records successfully synchronized.

For many integrations, the most useful health metric sits one level above HTTP.

Measure important operations separately

A provider-level average can hide the operation that actually matters.

Imagine one external API exposes a fast customer lookup, a moderately fast address search and a slow report-generation endpoint.

Thousands of fast lookups can make the provider-wide latency graph appear healthy while report generation is deteriorating badly.

Segment significant operations separately.

Integration

Operation

Useful view

Payment provider

Create payment

p50, p95, p99

CRM

Fetch changed contacts

p95, failure rate

File storage

Upload document

p95 by size band

Shipping service

Create label

p95, timeout rate

Azure API Management exposes request counts, backend duration, overall request duration and response-code dimensions that can be filtered by API and backend response behavior.

Microsoft: Monitor APIs in Azure API Management

Granularity should follow business importance rather than instrumentation convenience.

Watch authentication health separately

Authentication problems can affect one integration, one tenant or one customer while aggregate API availability remains healthy.

Track conditions such as:

  • expired or invalid credentials;
  • failed token refreshes;
  • rejected API keys;
  • missing permissions;
  • repeated authorization failures.

Do not simply count these as generic 4xx errors.

If 95% of customers synchronize normally while one large account has an expired OAuth authorization, the provider is healthy but that customer's integration is effectively offline.

A useful dashboard should make that distinction visible without requiring someone to search raw logs first.

Watch rate limits before they become outages

Rate limiting usually provides warning signs.

If the provider exposes quota or reset information, capture it where practical. At minimum, track:

  • rate-limit responses;
  • retry volume caused by throttling;
  • sustained increases in request volume;
  • remaining quota where available.

A healthy integration should not discover its capacity ceiling only after customers begin receiving 429 Too Many Requests.

Normal traffic patterns matter too. A nightly synchronization may legitimately use much more API capacity than daytime activity, so alert thresholds should reflect expected workload rather than treating every spike as abnormal.

Webhooks need pipeline monitoring

Webhook monitoring should not stop at:

Did our webhook endpoint receive a request?

The actual path usually looks more like:

Provider event

      ↓

Webhook received

      ↓

Validated

      ↓

Queued

      ↓

Processed

      ↓

Business state updated

Each meaningful transition can fail.

Useful signals therefore include:

  • deliveries received;
  • signature-validation failures;
  • non-2xx responses;
  • processing failures;
  • duplicate events;
  • queue depth;
  • age of the oldest pending event;
  • receipt-to-processing latency.

Provider behavior also matters.

GitHub, for example, documents that failed webhook deliveries are not automatically redelivered. Teams can manually redeliver them or implement their own process for finding and replaying failed deliveries.

GitHub: Handling Failed Webhook Deliveries

For an integration where losing an event can leave systems out of sync, you therefore need to monitor not only processing failures but possible delivery gaps.

Reconciliation catches failures your monitoring may never see

Some of the most dangerous integration failures create no obvious error.

Imagine your accounting integration normally exports 8,000 invoices overnight.

Tonight, it exports 6,200.

Every API request returns successfully. No worker crashes. No quota is breached.

The missing invoices may become visible only when you compare the states of the two systems.

That comparison is reconciliation.

Examples include:

  • internal orders versus orders created in fulfilment;
  • completed payments versus imported financial records;
  • changed source records versus synchronized destination records;
  • expected webhook-driven updates versus completed downstream changes.

Reconciliation is particularly valuable for billing, inventory, financial and other workflows where silent inconsistency matters more than temporary endpoint availability.

It also catches mistakes in your own logic. If a new record category is accidentally excluded from a synchronization query, infrastructure monitoring may remain completely green.

Use synthetic monitoring for important paths

Production telemetry tells you what happened to real traffic.

Synthetic monitoring asks whether an important path can work even when no customer is currently using it.

Google Cloud describes synthetic monitors as scheduled tests that can check the availability, consistency and performance of applications and APIs while recording execution status and latency.

Google Cloud: Synthetic Monitoring

A useful integration check might:

  1. authenticate with a controlled test account;
  2. request a known record;
  3. verify important response properties;
  4. measure response time.

That is far more informative than simply checking:

GET /health

It can detect authentication failures, DNS problems, routing problems and some provider-side behavioral failures before a real user encounters them.

Keep synthetic tests safe and deterministic. A check that creates production orders every five minutes is likely to create a different kind of operational problem.

[Internal Link: “Real User Monitoring vs Synthetic Monitoring: Which Does Your App Need?”]

Segment failures without creating unusable telemetry

An integration can be healthy overall while broken for one operation, region or customer segment.

Useful dimensions may include:

  • provider;
  • endpoint;
  • region;
  • API version;
  • application version;
  • authentication type.

Customer or tenant context can also matter, but be careful about using high-cardinality identifiers as metric dimensions. Depending on the monitoring system, this can become expensive or operationally awkward.

A common pattern is to keep metrics relatively low-cardinality while putting richer context—such as tenant or request identifiers—into structured logs and traces.

You want to be able to distinguish:

system-wide failure from provider-specific failure from one customer's configuration problem.

They require very different responses.

Track retries as a health signal

Retries can hide deterioration.

Suppose 99.9% of integration operations eventually succeed.

That sounds healthy.

But imagine 15% of requests now require two or three attempts before succeeding. Users are waiting longer, workers are consuming more capacity and a modest provider problem could quickly turn that retry volume into a substantial backlog.

Track:

  • first-attempt success;
  • eventual success;
  • retry count;
  • retry exhaustion;
  • time to eventual success.

A widening gap between first-attempt success and eventual success is useful early-warning evidence.

Retries should make temporary failures survivable, not make an unhealthy integration look healthy.

Alert on user impact, not every unusual movement

Monitoring becomes counterproductive when every anomaly generates an urgent alert.

An API's p95 latency moving from 210 ms to 250 ms might be worth observing without waking anybody.

A payment provider failing 20% of checkout requests requires a different response.

Google SRE recommends alerting on conditions that require human action and centering monitoring on signals that reflect user-visible service health.

For integrations, high-urgency alerts might include:

  • sustained failure of a critical operation;
  • sharp increase in authentication failures;
  • critical provider latency exceeding an impact threshold;
  • webhook backlog age exceeding tolerance;
  • reconciliation mismatch above an accepted limit;
  • impending exhaustion of a hard API quota.

Lower-severity conditions can create tickets or dashboard warnings instead.

[Internal Link: “How to Build an Effective Application Alerting Strategy”]

Build dashboards around operational decisions

An integration dashboard should help an engineer understand the situation without opening twelve separate tools.

For each important integration, consider:

Signal

What it reveals

Request volume

Current demand

Success/error rate

Immediate reliability

p95/p99 latency

Responsiveness

Error categories

Likely failure type

Authentication errors

Credential or permission problems

Rate-limit events

Provider-capacity pressure

Retry rate

Hidden degradation

Queue depth / oldest age

Processing backlog

Webhook failures

Event-delivery health

Synthetic result

End-to-end reachability

Reconciliation gap

Business-level correctness

Not every integration needs every signal.

A low-value read-only data feed does not deserve the same monitoring investment as payments or inventory synchronization.

Monitoring depth should follow the consequence of failure.

Define integration health from the business outcome backward

The strongest monitoring design starts with the job the integration is supposed to perform.

If its purpose is:

Keep CRM contacts synchronized within five minutes.

then meaningful health indicators could include synchronization success rate, p95 sync lag, pending records and reconciliation mismatch.

If its purpose is:

Allow customers to complete payment.

the important signals may instead be provider availability, payment-creation latency, technical failure rate, timeouts and successful checkout completion.

This approach prevents teams from building technically impressive dashboards that never answer whether the integration is actually doing its job.

[Internal Link: “Why Third-Party Integrations Fail Over Time”]

Healthy integrations should fail visibly

An external integration will eventually encounter something unexpected: a provider outage, expired authorization, slower responses, missing events, quota pressure or data that does not fit an old assumption.

Monitoring cannot prevent those events.

Its job is to prevent them from remaining invisible.

For Levelworks, that is the practical intersection of Observable and Integrable App Health. Teams should be able to see whether requests are flowing, whether important operations are succeeding quickly enough, whether asynchronous processing is keeping up and whether the two systems still agree about the business state they are supposed to share.

The strongest integration monitoring therefore ends one step beyond the API response.

It follows the transaction far enough to know that the work the API was called to perform actually happened.

‍

Continue Reading