> ## Documentation Index
> Fetch the complete documentation index at: https://checklyhq.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Creating A TCP Monitor

> Step-by-step guide to set up your first TCP monitor and ensure your network services are always available.

<Tip>
  Learn more about all the [TCP Monitor capabilities](/detect/uptime-monitoring/tcp-monitors/overview) in the general overview.
</Tip>

This guide walks you through creating your first TCP monitor to check the availability of your network services, databases, or any TCP-based application.

TCP monitors verify the availability of non-HTTP services by establishing a connection to a specific host and port.

## Basic Setup

Configure your TCP monitor by specifying the target service:

<Frame>
  <img src="https://mintcdn.com/checkly-422f444a/9iwkS8Mlm4KfOHnA/images/tcp-request.png?fit=max&auto=format&n=9iwkS8Mlm4KfOHnA&q=85&s=1fcf5aa0d20ab1e3363e6617c7d7775e" alt="TCP monitor setup interface showing hostname, port, and protocol selection" width="1572" height="918" data-path="images/tcp-request.png" />
</Frame>

* **Hostname:** The server you want to monitor (e.g. `db.example.com`)
* **Port:** The TCP port your service is listening on (e.g. `3306` for MySQL)
* **IP family:** Defaults to IPv4

## Assertions

Configure connection timeouts and data transmission assertions:

<Frame>
  <img src="https://mintcdn.com/checkly-422f444a/SdrQKfCB6NPoo3Ex/images/tcp-assertion.png?fit=max&auto=format&n=SdrQKfCB6NPoo3Ex&q=85&s=f1e4247681dc179f25bd4687d2ea10c2" alt="TCP monitor connection options showing timeout settings and data fields" width="1564" height="416" data-path="images/tcp-assertion.png" />
</Frame>

* **Connection timeout:** Maximum time to wait for connection (default: 10 seconds)
* **Read timeout:** Time to wait for response after connection (default: 10 seconds)
* **Data to send:** Optional data to transmit after establishing connection

## Response Validation

Validate the service response for more precise monitoring:

<Frame>
  <img src="https://mintcdn.com/checkly-422f444a/9iwkS8Mlm4KfOHnA/images/tcp-response.png?fit=max&auto=format&n=9iwkS8Mlm4KfOHnA&q=85&s=9eb408631ec4975963dfefe0d6317a28" alt="TCP monitor assertions interface showing response validation options" width="2448" height="444" data-path="images/tcp-response.png" />
</Frame>

* **Response data:** Expected text pattern in the response
* **Response time limits:** Define performance thresholds for degraded or failed states

## Frequency

Set how often the monitor runs (every 10 seconds to 24 hours):

<Frame>
  <img src="https://mintcdn.com/checkly-422f444a/9iwkS8Mlm4KfOHnA/images/tcp-frequency.png?fit=max&auto=format&n=9iwkS8Mlm4KfOHnA&q=85&s=f550473b30dee82fa881431c28f11acf" alt="TCP monitor frequency selection interface" width="1572" height="358" data-path="images/tcp-frequency.png" />
</Frame>

## Scheduling & Locations

<Frame>
  <img src="https://mintcdn.com/checkly-422f444a/9iwkS8Mlm4KfOHnA/images/tcp-scheduling-strategy.png?fit=max&auto=format&n=9iwkS8Mlm4KfOHnA&q=85&s=9a3b569dc2183f7b24dd8bf0d9f0f6fc" alt="TCP monitor scheduling strategy and location selection interface" width="1566" height="1368" data-path="images/tcp-scheduling-strategy.png" />
</Frame>

* **Strategy:** Choose between round-robin or parallel execution. Learn more about [scheduling strategies](/concepts/scheduling#scheduling-strategies)
* **Locations:** Select [public](/concepts/locations) or [private](/platform/private-locations/overview) locations to run the monitor from

## Additional Settings

* **Name:** Give your monitor a clear name to identify it in dashboards and alerts
* **Tags:** Use tags to organize monitors across dashboards and [maintenance windows](/communicate/maintenance-windows/overview)
* **Description:** A description of the check. Supports Markdown. Maximum length: 500 characters
* **Retries:** Define how failed runs should be retried. See [retry strategies](/communicate/alerts/retries)
* **Alerting:** Configure your [alert settings](/communicate/alerts/configuration), [alert channels](/communicate/alerts/channels), or set up [webhooks](/integrations/alerts/webhooks) for custom integrations

<Note>
  TCP monitors provide network-level connectivity verification. For application-level monitoring, consider adding [synthetic monitoring](/detect/synthetic-monitoring/overview) to your monitoring strategy.
</Note>
