Edge errors
These are the only Fleack errors that reach your mobile app. All other errors are contained to the backoffice or your internal tooling.404 tenant_not_found
404 tenant_not_found
Host header didn’t match any tenant configured in Fleack. Fleack couldn’t identify which tenant should handle the request.Verify DNS is pointing at Fleack
Confirm the tenant route exists
host field on your tenant must match exactly what your app sends in the Host header — including subdomain.502 origin_unreachable / tenant_unreachable
502 origin_unreachable / tenant_unreachable
message field contains the underlying network error (for example ECONNREFUSED, ENOTFOUND, or ETIMEDOUT).Check your backend is reachable
Check the upstream URL in your tenant settings
upstream field. It must be the full URL of your real backend, including protocol and any path prefix.Check IP allowlisting
Backoffice errors
These errors appear in the Fleack backoffice UI or in API responses when your team manages tenants, members, and tests.401 unauthorized
401 unauthorized
403 csrf_invalid
403 csrf_invalid
x-fleack-csrf header automatically. If you see this error, your browser session is out of sync — refresh the page and try again.403 forbidden — super-admin only
403 forbidden — super-admin only
409 already_member / already_invited
409 already_member / already_invited
410 invitation_expired
410 invitation_expired
Test issues
These aren’t error codes — they’re situations where a test appears to be running but something about the data doesn’t look right.Test created but no exposures arriving
Test created but no exposures arriving
endpoint_signature the test is bound to and the signature of the requests your app is actually making.Check the endpoint signature on the test
endpoint_signature it’s bound to.Find that signature in the Endpoints catalog
Look for similar signatures
Test running but the lever still shows the control value
Test running but the lever still shows the control value
exposed_users stays at 0 even though events are firing
exposed_users stays at 0 even though events are firing
exposed_users counter only increments for exposures with a non-null user identity — a user-id header, an authenticated path, or a UA + IP fallback (available in recent Fleack versions). If you’re on an older Fleack version that returned null for anonymous users, contact contact@fleack.io to arrange an upgrade.The target path is missing in some responses. Variant injection only fires — and an exposure is only logged — when Fleack can find the target_key in the response body. If your backend returns different response shapes for some requests and the targeted path is absent in those responses, those requests won’t produce an exposure. Check the test’s target_key against your actual response body to confirm the path always exists.Lever wizard issues
"No endpoint captured yet"
"No endpoint captured yet"
"No scalar value found in the captured body"
"No scalar value found in the captured body"
[{...}, {...}]) without nested scalars, or when the response body is empty.Confirm the endpoint returns the value you want to test
data.config.gems_reward) is actually present in the response body.Inspect the captured sample in the backoffice
Contact support if the value is there but not surfaced
Health check endpoints
Each Fleack service exposes a health endpoint you can poll for liveness probes or quick diagnostics.| Service | Endpoint | What it shows |
|---|---|---|
| Gateway | GET /_flick/health | tenants_count and the current tenant host registry |
| Tenant service | GET /_flick/health | events_count, active_tests, and database connectivity |
| Control-plane | GET /health | Database connectivity and AI integration status |
active_tests: 0 despite a running test in the backoffice, the cache hasn’t refreshed yet. Wait 5–10 seconds and check again. If it stays at 0 after 30 seconds, contact contact@fleack.io with your tenant_id.Still stuck?
Email contact@fleack.io with:- The error code or a description of the symptom (a screenshot helps)
- The relevant
endpoint_signatureandtenant_id - The approximate timestamp so we can locate the event in logs