# Import monitors

To add more than a handful of servers, click **Add monitor** on the Monitors page, then **Bulk import**, and add them all at once, either by pasting configs for AI to sort or by uploading config files.

## Paste and let AI sort it

The **Paste** tab is AI-assisted. Paste whatever you have, whether that's clean share links, full config files, or a block of text copied from an email, and TunnelHQ works out which entries are monitors.

<Steps>

1. **Paste your configs.**

   Share links (`vless://`, `vmess://`, `trojan://`, `ss://`, `hysteria2://`, `tuic://`), WireGuard and OpenVPN config text, and plain `host:port` lines all work. You can mix protocols, one per line or in bulk.

2. **Click Analyze with AI.**

   TunnelHQ detects the protocol of each entry and extracts its host, port, and settings.

3. **Review the detected monitors.**

   Each row in the preview is marked **ready**, **needs input**, or **invalid**. Entries missing a credential, such as an OpenVPN password, are marked so you can fill them in before importing.

4. **Import.**

   Click **Import N monitors**. Only rows marked **ready** are imported, and each one's first check is queued.

</Steps>

:::note[Messy input is fine]
Duplicate lines, surrounding text, and mixed protocols are expected. The AI step extracts the monitors and ignores everything else.
:::

## Upload config files

The **Files** tab accepts OpenVPN (`.ovpn`) and WireGuard (`.conf`, `.wg`) config files. Drag them onto the drop zone, or click it to browse.

| Protocol | File types |
| --- | --- |
| OpenVPN | `.ovpn` |
| WireGuard | `.conf`, `.wg` |

Each file can be up to **1 MB**, and you can select several at once. TunnelHQ parses each file, detects the protocol, and extracts the connection details. If a file needs a credential, for example an OpenVPN config without an embedded username and password, you're asked for it before the import completes.

:::caution[Other file types are skipped]
Only `.ovpn`, `.conf`, and `.wg` files are accepted. Other files, and files that can't be parsed, are skipped with a message, so nothing is left out silently.
:::

If you switch projects while the Import dialog is open, it closes, so nothing is imported into the wrong project.

## Subscription URLs

If your provider gives you a subscription URL, TunnelHQ can add its servers and keep them in sync, so your monitors follow the provider when it rotates endpoints.

Paste the subscription URL into **Add monitor**. The dialog shows **Subscription URL detected** and previews the configs behind it. Choose the settings and save; TunnelHQ confirms with "Subscription URL saved. Sync started."

| Setting | Options |
| --- | --- |
| Sync interval | Every 5 minutes, 15 minutes, 30 minutes, 1 hour (the default), 2 hours, 6 hours, 12 hours, or 24 hours. |
| Engine | **Auto (Both)** (the default) races both engines, so configs such as xhttp get tested by Xray-core. Or choose **sing-box** or **Xray-core**. |
| Timeout (seconds) | How long each config's test may take. Default 30. It also becomes the timeout of every monitor the subscription creates. |
| Max workers | How many of the subscription's configs are tested in parallel. Default 5. |

Monitors from a subscription are tested each time it syncs, so their check interval is the sync interval, rather than a schedule of their own.

When you edit an existing subscription, its settings form offers a different list of sync intervals: 5, 10, 15, or 30 minutes, or 1, 2, or 6 hours. A subscription set to 12 or 24 hours shows its interval there as "(custom)".

:::caution[Subscription URLs need a paid plan]
The Free plan can't add subscription URLs. Starter includes 3, Pro 10, and Business unlimited.
:::

## Which method to use

| You have | Use |
| --- | --- |
| A few servers | **Add monitor**, one at a time (see [Working with monitors](/docs/concepts/monitors/)) |
| A large batch of mixed configs | AI paste |
| A folder of config files | File upload |
| A provider link that changes over time | A subscription URL |
