diff --git a/scripts/bash/npm-helpers/npm_push_doc.sh b/scripts/bash/npm-helpers/npm_push_doc.sh
index 9e731b99df01d2ea9666b8e578d34a653aec8919..a4e52b2006dcc2cd22cb11b74626e2982b53d0ff 100755
--- a/scripts/bash/npm-helpers/npm_push_doc.sh
+++ b/scripts/bash/npm-helpers/npm_push_doc.sh
@@ -46,6 +46,7 @@ PROJECT_ACCESS_TOKEN="${3:?Missing arg #3 pointing a Gitlab repository access to
 DIST_DIR="${4:?Missing arg #4 pointing the dist directory}"
 FEATURE_BRANCH_NAME="${5:?Missing arg #5 pointing a branch name}"
 FINAL_MERGE="${6:?Missing arg #6 pointing the final merge flag value}"
+DOC_URL="${7:?Missing arg #7 pointing the documentation URL}"
 
 if [ "${FINAL_MERGE}" = "true" ]; then
   FINAL_MERGE=1
@@ -111,16 +112,8 @@ else
   git push origin "HEAD:main"
 fi
 
-if [ ${FINAL_MERGE} -eq 1 ]; then
-  DOC_URL="${PROJECT_URL}/-/wikis/home"
-else
-  DOC_URL="${PROJECT_URL}/-/wikis/non-stable/${FEATURE_BRANCH_NAME}/home"
-fi
-
 perform_wiki_cleanup "${WIKI_REPO_DIR}/non-stable" "${PROJECT_URL}"
 
-echo "Documentation is available at url: ${DOC_URL}"
+echo "Documentation url: ${DOC_URL}"
 
 popd
-
-echo GEN_DOC_URL="${DOC_URL}" > "gen_doc.env"
diff --git a/scripts/bash/npm-helpers/npm_set_doc_url.sh b/scripts/bash/npm-helpers/npm_set_doc_url.sh
new file mode 100755
index 0000000000000000000000000000000000000000..f79cd2cbcb705e84f80c19fabd5a03aa55581f0e
--- /dev/null
+++ b/scripts/bash/npm-helpers/npm_set_doc_url.sh
@@ -0,0 +1,37 @@
+#!/bin/bash
+set -e
+
+PROJECT_DIR="${1:?Missing arg #1 specifying a project source directory}"
+PROJECT_URL="${2:?Missing arg #2 pointing project url. It is provided by CI_PROJECT_URL variable}"
+FEATURE_BRANCH_NAME="${3:?Missing arg #3 pointing a branch name}"
+FINAL_MERGE="${4:?Missing arg #4 pointing the final merge flag value}"
+REPLACE_ENV_NAME="${5:-GEN_DOC_URL}"
+REPLACE_FILE_PATH="${6:-${PROJECT_DIR}/README.md}"
+
+pushd "${PROJECT_DIR}"
+
+if [ "${FINAL_MERGE}" = "true" ]; then
+  FINAL_MERGE=1
+else
+  FINAL_MERGE=0
+fi
+
+if [ ${FINAL_MERGE} -eq 1 ]; then
+  DOC_URL="${PROJECT_URL}/-/wikis/home"
+else
+  DOC_URL="${PROJECT_URL}/-/wikis/non-stable/${FEATURE_BRANCH_NAME}/home"
+fi
+
+echo "Documentation url: ${DOC_URL}"
+
+sed -i "s<\${${REPLACE_ENV_NAME}}<${DOC_URL}<g" "${REPLACE_FILE_PATH}"
+if grep -q "\${${REPLACE_ENV_NAME}}" "${REPLACE_FILE_PATH}"; then
+  echo "Failed to replace the documentation url in ${REPLACE_FILE_PATH}"
+  exit 1;
+fi # Ensure that the placeholder was replaced
+
+echo "Replaced the documentation url: \"\${${REPLACE_ENV_NAME}}\" => \"${DOC_URL}\" in file: \"${REPLACE_FILE_PATH}\""
+
+popd
+
+echo ${REPLACE_ENV_NAME}="${DOC_URL}" > "gen_doc.env"
diff --git a/templates/npm_projects.gitlab-ci.yml b/templates/npm_projects.gitlab-ci.yml
index 2ac1d7735dafdb9a091080a08eb69a717e998fee..7e56920a1b6284aeeb2a812d523ae0a667e50b9e 100644
--- a/templates/npm_projects.gitlab-ci.yml
+++ b/templates/npm_projects.gitlab-ci.yml
@@ -110,6 +110,10 @@ variables:
     # Output directory where should be stored package - it should be overrided by derived job
     DIST_DIR: ""
 
