---
title: "직접 알람 메시지를 작성하고 웹훅 사용하기"
slug: "webhooks-and-messages"
kind: "HELP_ARTICLE"
category: "alerts"
locale: "ko"
canonical: "https://app.forecastcity.com/ko/help/alerts/webhooks-and-messages"
published: "2026-09-08T17:58:35.210Z"
updated: "2026-10-27T23:58:36.844Z"
description: "알람 메시지에 어떤 내용이 담기는지 살펴보고, 직접 문구와 변수를 추가하거나 웹훅으로 자체 소프트웨어, Discord, Slack에 알람을 보내 보세요."
---

# 직접 알람 메시지를 작성하고 웹훅 사용하기

모든 알람은 선택해 둔 모든 수신처로 하나의 메시지를 보냅니다. 별도로 내용을 입력하지 않아도 기본 메시지에는 어떤 일이 일어났는지, 그 순간의 가격은 얼마였는지, 그리고 알람이 계속 켜져 있는지 여부가 담깁니다. 여기에 자신의 매매 계획 메모를 덧붙여 두면 차트를 열기 전에도 처음 세웠던 계획을 바로 확인할 수 있습니다. 알람과 메시지를 설정하는 과정은 간단하고 빠르며 정확합니다. 편집기에서 직접 입력하거나, 음성 또는 텍스트로 **AI Trading Assistant**에 요청해 보세요.

자체 소프트웨어, Discord 또는 Slack 채널을 사용하는 경우 웹훅을 연결하면 수동으로 복사할 필요 없이 모든 알람을 해당 채널로도 즉시 보낼 수 있습니다. 이 가이드에서는 두 가지 방법을 모두 설명합니다.

예시: 5분봉 차트에서 EURUSD 가격이 1.09 위로 올라갈 때 발동하는 알람입니다.

## 자동 메시지에 담기는 내용

**Message** 입력란을 비워 두면 알람이 발동할 때 자동으로 메시지를 작성합니다. 위 예시의 경우 메시지는 다음과 같이 표시됩니다:

```
EURUSD crossed above 1.09
Price 1.0901.
This alert is now off. It was set to fire once.
```

첫 번째 줄은 알람 편집기의 표현 그대로 어떤 일이 일어났는지 알려 줍니다. 다음 줄은 발동 순간의 수치를 보여 주며, 마지막 줄은 알람이 계속 켜져 있는지 여부를 나타냅니다. 이 예시는 **Once only** 옵션을 사용하므로 알람이 이제 꺼졌다고 안내합니다. 다른 Trigger 옵션을 선택하면 마지막 줄에 “This alert stays on.”(이 알람은 계속 켜져 있습니다) 문구가 표시됩니다.

다른 종류의 알람도 같은 순서를 따릅니다. 다음은 첫 번째 줄과 그 아래 표시되는 수치 줄의 몇 가지 예시입니다:

-   차트 선: “GBPJPY touched 1h Resistance R1”(GBPJPY가 1시간봉 저항선 R1에 닿음) 및 “Price 210.16, line at 210.20.”(가격 210.16, 선 위치 210.20)
    
-   선 돌파: “GBPJPY broke above 1h Resistance R1”(GBPJPY가 1시간봉 저항선 R1을 상향 돌파함) 및 “The 1h candle closed at 210.32, above the line at 210.20.”(1시간봉 캔들이 210.20의 선 위인 210.32에 마감됨)
    
-   지표: “BTCUSD: 1h RSI(14) crossed above 70”(BTCUSD: 1시간봉 기간 14 RSI가 70을 상향 교차함) 및 “RSI(14) was 71.4 when the 1h candle closed at 105240.50.”(1시간봉 캔들이 105240.50에 마감될 때 RSI(14) 값은 71.4였음)
    
-   예측 방향 변경: “GBPJPY: 1h forecast turned bearish”(GBPJPY: 1시간봉 예측이 하락으로 전환됨) 및 “Before: bullish above 209.80. Now: bearish below 209.40.”(이전: 209.80 위에서 상승 예측. 현재: 209.40 아래에서 하락 예측)
    

