diff --git a/site/config.toml b/site/config.toml
index 089f47bf8..c005a4916 100644
--- a/site/config.toml
+++ b/site/config.toml
@@ -80,15 +80,20 @@ disqusShortname = "checkly"
url = "/docs/multistep-checks/"
weight = 40
+[[menu.resources]]
+ name = "TCP checks"
+ url = "/docs/tcp-checks/"
+ weight = 45
+
[[menu.resources]]
name = "Groups"
url = "/docs/groups/"
- weight = 45
+ weight = 50
[[menu.resources]]
name = "Alerting & retries"
url = "/docs/alerting/"
- weight = 50
+ weight = 55
[[menu.resources]]
name = "Maintenance windows"
diff --git a/site/content/docs/_index.md b/site/content/docs/_index.md
index 9782437f0..b6458742b 100644
--- a/site/content/docs/_index.md
+++ b/site/content/docs/_index.md
@@ -6,8 +6,7 @@ aliases:
- /docs/
---
-Checkly gives you code-first synthetic monitoring for modern DevOps. Monitor your APIs and apps at a fraction of the
-price of legacy providers. Powered by Monitoring as Code and Playwright.
+Checkly gives you code-first synthetic monitoring for modern DevOps. Monitor your APIs, service connectivity and apps at a fraction of the price of legacy providers. Powered by Monitoring as Code and Playwright.
## Get started with monitoring as code
@@ -71,21 +70,29 @@ monitoring in minutes.
{{< doc-card
class="two-column-card"
headerTag="h3"
- title="Create a Heartbeat check"
- img="/docs/images/icons/heartbeats-check-stroked.svg"
- description="Monitor your backup jobs, data imports, and other recurring jobs or scripts by pinging Checkly at a regular interval."
- link="/docs/heartbeat-checks/"
+ title="Create a TCP check"
+ img="/docs/images/icons/tcp.svg"
+ description="Monitor the availability and performance of your TCP services by establishing TCP connections and verifying the response."
+ link="/docs/tcp-checks/"
>}}
{{< doc-card
- class="full-width-card"
- headerTag="h3"
- title="Set up alert channels"
- img="/docs/images/icons/alerting.svg"
- description="Get notified about outages, broken transactions or slow downs in your webapps and APIs. Connect to one of our many integrations like Slack, Pagerduty and Discord."
- link="/docs/alerting"
+ class="two-column-card"
+ headerTag="h3"
+ title="Create a Heartbeat check"
+ img="/docs/images/icons/heartbeats-check-stroked.svg"
+ description="Monitor your backup jobs, data imports, and other recurring jobs or scripts by pinging Checkly at a regular interval."
+ link="/docs/heartbeat-checks/"
+>}}
+{{< doc-card
+ class="two-column-card"
+ headerTag="h3"
+ title="Set up alert channels"
+ img="/docs/images/icons/alerting.svg"
+ description="Get notified about outages, broken transactions or slow downs in your webapps and APIs. Connect to one of our many integrations like Slack, Pagerduty and Discord."
+ link="/docs/alerting"
>}}
diff --git a/site/content/docs/monitoring/check-results.md b/site/content/docs/monitoring/check-results.md
index 9d08b0b13..45941fb38 100644
--- a/site/content/docs/monitoring/check-results.md
+++ b/site/content/docs/monitoring/check-results.md
@@ -140,7 +140,17 @@ In the request details you will also find the result of any assertion done as pa
+## TCP check results
+On the [check results overview page](/docs/monitoring/check-results/#check-results-overview), select a specific check run to review its results:
+
+* **Summary:** Displays the check target (URL and port), the check state (`success` for passed and degraded runs, or `error` for failed runs), the request status code and the total check run duration.
+
+* **Error details:** If the check failed, the error status code and message log will be shown.
+
+* **Timing phases:** For each request, we capture the following timing metrics:
+ * DNS: Time taken to resolve the hostname to an IP address (if a hostname was provided)
+ * Connect: Time taken to establish the TCP connection (SYN, SYN-ACK, ACK)
## Check results with retries
diff --git a/site/content/docs/tcp-checks/_index.md b/site/content/docs/tcp-checks/_index.md
new file mode 100644
index 000000000..4ee630398
--- /dev/null
+++ b/site/content/docs/tcp-checks/_index.md
@@ -0,0 +1,44 @@
+---
+title: Monitoring your services with TCP checks - Checkly Docs
+displayTitle: Monitoring your services with TCP checks
+weight: 7
+menu:
+ resources:
+ parent: "TCP checks"
+navTitle: Overview
+slug: /
+cli: true
+---
+
+> **Early Access Feature:**
+> This feature is available in early access and is currently **UI-only**. To enable it, please reach out to our [support team](mailto:support@checklyhq.com) or connect with us via the [Checkly community Slack](https://www.checklyhq.com/slack). We’d love to hear your feedback!
+
+## Overview
+
+A TCP check establishes a connection to a specified hostname or IP address and port to verify that the service is responsive. These checks are ideal for monitoring non-HTTP services, such as databases, message queues, and custom applications that rely on TCP connectivity.
+
+## Create a TCP check
+
+* **Create a check:** Click the `+` icon on the sidebar and select **TCP check** from the list. This will open the check creation page.
+
+* **Name & tags:** On the check creation page, choose a meaningful name for the check to easily identify it. Optionally, add one or more tags to further categorize or group the check.
+
+* **The TCP request:** Configure the TCP endpoint to monitor by specifying a **hostname or IP address** (e.g., tcpbin.com or 192.168.1.1) and a **port** (e.g., 4242).
+
+* **Set response time limits:** Define thresholds for marking the check as degraded or failed. This allows you to specify when requests should be considered slow (degraded) or entirely unreachable (failed).
+
+* **Scheduling strategy & locations:** Choose a [scheduling strategy](/docs/monitoring/global-locations#scheduling-strategies) and which [location](/docs/monitoring/global-locations) you would like to run your TCP check from. Please note that [private locations](/docs/private-locations) are not yet supported for TCP checks but will be available soon.
+
+* **Scheduling:** Schedule your checks to run at intervals between 10 seconds (minimum) and 24 hours (maximum).
+
+* **Retries & alerting:** Configure [retries & alerts](/docs/alerting-and-retries) by choosing from Checkly's retry strategies and alert channels, ensuring you’re notified through your preferred methods when an issue arises with one of your TCP checks.
+
+## Update or delete a TCP check
+
+* **Update a TCP check:** To update a TCP check, click the kebab menu (three dots) next to the check on your [main dashboard](https://app.checklyhq.com) and select `Edit`, or click `Edit` in the top-right corner of the check's Reporting page.
+
+* **Delete a TCP check:** To delete a TCP check, use the kebab menu (three dots) on the [main dashboard](https://app.checklyhq.com) and select `Delete`. Alternatively click `Edit` in the top-right corner of the check's Reporting page, scroll to the bottom section, and click the `Delete` button.
+
+## TCP check reporting
+
+Learn more about analyzing your TCP check run results in our [check results documentation](/docs/monitoring/check-results#tcp-check-results).
diff --git a/site/static/docs/images/icons/tcp.svg b/site/static/docs/images/icons/tcp.svg
new file mode 100644
index 000000000..80442538c
--- /dev/null
+++ b/site/static/docs/images/icons/tcp.svg
@@ -0,0 +1 @@
+