+    PROJECT_URL: "${CI_PROJECT_URL}"
+    REPLACE_DOC_URL_ENV: ""
+    REPLACE_FILE_PATH: "${SOURCE_DIR}/README.md"
+
     # Target package scope - it should be overrided by derived job
     NPM_PACKAGE_SCOPE: ""
     # Target package name - it should be overrided by derived job
@@ -117,15 +121,18 @@ variables:
     NPM_REGISTRY_URL: "gitlab.syncad.com/api/v4/projects/${CI_PROJECT_ID}/packages/npm/"
 
   script:
+    - if [ -n $REPLACE_DOC_URL_ENV ]; then /home/emscripten/scripts/npm_set_doc_url.sh "${SOURCE_DIR}" "${PROJECT_URL}" "${CI_COMMIT_REF_NAME}" "${CI_COMMIT_REF_PROTECTED}" "${REPLACE_DOC_URL_ENV}" "${REPLACE_FILE_PATH}"; fi
     - /home/emscripten/scripts/npm_build_package.sh "${SOURCE_DIR}" "${NPM_REGISTRY_URL}" "${NPM_PACKAGE_SCOPE}" "${NPM_PACKAGE_NAME}" "${DIST_DIR}" "${CI_COMMIT_REF_PROTECTED}" "${CI_COMMIT_TAG}"
 
   artifacts:
     reports:
       dotenv:
+        - "gen_doc.env"  # contains URL to generated documentation pointed by `GEN_DOC_URL` variable
         - "${SOURCE_DIR}/built_package_info.env"  # contains path to produced tgz
         - "${SOURCE_DIR}/built_package_version_info.env"  # contains information related to generated package version and git revision
 
     paths:
+      - "${REPLACE_FILE_PATH}"
       - "${DIST_DIR}/*.tgz"  # Built package
       - "${DIST_DIR}/built_package_info.json"
 
@@ -224,6 +231,7 @@ variables:
   variables:
     # Must be overrided by derived job
     WIKI_PUSH_TOKEN: ""
+    DOC_URL: "${GEN_DOC_URL}"
 
     # The directory containing sources to be built - it can be overrided by derived job
     SOURCE_DIR: "${CI_PROJECT_DIR}"
@@ -232,14 +240,5 @@ variables:
     DIST_DIR: "$CI_PROJECT_DIR/dist"
 
   script:
-    # start always at project root dir, to make sure .env file (included in artifacts) is generated there
     - cd "${CI_PROJECT_DIR}"
-    - /home/emscripten/scripts/npm_push_doc.sh "${SOURCE_DIR}" "${PROJECT_URL}" "${WIKI_PUSH_TOKEN}" "${DIST_DIR}" "${CI_COMMIT_REF_NAME}" "${CI_COMMIT_REF_PROTECTED}"
-
-  artifacts:
-    reports:
-      dotenv:
-        - "gen_doc.env"  # contains URL to generated documentation pointed by `GEN_DOC_URL` variable
-
-    when: always
-    expire_in: 1 week
+    - /home/emscripten/scripts/npm_push_doc.sh "${SOURCE_DIR}" "${PROJECT_URL}" "${WIKI_PUSH_TOKEN}" "${DIST_DIR}" "${CI_COMMIT_REF_NAME}" "${CI_COMMIT_REF_PROTECTED}" "${DOC_URL}"