This workflow follows the HTTP Request → Telegram recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"name": "PROD_03_Trading_Signal_Workflow",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "trading-signal",
"responseMode": "lastNode",
"options": {}
},
"id": "1",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"typeVersion": 1,
"position": [
250,
300
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "1",
"name": "signal_type",
"value": "{{ $json.body.signal_type }}",
"type": "string"
},
{
"id": "2",
"name": "symbol",
"value": "{{ $json.body.symbol }}",
"type": "string"
},
{
"id": "3",
"name": "action",
"value": "{{ $json.body.action }}",
"type": "string"
},
{
"id": "4",
"name": "timestamp",
"value": "{{ $now }}",
"type": "string"
}
]
}
},
"id": "2",
"name": "InitData",
"type": "n8n-nodes-base.set",
"typeVersion": 3,
"position": [
450,
300
]
},
{
"parameters": {
"jsCode": "// Trading signal validation\nconst signal = $input.first().json;\nconst validSignals = ['BUY', 'SELL', 'HOLD'];\n\nif (!validSignals.includes(signal.action)) {\n throw new Error('Invalid signal action');\n}\n\nsignal.validated = true;\nsignal.validation_time = new Date().toISOString();\n\nreturn signal;"
},
"id": "3",
"name": "Validate_Signal",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
650,
300
]
},
{
"parameters": {
"method": "POST",
"url": "https://api.example.com/trading/signals",
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "signal",
"value": "={{ JSON.stringify($json) }}"
}
]
},
"options": {}
},
"id": "4",
"name": "Send_To_Trading_API",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4,
"position": [
850,
300
]
},
{
"parameters": {
"to": "trading_alerts",
"text": "={{ 'Trading Signal: ' + $json.symbol + ' | Action: ' + $json.action + ' | Type: ' + $json.signal_type }}",
"additionalFields": {}
},
"id": "5",
"name": "Telegram_Alert",
"type": "n8n-nodes-base.telegram",
"typeVersion": 1,
"position": [
1050,
300
]
}
],
"connections": {
"Webhook": {
"main": [
[
{
"node": "InitData",
"type": "main",
"index": 0
}
]
]
},
"InitData": {
"main": [
[
{
"node": "Validate_Signal",
"type": "main",
"index": 0
}
]
]
},
"Validate_Signal": {
"main": [
[
{
"node": "Send_To_Trading_API",
"type": "main",
"index": 0
}
]
]
},
"Send_To_Trading_API": {
"main": [
[
{
"node": "Telegram_Alert",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1"
},
"versionId": "prod-03-v1",
"id": "PROD03TRADINGSIGNAL",
"tags": [
{
"name": "production"
},
{
"name": "trading"
}
]
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
PROD_03_Trading_Signal_Workflow. Uses httpRequest, telegram. Webhook trigger; 5 nodes.
Source: https://gist.github.com/duginsash-spec/c0128580e71defd5f25f609991be219a — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
WF_UNIFIED_LEGAL_AUTOMATION. Uses googleSheets, httpRequest, telegram, telegramTrigger. Webhook trigger; 53 nodes.
qualiopi. Uses airtable, telegram, emailSend, httpRequest. Webhook trigger; 51 nodes.
PsyCardv2. Uses executeCommand, telegram, readBinaryFile, googleDrive. Webhook trigger; 41 nodes.
[](https://www.linkedin.com/in/mosaab-yassir-lafrimi/)[](https://t.me/joevenner)
How it works • Webhook triggers from content creation system in Airtable • Downloads media (images/videos) from Airtable URLs • Uploads media to Postiz cloud storage • Schedules or publishes content a