# Integrating External Services in Atlassian Forge — Without Losing the “Runs on Atlassian” Eligibility

**URL:** <https://community.developer.atlassian.com/t/integrating-external-services-in-atlassian-forge-without-losing-the-runs-on-atlassian-eligibility/96055>\
**Category:** Forge\
**Tags:** jira-cloud, runs-on-atlassian, rest-api, forge\
**Created:** [October 12, 2025, 2:15pm UTC](https://community.developer.atlassian.com/t/integrating-external-services-in-atlassian-forge-without-losing-the-runs-on-atlassian-eligibility/96055 "2025-10-12T14:15:46Z")\
**Posts on this page:** 1\
**Showing post:** 8

<div class="post-metadata">

**Author:** ![vzakharchenko](https://sea1.discourse-cdn.com/atlassiandeveloper/user_avatar/community.developer.atlassian.com/vzakharchenko/32/53609_2.png) [@vzakharchenko](https://community.developer.atlassian.com/u/vzakharchenko)\
**Post date:** [October 14, 2025, 5:32pm UTC](https://community.developer.atlassian.com/t/integrating-external-services-in-atlassian-forge-without-losing-the-runs-on-atlassian-eligibility/96055/8 "2025-10-14T17:32:27Z")

</div>

Just tested this behavior — when a Forge app is **uninstalled** , the existing static web trigger URLs become invalid.

However, if the app is **reinstalled** , the same static web trigger URL remains valid again (no rotation) and starts working as before.

When calling a trigger of an uninstalled app, Forge responds with:

```auto
{
  "statusCode": 424,
  "response": {
    "timestamp": "2025-10-14T14:54:10.393+00:00",
    "path": "/x1/upHs7HD4zoPLigGLOgN3eFGiL2U",
    "status": 424,
    "error": "Failed Dependency",
    "requestId": "7929e69f-1088608"
  }
}

```

The 424 response is not a reliable way to detect outdated trigger URLs, since Forge can return the same code for **any unexpected error** , not only when the app is uninstalled.

**Two possible workarounds:**

1. **Error-based detection** — handle requests in a try/catch and treat persistent 424 responses as “potentially uninstalled”. If this status persists for a while (or after a few retries), mark the Forge installation as inactive.
2. **Installation check** — query the Forge installation list via GraphQL or the CLI (forge install list --json) to verify that the installation still exists.

The first approach is simpler and works automatically during normal request handling.

@rmassaioli It would be great if Atlassian returned a more specific error (e.g., 410 Gone) when the app has been uninstalled — that would make **uninstalled app detection logic much clearer.**

---

_[View the full topic](https://community.developer.atlassian.com/t/integrating-external-services-in-atlassian-forge-without-losing-the-runs-on-atlassian-eligibility/96055)._
