diff --git a/packages/twenty-docs/developers/extend/apps/logic/logic-functions.mdx b/packages/twenty-docs/developers/extend/apps/logic/logic-functions.mdx
index 2562f335bd..2d0799f07d 100644
--- a/packages/twenty-docs/developers/extend/apps/logic/logic-functions.mdx
+++ b/packages/twenty-docs/developers/extend/apps/logic/logic-functions.mdx
@@ -262,6 +262,10 @@ POST https://your-twenty-server.com/webhooks/server/:resolverLogicFunctionUniver
The identifier is the resolver's `universalIdentifier` from your manifest. Register that URL with the provider.
+
+**The application must be claimed and installed on its owner workspace.** Because the resolver runs in the **owner workspace** (the workspace that owns the application registration), a server route trigger only works once the application has been *claimed* — i.e. it has an owner workspace — **and** that application is **installed on the owner workspace**. Until both are true the resolver has nowhere to run, so the route cannot be dispatched. An application that exposes a `serverRouteTriggerSettings` logic function therefore cannot be listed in the marketplace until it is claimed and installed on its owner workspace.
+
+
**Resolver contract.** The SDK's `LogicFunctionConfig` type enforces this at compile time: as soon as you set `serverRouteTriggerSettings`, your handler is constrained to return `{ workspaceId: string; targetLogicFunctionUniversalIdentifier: string; payload?: object }` (or a `Promise` of it). The `workspaceId` must be a workspace where the target function is installed, otherwise the request is rejected with `404`.
| Field | Type | Notes |
diff --git a/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx b/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
index 6f7e9540a6..03021db0b8 100644
--- a/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
+++ b/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationRegistrationGeneralTab.tsx
@@ -24,7 +24,7 @@ export const SettingsApplicationRegistrationGeneralTab = ({
{!registration.isConfigured && fromAdmin && (
navigate('#config'),
diff --git a/packages/twenty-server/src/engine/core-modules/application/application-registration-variable/application-registration-variable.module.ts b/packages/twenty-server/src/engine/core-modules/application/application-registration-variable/application-registration-variable.module.ts
index 04e1540159..a15aa7bfe1 100644
--- a/packages/twenty-server/src/engine/core-modules/application/application-registration-variable/application-registration-variable.module.ts
+++ b/packages/twenty-server/src/engine/core-modules/application/application-registration-variable/application-registration-variable.module.ts
@@ -4,6 +4,7 @@ import { TypeOrmModule } from '@nestjs/typeorm';
import { ApplicationRegistrationVariableEntity } from 'src/engine/core-modules/application/application-registration-variable/application-registration-variable.entity';
import { ApplicationRegistrationVariableService } from 'src/engine/core-modules/application/application-registration-variable/application-registration-variable.service';
import { ApplicationRegistrationEntity } from 'src/engine/core-modules/application/application-registration/application-registration.entity';
+import { ApplicationEntity } from 'src/engine/core-modules/application/application.entity';
import { SecretEncryptionModule } from 'src/engine/core-modules/secret-encryption/secret-encryption.module';
@Module({
@@ -11,6 +12,7 @@ import { SecretEncryptionModule } from 'src/engine/core-modules/secret-encryptio
TypeOrmModule.forFeature([
ApplicationRegistrationVariableEntity,
ApplicationRegistrationEntity,
+ ApplicationEntity,
]),
SecretEncryptionModule,
],
diff --git a/packages/twenty-server/src/engine/core-modules/application/application-registration-variable/application-registration-variable.service.ts b/packages/twenty-server/src/engine/core-modules/application/application-registration-variable/application-registration-variable.service.ts
index 3703799095..9f662b5880 100644
--- a/packages/twenty-server/src/engine/core-modules/application/application-registration-variable/application-registration-variable.service.ts
+++ b/packages/twenty-server/src/engine/core-modules/application/application-registration-variable/application-registration-variable.service.ts
@@ -7,6 +7,7 @@ import { In, Not, type Repository } from 'typeorm';
import { ApplicationRegistrationVariableEntity } from 'src/engine/core-modules/application/application-registration-variable/application-registration-variable.entity';
import { ApplicationRegistrationEntity } from 'src/engine/core-modules/application/application-registration/application-registration.entity';
+import { ApplicationEntity } from 'src/engine/core-modules/application/application.entity';
import {
ApplicationRegistrationException,
ApplicationRegistrationExceptionCode,
@@ -23,6 +24,8 @@ export class ApplicationRegistrationVariableService {
private readonly variableRepository: Repository,
@InjectRepository(ApplicationRegistrationEntity)
private readonly applicationRegistrationRepository: Repository,
+ @InjectRepository(ApplicationEntity)
+ private readonly applicationRepository: Repository,
private readonly encryptionService: SecretEncryptionService,
) {}
@@ -161,43 +164,71 @@ export class ApplicationRegistrationVariableService {
async isConfiguredBatch(
applicationRegistrationIds: string[],
): Promise