Documentation / Request correlation

Follow a mobile failure to its backend request.

Connect Logister projects, propagate request IDs with the SDKs, and follow a mobile failure to backend occurrences and deployments.

Enable related requests

Requires Logister 3.7 or later. The project picker below requires 3.7.1; verify the required SDK version is published before upgrading. You must manage both projects to connect them.

  1. Set LOGISTER_CROSS_PROJECT_CORRELATIONS=true on your Logister instance. The default is off.
  2. In each project, open Settings → Integrations → Connected projects and enable related requests.
  3. In the backend project, use Link an app to this backend. Choose the Android or iOS project from App project, then select Review connection. Check that the named mobile app sends requests to the correct backend. Select the App environment and Backend environment, then select Link projects. Repeat for your other mobile app. Starting from a mobile project instead shows Link this app to a backend.
  4. Upgrade the relevant SDKs and enable the application's outbound HTTP wrapper with an exact backend-origin allowlist. Exclude mobile-token issuer URLs. Keep each app's own release and environment.

Project choices show the platform and slug to distinguish similar names. Only active projects you own or administer appear; already linked projects cannot be selected again. Environment lists show recent values and common names. Choose Other environment to enter a missing name exactly as your app reports it. Each linked project shows a reminder if related requests are still disabled.

Readers need access to both projects. A connection grants no permissions. Either project's manager can disconnect it.

Choose your SDK integration

SDK releaseRequest contextOutbound calls
Ruby 0.5.0Rack/Rails request scopeImmutable child handle and header helper
JavaScript 0.5.0Express AsyncLocalStorageOpt-in fetch wrapper
Python 0.5.0Django, Flask, FastAPI ContextVarImmutable child handle and header helper
.NET 0.4.0Native W3C Activity and ASP.NET CoreNative HttpClient tracing; explicit helper for other transports
iOS 0.6.0Explicit per-attempt handleOpt-in URLSession wrapper
Android 0.6.0Explicit per-attempt handleHttpURLConnection wrapper or optional logister-android-okhttp artifact

Headers use W3C traceparent and x-request-id. URLSession, fetch, and HttpURLConnection wrappers return redirects for explicit handling. The OkHttp integration checks each redirect hop. Generic header helpers require disabled redirects or per-hop validation. Browser CORS must allow both header names.

Verify one failed request

  1. Make a test call from the mobile app to its backend. Retain the wrapper's immutable request handle and attach it to the handled error.
  2. Confirm the backend records the same trace ID with a new local span and the outgoing mobile span as its parent.
  3. Open the mobile error occurrence and its Related requests panel. Open the matching backend occurrence.
  4. Check the evidence label and release. A deployment is attached only when its own project, environment, and release identify exactly one preceding deployment.
EvidenceMeaning
Parent spanShared trace and an explicit parent/child span relationship
Shared traceRecords carry the same trace ID
Shared request IDSame request ID without a contradictory trace

These labels describe identifiers, not proof of causation. Endpoints and timestamps provide context; they do not create a match. Aggregate OS diagnostics and unrelated crashes are not assigned a guessed request.

CLI 1.2.0 adds the same lookup. Its token needs events:read, errors:read, traces:read, and deployments:read, plus both projects in its allowlist.

CLI
logister events correlations EVENT_UUID --project PROJECT_UUID --format json

If a related request is missing

  • No panel: check the instance flag and this project's setting.
  • No backend result: check access to both projects, both opt-in settings, environment mapping, outgoing headers, and the selected occurrence's IDs. Conflicting IDs are excluded.
  • Incomplete results: check retention coverage and narrow the time range. The default is ±15 minutes; the maximum is 24 hours, ten connected projects, 500 rows, and 1 MiB of response metadata.
  • No deployment: record the backend's own release/environment and deployment time. Missing or ambiguous releases are left unlinked.
  • Unexpected match: disable related requests or disconnect the projects while checking identifier reuse. Incoming identifiers are untrusted metadata.

See CLI setup, GitHub source context, or report a documentation issue.