diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8dfea98216901d39e41b3b22228689172f2e4e53..bd417a3621c9867fe51e114b8b3b88b25fcbfbdb 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -13,6 +13,7 @@ include:
 stages:
   - build
   - upload
+  - validate
 
 build:
   stage: build
@@ -83,3 +84,18 @@ stop:preview:
   script:
     - ssh fitko@dorado.uberspace.de "rm -rf preview.docs.fitko.dev/fit-connect/$CI_COMMIT_REF_SLUG"
 
+link-check:
+  stage: validate
+  rules:
+    - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH # live docs
+      variables:
+        CRAWLER_URL: https://docs.fitko.de/fit-connect/docs
+        CRAWLER_DOMAIN: docs.fitko.de/fit-connect/docs
+    - if: $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH # preview docs
+      variables:
+        CRAWLER_URL: https://preview.docs.fitko.dev/fit-connect/$CI_COMMIT_REF_SLUG/
+        CRAWLER_DOMAIN: preview.docs.fitko.dev/fit-connect/$CI_COMMIT_REF_SLUG/
+  trigger:
+    strategy: depend
+    project: fit-connect/schema-link-checker
+    branch: main