여러 조건이 들어간 알람은 몇 개의 조건이 충족되었는지 먼저 알려 준 뒤, 충족된 각 조건을 한 줄씩 보여 줍니다:

```
BTCUSD: both conditions met
• Price crossed above 105000: the 1h candle closed at 105240.50
• 1h RSI(14) is above 55 (now 58.2)
This alert stays on.
```

조건이 더 많으면 첫 번째 줄에 예를 들어 “all 3 conditions met”(조건 3개 모두 충족) 또는 “2 of 3 conditions met”(조건 3개 중 2개 충족)과 같이 표시됩니다. 예를 들어 **or** 연결어를 사용하여 조건 하나만 충족된 경우에는 첫 번째 줄에 그 조건의 이름이 나오고 바로 아래에 수치가 이어집니다.

## 메시지 직접 작성하기

1.  알람 편집기를 열고 **Options** 탭으로 이동하세요.
    
2.  **Message** 행을 클릭하세요. 비어 있을 때는 Auto로 표시되며, 클릭하면 아래에 텍스트 입력란이 열립니다.
    
3.  원하는 메시지를 입력하세요. 최대 400자까지 입력할 수 있습니다.
    
4.  실시간 값을 넣으려면 입력란 아래의 **Available variables** 목록을 여세요. 이중 중괄호를 포함하여 변수를 정확히 그대로 복사해 넣으세요.
    

![Options 탭에서 열린 Message 행, 비어 있는 입력란, 안내 문구 및 Available variables 목록 화면.](https://m.forecastcity.com/t/tnt_forecastcity/media/b4/b480142e20ce43cec05e3313cedc9941ceea0b334c3b3dda3ae8680099c0f69b.png)

열려 있고 아직 비어 있는 상태의 Message 입력란입니다. 이대로 두면 알람이 자동 메시지를 보냅니다.

1.  **Automatic message**: 비어 있는 입력란입니다. 여기에 원하는 문구를 직접 입력하거나 비워 두세요.
    
2.  입력란 아래의 안내 문구: “Leave it blank and the alert says what happened and at what price. A message of your own is sent first, with that under it.” (비워 두면 어떤 일이 어느 가격에서 일어났는지 자동으로 알려 주며, 직접 작성한 메시지가 있으면 그 내용이 맨 앞에 오고 자동 문구가 아래에 붙는다는 뜻입니다.)
    
3.  **Available variables**: 메시지에 추가할 수 있는 실시간 변수 목록입니다.
    

직접 입력한 문구가 첫 번째 줄이 되고, 자동 생성된 텍스트가 그 아래에 이어집니다. 예를 들어 다음과 같이 메시지를 작성하면:

```
{{symbol}} on {{timeframe}}: check the 1h trend before entering.
```

실제로 도착하는 메시지는 다음과 같습니다:

```
EURUSD on 5m: check the 1h trend before entering.
EURUSD crossed above 1.09. Price 1.0901.
This alert is now off. It was set to fire once.
```

가격과 조건 내용은 이미 직접 쓴 문구 아래 줄에 자동으로 들어갑니다. 따라서 직접 작성하는 메시지에는 매매 계획처럼 자동 문구가 알려 주지 않는 내용을 적어 두는 것이 좋습니다.

직접 입력한 메시지는 Alerts 목록에서 해당 알람의 이름으로도 사용됩니다. 메시지를 입력하지 않으면 목록에는 조건으로 만든 이름이 표시됩니다. 가격 레벨 알람은 “EURUSD crossing up 1.09”처럼 짧은 이름이 붙고, 선이나 여러 조건이 결합된 알람은 “GBPJPY: 1h Price touches 1h Resistance R1”처럼 편집기가 요약한 형태 그대로 표시됩니다. 조건을 변경하면 이 이름도 함께 바뀝니다. 알람을 다시 열어도 **Message** 입력란은 여전히 비어 있으며, 이전에 메시지 없이 저장한 알람도 목록에서 이 형태로 이름을 보여 줍니다.

## 수신처별 표시 형태

모든 수신처는 같은 메시지를 받지만, 각 수신처에 알맞은 형태로 정돈되어 표시됩니다:

<table><thead><tr><th>수신처</th><th>표시되는 내용</th></tr></thead><tbody><tr><td>앱 내 알림</td><td>첫 번째 줄이 굵은 글씨로 표시되고, 그 아래에 수치가 표시됩니다.</td></tr><tr><td><strong>Notify my devices</strong></td><td>첫 번째 줄이 제목으로 표시되고, 나머지 줄이 그 아래에 표시됩니다.</td></tr><tr><td><strong>Send to MetaTrader</strong></td><td>첫 번째 줄이 제목으로 표시되고, 나머지 줄이 그 아래에 표시됩니다. MetaTrader는 메시지 옆에 자체 시간을 함께 보여 줍니다.</td></tr><tr><td><strong>Telegram</strong></td><td>메시지 본문, 설정한 시간대의 시간, 그리고 차트로 바로 이동하는 링크가 표시됩니다.</td></tr><tr><td><strong>Send email</strong></td><td>메시지 본문과 함께 설정한 시간대의 날짜 및 시간이 표시됩니다.</td></tr><tr><td><strong>Webhook URL</strong></td><td>Discord 및 Slack 채널은 UTC 시간과 함께 메시지를 받습니다. <strong>Raw JSON</strong> 옵션을 선택하면 자체 소프트웨어가 아래 표의 변수들을 전달받습니다.</td></tr></tbody></table>

Telegram 메시지는 시간을 “24 Sep, 11:02 London time” 형태로 표기합니다. 만약 시간대가 맞지 않는다면 **Your profile** 페이지의 **Timezone** 설정에서 본인의 시간대를 선택하세요. ForecastCity가 사용자의 시간대를 알 수 없는 경우에는 UTC 시간을 기준으로 표시합니다.

Telegram 메시지, 이메일, 휴대폰 푸시 알림 또는 MetaTrader 팝업에 포함된 링크를 열면 Alerts 패널과 함께 해당 심볼의 차트가 열립니다. 대부분의 4CM-AI 예측 알람에서는 해당 발동 시점의 **Alert observation** 화면과 함께 차트가 열립니다.

## 변수로 실시간 값 추가하기

변수는 알람이 발동할 때 실제 값으로 자동 치환됩니다. **Available variables** 목록에서 사용할 수 있는 변수는 다음과 같습니다:

<table><thead><tr><th>변수</th><th>입력되는 값</th><th>예시</th></tr></thead><tbody><tr><td><code>{{symbol}}</code></td><td>심볼 이름</td><td>EURUSD</td></tr><tr><td><code>{{price}}</code> 및 <code>{{close}}</code></td><td>알람이 발동했을 때의 가격</td><td>1.0901</td></tr><tr><td><code>{{condition_text}}</code></td><td>심볼 이름을 제외하고 발생한 상황 설명</td><td>Price crossed above 1.09</td></tr><tr><td><code>{{condition}}</code></td><td>짧은 코드로 표현된 조건</td><td>CROSSING_UP 1.09</td></tr><tr><td><code>{{timeframe}}</code></td><td>알람의 타임프레임</td><td>5m</td></tr><tr><td><code>{{time_iso}}</code></td><td>UTC 기준 날짜와 시간</td><td>2026-09-24 10:02 UTC</td></tr><tr><td><code>{{time}}</code></td><td>소프트웨어 처리를 위해 초 단위 숫자로 나타낸 동일 시각</td><td>1790244120</td></tr><tr><td><code>{{time_now}}</code></td><td>메시지가 전송된 시각을 숫자로 나타낸 값</td><td>1790244121</td></tr><tr><td><code>{{exchange}}</code></td><td>가격 데이터를 제공하는 거래소 또는 데이터 피드</td><td>TwelveData</td></tr><tr><td><code>{{status}}</code></td><td>알람이 계속 켜져 있는지 여부</td><td>This alert stays on.</td></tr><tr><td><code>{{alert_url}}</code></td><td>내 알람 목록과 함께 해당 심볼의 차트를 여는 링크</td><td>웹 주소</td></tr><tr><td><code>{{name}}</code></td><td>각 변수가 실제 값으로 바뀐 사용자 메시지, 또는 Alerts 목록에 표시되는 알람 이름</td><td>EURUSD crossing up 1.09</td></tr></tbody></table>

선 알람의 경우 `{{condition_text}}` 변수는 “Price touched 1h Resistance R1”처럼 표시됩니다. 조건이 여러 개인 경우에는 충족된 조건들을 and 연결어로 이어서 보여 줍니다. **Once only** 알람이 발동한 뒤에는 `{{status}}` 변수가 “This alert is now off. It was set to fire once.”로 표시됩니다. 조건이 여러 개인 알람, 선 알람 또는 지표 알람에서는 소프트웨어용 코드인 `{{condition}}` 변수가 `TREE`로 표시됩니다.

4CM-AI 알람의 경우 `{{forecast_summary}}` 변수는 예측에서 일어난 변화를 요약해 주고, `{{forecast_symbol}}` 변수는 예측 대상 심볼을 나타냅니다. `{{forecast_cycle}}` 변수는 알람이 다시 감시를 시작할 때마다 1씩 올라가는 사이클 카운터입니다. 메시지에 `{{forecast_summary}}` 변수가 포함되어 있으면 그 요약 안에 이미 무슨 일이 일어났는지 다 들어 있으므로 아래에 자동 생성 줄이 추가로 붙지 않습니다.

대부분의 4CM-AI 알람은 단일 가격 기준이 아니므로 `{{price}}` 및 `{{close}}` 변수가 비어 있는 상태로 남습니다. `{{time_iso}}` 변수는 UTC 시간을 사용하므로 화면의 시계와 다를 수 있습니다. 존재하지 않는 변수 이름은 입력한 텍스트 그대로 남아서, 예를 들어 `{{prices}}`처럼 철자를 잘못 입력하면 `{{prices}}` 그대로 도착합니다.

## 웹훅으로 알람 보내기

웹훅은 각 알람을 지정한 웹 주소로 전송하여 자체 소프트웨어, Discord 채널 또는 Slack 채널에서 바로 받아 볼 수 있게 해 줍니다. 웹훅을 사용하려면 이용 중인 요금제에 웹훅 기능이 포함되어 있어야 합니다.

1.  Options 탭의 Notifications 아래에서 **Webhook URL** 확인란을 선택하세요. 그러면 웹 주소 입력란, Format 선택 메뉴, 그리고 본문(body) 입력란이 나타납니다.
    
2.  수신 서버가 요청을 기다리는 웹 주소를 붙여넣으세요. 주소는 반드시 `http://` 또는 `https://`로 시작해야 합니다.
    
3.  **Format** 설정을 **Raw JSON** 옵션으로 두고 본문 입력란은 비워 두세요.
    
4.  새 알람이면 **Create** 버튼을, 기존 알람을 수정한 경우라면 **Save** 버튼을 누르세요.
    

![Webhook URL 확인란이 선택되고 주소, Raw JSON으로 설정된 Format 선택기, 비어 있는 본문 입력란이 표시된 화면.](https://m.forecastcity.com/t/tnt_forecastcity/media/9e/9e711afc65b24ebfe70a8e091cc4006b5f9d7d57d50d61b67e5ee920f8ab4877.png)

Webhook URL 항목을 선택하고 주소를 입력한 뒤 Format을 Raw JSON으로 설정한 화면입니다. 본문 입력란을 비워 두면 기본 데이터를 보냅니다.

1.  수신 서버가 대기 중인 웹 주소입니다. 표준 포트인 80 또는 443 포트를 사용하세요.
    
2.  **Format**: 자체 소프트웨어에는 Raw JSON을 선택하고, Discord나 Slack 서비스에는 해당 옵션을 선택하세요.
    

본문 입력란을 비워 두면 수신 서버는 위 표의 모든 변수에 더해 알람과 해당 발동 건을 식별하는 `alertId` 및 `triggerId` 필드가 담긴 JSON 객체를 받습니다. 특정 필드에 의존하는 자동화 도구를 구축하기 전에 실제 전송된 데이터를 먼저 한 번 확인해 보세요.

입력란 아래에는 ForecastCity 요청이 발송되는 서버 주소가 표시됩니다. 수신 서버가 허용된 주소만 받도록 설정되어 있다면 이 주소를 허용 목록(allowlist)에 추가하세요.

### 웹 주소 요건

-   표준 포트(http는 80, https는 443)를 사용하는 공개 웹 주소여야 합니다. 다른 포트, localhost 또는 사설 네트워크 주소로는 메시지가 전송되지 않습니다.
    
-   주소 안에 사용자 이름이나 비밀번호가 포함되지 않아야 합니다.
    
-   해당 주소 자체에서 3초 이내에 응답해야 합니다. 다른 주소로 리다이렉트되면 전송 실패로 처리됩니다.
    

편집기는 주소가 `http://` 또는 `https://`로 시작하는지만 확인하며, 나머지 요건은 실제로 메시지가 발송될 때 확인하므로 실제 알람으로 주소를 테스트해 보세요. 가격 알람과 기술적 조건 알람은 수신 서버에 일시적인 오류가 발생하면 최대 두 번까지 재시도합니다. 반면 4CM-AI 알람 메시지는 타임아웃이나 서버 오류가 발생하더라도 수신 서버가 이미 처리를 실행했을 수 있으므로 다시 보내지 않습니다.

## 웹훅 본문 직접 작성하기

본문 입력란에는 일반 메시지와 동일한 변수를 사용하는 템플릿을 넣을 수 있으며, 최대 2000자까지 지원합니다. 입력란에 그보다 길게 입력할 수는 있지만 저장할 때 거부됩니다.

**Raw JSON** 형식에서 간결한 JSON 객체를 기대하는 수신 서버라면 다음과 같이 본문을 작성할 수 있습니다:

```
{"symbol":"{{symbol}}","condition":"{{condition_text}}","time":"{{time_iso}}","source":"ForecastCity"}
```

변수들은 일반 텍스트로 치환됩니다. 따라서 치환된 값 안에 따옴표나 줄바꿈이 들어 있으면 JSON 구문이 깨질 수 있으며, 유효한 JSON이 아닌 본문은 일반 텍스트로 전송됩니다.

Discord 채널로 보내려면 **Format** 설정을 **Discord** 옵션으로 지정하고 해당 채널의 웹훅 주소를 넣으세요. 그런 다음 본문 입력란에 예를 들어 다음과 같이 짧은 문구를 작성하세요:

```
{{symbol}}: {{condition_text}}. Open your alerts: {{alert_url}}
```

Slack 채널로 보내려면 **Slack** 옵션을 선택하고 같은 방식으로 작성하세요. ForecastCity가 각 서비스가 요구하는 형식에 맞게 텍스트를 자동으로 감싸서 전송합니다. 본문 입력란을 비워 두면 두 서비스 모두 위에서 본 기본 알람 메시지와 함께 마지막 줄에 UTC 시간을 덧붙여 받게 됩니다.

## 결과 확인하기

1.  알람이 발동할 때까지 기다린 다음 Alerts 패널의 **Log** 탭을 여세요.
    
2.  수신 서버가 받은 내용과 Log 항목에 기록된 상황, 심볼, 시간을 비교해 보세요.
    

Log 탭은 알람이 발동했다는 사실을 보여 주지만 수신 서버가 메시지를 정상적으로 수락했는지까지는 보여 주지 않으므로, 수신 서버 자체의 로그도 함께 확인하세요. 만약 `{{prices}}`처럼 중괄호가 그대로 보인다면 변수 이름의 철자가 틀린 것입니다. 수신 서버가 본문을 거부한다면 JSON 형식이 올바른지 확인하세요.

## 알아두면 좋은 점

-   알람 메시지는 선택해 둔 모든 수신처로 전송되지만, 웹훅 본문은 오직 웹훅 주소로만 전송됩니다.
    
-   Discord는 최대 1900자, Slack은 최대 3000자까지 표시하며 그보다 긴 텍스트는 잘립니다.
    

## 관련 가이드

-   [알람을 받을 수신처 선택하기](<https://app.forecastcity.com/ko/help/alerts/notification-delivery>)
    
-   [알람이 도착하지 않은 이유 확인하기](<https://app.forecastcity.com/ko/help/alerts/trigger-log-and-troubleshooting>)
    
-   [첫 가격 알람 만들기](<https://app.forecastcity.com/ko/help/alerts/first-price-alert>)
