Telegram + Bitget: trade and track orders from one chat
Placing a trade shouldn’t require five tabs, a calculator, and a quiet room. Yet most trading setups still force you to bounce between an exchange UI, notes, symbol rules, and order history, hoping you didn’t fat-finger a price.
This Telegram Bitget trading automation hits active traders first, but crypto desk operators and founders running their own accounts feel it too. You get one chat where you can check balances, place spot or trigger orders, and receive a clear confirmation message you can trust.
Below you’ll see how the workflow behaves, what it replaces, and what you need to run it safely in your own n8n environment.
How This Automation Works
See how this solves the problem:
n8n Workflow Template: Telegram + Bitget: trade and track orders from one chat
flowchart LR
subgraph sg0["Telegram Flow"]
direction LR
n0@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Telegram Trigger"]
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>User Authentication (Replace.."]
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Telegram"]
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Splits message is more than .."]
n5@{ icon: "mdi:wrench", form: "rounded", label: "Calculator", pos: "b", h: 48 }
n6@{ icon: "mdi:wrench", form: "rounded", label: "Think", pos: "b", h: 48 }
n7@{ icon: "mdi:robot", form: "rounded", label: "Bitget AI Trader Agent", pos: "b", h: 48 }
n8@{ icon: "mdi:wrench", form: "rounded", label: "Account and Wallet Agent tool", pos: "b", h: 48 }
n9@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model1", pos: "b", h: 48 }
n10@{ icon: "mdi:web", form: "rounded", label: "Get Account Information HTTP..", pos: "b", h: 48 }
n11@{ icon: "mdi:web", form: "rounded", label: "Get Account Assets HTTP Requ..", pos: "b", h: 48 }
n12@{ icon: "mdi:web", form: "rounded", label: "Get Deposit Address HTTP Req..", pos: "b", h: 48 }
n13@{ icon: "mdi:memory", form: "rounded", label: "Simple Memory1", pos: "b", h: 48 }
n14@{ icon: "mdi:wrench", form: "rounded", label: "Spot Order Trading Agent tool", pos: "b", h: 48 }
n15@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model2", pos: "b", h: 48 }
n16@{ icon: "mdi:web", form: "rounded", label: "Place Order HTTP Request", pos: "b", h: 48 }
n17@{ icon: "mdi:wrench", form: "rounded", label: "Calculator1", pos: "b", h: 48 }
n18@{ icon: "mdi:web", form: "rounded", label: "Get Ticker Information", pos: "b", h: 48 }
n19@{ icon: "mdi:web", form: "rounded", label: "Get Symbol Info", pos: "b", h: 48 }
n20@{ icon: "mdi:web", form: "rounded", label: "Get Order Info HTTP Request", pos: "b", h: 48 }
n21@{ icon: "mdi:memory", form: "rounded", label: "Simple Memory", pos: "b", h: 48 }
n22@{ icon: "mdi:memory", form: "rounded", label: "Simple Memory2", pos: "b", h: 48 }
n23@{ icon: "mdi:web", form: "rounded", label: "Get Current Orders HTTP Requ..", pos: "b", h: 48 }
n24@{ icon: "mdi:web", form: "rounded", label: "Cancel Order HTTP Request", pos: "b", h: 48 }
n25@{ icon: "mdi:wrench", form: "rounded", label: "Trigger Order Agent tool", pos: "b", h: 48 }
n26@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model3", pos: "b", h: 48 }
n27@{ icon: "mdi:web", form: "rounded", label: "Place Plan Order HTTP Request", pos: "b", h: 48 }
n28@{ icon: "mdi:memory", form: "rounded", label: "Simple Memory3", pos: "b", h: 48 }
n29@{ icon: "mdi:web", form: "rounded", label: "Modify Plan Order HTTP Request", pos: "b", h: 48 }
n30@{ icon: "mdi:web", form: "rounded", label: "Get Current Plan Orders HTTP..", pos: "b", h: 48 }
n31@{ icon: "mdi:web", form: "rounded", label: "Cancel Plan Order HTTP Request", pos: "b", h: 48 }
n32@{ icon: "mdi:robot", form: "rounded", label: "OpenAI2", pos: "b", h: 48 }
n33@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set Message", pos: "b", h: 48 }
n34@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Message Format Selector", pos: "b", h: 48 }
n35["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Telegram Sound Download"]
n36@{ icon: "mdi:robot", form: "rounded", label: "OpenAI4", pos: "b", h: 48 }
n37@{ icon: "mdi:cog", form: "rounded", label: "Get Image Info", pos: "b", h: 48 }
n38["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Telegram Image Download"]
n6 -.-> n7
n32 --> n33
n36 --> n33
n5 -.-> n7
n17 -.-> n14
n33 --> n7
n21 -.-> n7
n37 --> n36
n13 -.-> n8
n22 -.-> n14
n28 -.-> n25
n19 -.-> n14
n1 --> n2
n0 -.-> n7
n9 -.-> n8
n15 -.-> n14
n26 -.-> n25
n7 --> n4
n18 -.-> n14
n34 --> n38
n34 --> n35
n34 --> n33
n38 --> n37
n35 --> n32
n16 -.-> n14
n25 -.-> n7
n24 -.-> n14
n20 -.-> n14
n8 -.-> n7
n27 -.-> n25
n14 -.-> n7
n31 -.-> n25
n29 -.-> n25
n11 -.-> n8
n23 -.-> n14
n12 -.-> n8
n10 -.-> n8
n30 -.-> n25
n2 --> n34
n4 --> n3
end
subgraph sg1["Flow 2"]
direction LR
n39["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Get Account Information Webh.."]
n40@{ icon: "mdi:swap-vertical", form: "rounded", label: "Add API Keys", pos: "b", h: 48 }
n41["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Create Signed String (GET)"]
n42@{ icon: "mdi:cog", form: "rounded", label: "Crypto (HMAC-SHA256 → base64)", pos: "b", h: 48 }
n43["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Account Information"]
n44["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Format Response"]
n46["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Respond to Get Account Infor.."]
n40 --> n41
n44 --> n46
n43 --> n44
n41 --> n42
n42 --> n43
n39 --> n40
end
subgraph sg2["Flow 3"]
direction LR
n45["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Get Account Assets Webhook"]
n47["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Respond to Get Account Asset.."]
n48@{ icon: "mdi:swap-vertical", form: "rounded", label: "Add API Keys & Inputs", pos: "b", h: 48 }
n49["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Create Signed String (GET + .."]
n50["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Account Assets"]
n51@{ icon: "mdi:cog", form: "rounded", label: "Crypto (HMAC-SHA256 → base64)1", pos: "b", h: 48 }
n52["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Format Response1"]
n52 --> n47
n50 --> n52
n48 --> n49
n45 --> n48
n51 --> n50
n49 --> n51
end
subgraph sg3["Flow 4"]
direction LR
n53["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Get Deposit Address Webhook"]
n54["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Respond to Get Deposit Addre.."]
n55["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Deposit Address"]
n56@{ icon: "mdi:swap-vertical", form: "rounded", label: "Add API Keys & Inputs1", pos: "b", h: 48 }
n57["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Create Signed String (GET + .."]
n58@{ icon: "mdi:cog", form: "rounded", label: "Crypto (HMAC-SHA256 → base64)2", pos: "b", h: 48 }
n59["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Format Response2"]
n59 --> n54
n55 --> n59
n56 --> n57
n53 --> n56
n58 --> n55
n57 --> n58
end
subgraph sg4["Flow 5"]
direction LR
n60["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Place Order1"]
n61["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Create Signed String (POST +.."]
n67["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Place Order Webhook"]
n68["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Respond to Place Order Webhook"]
n78@{ icon: "mdi:swap-vertical", form: "rounded", label: "Add API Keys & Inputs4", pos: "b", h: 48 }
n79@{ icon: "mdi:cog", form: "rounded", label: "Crypto (HMAC-SHA256 → base64)4", pos: "b", h: 48 }
n80["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Format Response4"]
n60 --> n80
n80 --> n68
n67 --> n78
n78 --> n61
n79 --> n60
n61 --> n79
end
subgraph sg5["Flow 6"]
direction LR
n71["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Cancel Order Webhook"]
n72["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Respond to Cancel Order Webh.."]
n73["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Cancel Order"]
n74["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Create Signed String (POST +.."]
n75@{ icon: "mdi:swap-vertical", form: "rounded", label: "Add API Keys & Inputs3", pos: "b", h: 48 }
n76@{ icon: "mdi:cog", form: "rounded", label: "Crypto (HMAC-SHA256 → base64)3", pos: "b", h: 48 }
n77["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Format Response3"]
n73 --> n77
n77 --> n72
n71 --> n75
n75 --> n74
n76 --> n73
n74 --> n76
end
subgraph sg6["Flow 7"]
direction LR
n62["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Order Info"]
n65["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Get Order Info Webhook"]
n66["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Respond to Get Order Info We.."]
n81@{ icon: "mdi:swap-vertical", form: "rounded", label: "Add API Keys & Inputs5", pos: "b", h: 48 }
n82["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Create Signed String (GET + .."]
n83@{ icon: "mdi:cog", form: "rounded", label: "Crypto (HMAC-SHA256 → base64)5", pos: "b", h: 48 }
n84["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Format Response5"]
n62 --> n84
n84 --> n66
n81 --> n82
n65 --> n81
n83 --> n62
n82 --> n83
end
subgraph sg7["Flow 8"]
direction LR
n63["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Current Orders"]
n64@{ icon: "mdi:swap-vertical", form: "rounded", label: "Add API Keys & Inputs2", pos: "b", h: 48 }
n69["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Get Current Orders Webhook"]
n70["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Respond to Get Current Order.."]
n85["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Create Signed String (GET + .."]
n86@{ icon: "mdi:cog", form: "rounded", label: "Crypto (HMAC-SHA256 → base64)6", pos: "b", h: 48 }
n87["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Format Response6"]
n87 --> n70
n63 --> n87
n64 --> n85
n69 --> n64
n86 --> n63
n85 --> n86
end
subgraph sg8["Flow 9"]
direction LR
n88["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Place Plan Order Webhook"]
n89["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Respond to Place Plan Order .."]
n90["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Place Plan Order"]
n101@{ icon: "mdi:swap-vertical", form: "rounded", label: "Add API Keys & Inputs6", pos: "b", h: 48 }
n102["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Create Signed String (POST +.."]
n103@{ icon: "mdi:cog", form: "rounded", label: "Crypto (HMAC-SHA256 → base64)7", pos: "b", h: 48 }
n104["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Format Response7"]
n104 --> n89
n90 --> n104
n101 --> n102
n88 --> n101
n103 --> n90
n102 --> n103
end
subgraph sg9["Flow 10"]
direction LR
n91["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Modify Plan Order Webhook"]
n92["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Respond to Modify Plan Order.."]
n93["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Modify Plan Order"]
n105@{ icon: "mdi:swap-vertical", form: "rounded", label: "Add API Keys & Inputs7", pos: "b", h: 48 }
n106["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Create Signed String (POST +.."]
n107@{ icon: "mdi:cog", form: "rounded", label: "Crypto (HMAC-SHA256 → base64)8", pos: "b", h: 48 }
n108["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Format Response8"]
n108 --> n92
n93 --> n108
n105 --> n106
n91 --> n105
n107 --> n93
n106 --> n107
end
subgraph sg10["Flow 11"]
direction LR
n97["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Cancel Plan Order Webhook"]
n98["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Respond to Cancel Plan Order.."]
n99["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Cancel Plan Order API Request"]
n100["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Create Signed String (POST)"]
n113@{ icon: "mdi:swap-vertical", form: "rounded", label: "Add API Keys & Inputs9", pos: "b", h: 48 }
n114@{ icon: "mdi:cog", form: "rounded", label: "Crypto (HMAC-SHA256 → base64..", pos: "b", h: 48 }
n115["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Format Response10"]
n115 --> n98
n113 --> n100
n97 --> n113
n100 --> n114
n99 --> n115
n114 --> n99
end
subgraph sg11["Flow 12"]
direction LR
n94["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Get Current Plan Orders Webh.."]
n95["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/webhook.dark.svg' width='40' height='40' /></div><br/>Respond to Get Current Plan .."]
n96["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Current Plan Orders"]
n109["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Create Signed String (GET + .."]
n110@{ icon: "mdi:swap-vertical", form: "rounded", label: "Add API Keys & Inputs8", pos: "b", h: 48 }
n111@{ icon: "mdi:cog", form: "rounded", label: "Crypto (HMAC-SHA256 → base64)9", pos: "b", h: 48 }
n112["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Format Response9"]
n112 --> n95
n110 --> n109
n96 --> n112
n94 --> n110
n111 --> n96
n109 --> n111
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n1 trigger
class n7,n32,n36 ai
class n0,n9,n15,n26 aiModel
class n5,n6,n8,n14,n17,n25 ai
class n13,n21,n22,n28 ai
class n34 decision
class n10,n11,n12,n16,n18,n19,n20,n23,n24,n27,n29,n30,n31,n39,n43,n46,n45,n47,n50,n53,n54,n55,n60,n67,n68,n71,n72,n73,n62,n65,n66,n63,n69,n70,n88,n89,n90,n91,n92,n93,n97,n98,n99,n94,n95,n96 api
class n2,n4,n41,n44,n49,n52,n57,n59,n61,n80,n74,n77,n82,n84,n85,n87,n102,n104,n106,n108,n100,n115,n109,n112 code
classDef customIcon fill:none,stroke:none
class n1,n2,n3,n4,n35,n38,n39,n41,n43,n44,n46,n45,n47,n49,n50,n52,n53,n54,n55,n57,n59,n60,n61,n67,n68,n80,n71,n72,n73,n74,n77,n62,n65,n66,n82,n84,n63,n69,n70,n85,n87,n88,n89,n90,n102,n104,n91,n92,n93,n106,n108,n97,n98,n99,n100,n115,n94,n95,n96,n109,n112 customIcon
The Challenge: Trading fast without trading sloppy
Speed is great until it turns into rushed execution. You check a balance, flip to the spot market, copy a symbol, second-guess tick size rules, place the order, then wonder if it really went through. Do that a few times a day and you start building a quiet backlog of “little” risks: wrong symbol, wrong size, wrong order type, or a trigger order that never got created because the plan parameters were off. The mental load is real, and frankly, it’s exhausting when markets move quickly.
It adds up fast. Here’s where it breaks down in day-to-day trading.
- Manual entry makes typos surprisingly common, especially when you’re switching between balances, charts, and order forms.
- Exchange UIs don’t reliably prevent “valid but wrong” orders, so you can still place something that doesn’t match your intent.
- Confirmations get scattered across notifications, email, and order history, which means you waste time proving to yourself what happened.
- Trigger (plan) orders are easy to mess up because the parameters vary per symbol and the UI hides important constraints.
The Fix: Telegram commands that execute real Bitget orders
This workflow turns Telegram into a controlled trading console for Bitget spot and trigger orders. A message comes into your Telegram bot, n8n verifies it’s actually you (not “anyone who found the bot”), then routes the request to an AI trading agent powered by GPT-4o-mini. The agent decides which action you meant (balance check, active orders, place/cancel spot order, place/modify/cancel trigger order), then calls Bitget’s REST endpoints through authenticated n8n webhooks. Every call is signed with Bitget’s required signature system, and the final result is formatted into a clean Telegram response. If a reply is long, it gets split so Telegram doesn’t truncate it.
The workflow starts in Telegram, but the “heavy lifting” happens inside your self-hosted or cloud n8n instance. In the middle, HTTP requests handle the actual Bitget order management, while the AI layer interprets intent and formats responses. Finally, you receive a confirmation like “limit buy placed” or “rejected: tick size invalid” so you can react immediately.
What Changes: Before vs. After
| What This Eliminates | Impact You’ll See |
|---|---|
|
|
Real-World Impact
Say you manage 6 actions a day: 2 balance checks, 2 spot orders, and 2 trigger order updates. Manually, you’ll often spend about 5 minutes per action between navigating the UI, checking constraints, and verifying the result, which is roughly 30 minutes daily. With this workflow, each action is usually one Telegram message plus a short wait for the API response, often closer to a minute of your attention. That’s roughly 20 minutes back a day, and fewer “oops” moments when volatility spikes.
Requirements
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Telegram for the chat interface and bot commands.
- Bitget to execute spot and trigger orders.
- API keys (get them from Bitget API management and OpenAI dashboard)
Skill level: Intermediate. You’ll connect credentials, paste your Telegram user ID, and confirm webhook URLs are reachable over HTTPS.
Need help implementing this? Talk to an automation expert (free 15-minute consultation).
The Workflow Flow
A Telegram message triggers the run. You send a command (like balance, order placement, or cancel) to your bot, and the Telegram Trigger node picks it up immediately.
An authorization gate blocks everyone else. The workflow checks the Telegram user ID against your allowed ID, so random users can’t send trade instructions even if they discover the bot.
An AI agent interprets intent and prepares the action. The GPT-4o-mini-powered agent uses short-term memory and helper tools (basic math and “reasoning”) to translate your request into the right Bitget API call. If you send an image or voice message, it can parse that too, then convert it into the same structured instruction.
Signed Bitget requests execute through webhook tools. n8n generates Bitget signatures, calls the right authenticated REST endpoint (account, assets, spot orders, or plan orders), then formats a clear response. Long replies are split to fit Telegram’s limits.
You can easily modify which commands are supported and how confirmations are formatted based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Telegram Incoming Trigger
Set up the Telegram entry point so messages can reach the workflow and flow into the authorization gate.
- Add the Telegram Incoming Trigger node and connect your Telegram bot to receive messages.
- Link Telegram Incoming Trigger to User Auth Gate (Edit ID) to ensure all requests pass through your user check.
- Open User Auth Gate (Edit ID) and update the authorization logic to match your allowed Telegram user IDs.
Step 2: Connect Telegram Message Routing
Route incoming messages by type so text, audio, and images are handled correctly before the AI agent processes them.
- Open Select Message Format and define your switch rules to detect image, audio, and text messages.
- Ensure Select Message Format routes to Download Telegram Image for image payloads.
- Ensure Select Message Format routes to Download Telegram Audio for audio payloads.
- Ensure Select Message Format routes to Assign Outbound Message for plain text messages.
Step 3: Set Up Audio and Image Parsing
Parse Telegram audio and images into text prompts and merge them into a unified outbound message for the agent.
- Connect Download Telegram Image to Extract Image Details to prep images for vision parsing.
- Connect Extract Image Details to OpenAI Vision Parser for image-to-text extraction.
- Connect Download Telegram Audio to OpenAI Audio Parser for speech-to-text extraction.
- Route both OpenAI Vision Parser and OpenAI Audio Parser into Assign Outbound Message.
- Confirm Assign Outbound Message passes its output to Crypto Trading AI Agent.
Step 4: Set Up the Crypto Trading AI Agent
Configure the primary AI agent, its tools, and memory so it can interpret requests and take trading actions.
- Connect OpenAI Chat Engine as the language model for Crypto Trading AI Agent.
- Attach Math Utility and Reasoning Helper as tools for Crypto Trading AI Agent.
- Attach Short Memory Buffer to Crypto Trading AI Agent as its conversation memory.
- Confirm Account Wallet Agent Tool, Spot Order Agent Tool, and Trigger Order Agent Tool are connected as tools for Crypto Trading AI Agent.
- Ensure OpenAI Chat Engine A, OpenAI Chat Engine B, and OpenAI Chat Engine C are connected as the language models for their respective agent tools.
Step 5: Configure Account Info Webhooks and Signatures
Build the GET-based account data flows so external services can request balances, assets, and deposit addresses.
- Activate the Account Info Webhook, Account Assets Webhook, and Deposit Address Webhook to generate their public URLs.
- Populate API credentials inside Insert API Keys, Insert Keys and Inputs, and Insert Keys and Inputs A according to your exchange requirements.
- Verify the account info chain: Insert API Keys → Generate GET Signature → HMAC Base64 Encode → Request Account Info → Format Account Response → Reply Account Info Webhook.
- Verify the assets chain: Insert Keys and Inputs → Generate GET Query Signature → HMAC Base64 Encode A → Request Account Assets → Format Assets Response → Reply Assets Webhook.
- Verify the deposit chain: Insert Keys and Inputs A → Generate GET Query Sig A → HMAC Base64 Encode B → Request Deposit Address → Format Deposit Response → Reply Deposit Webhook.
Step 6: Configure Spot Order Webhooks and Signatures
Enable spot order placement, cancellation, and status lookups through webhook-based API calls.
- For order placement, confirm: Order Placement Webhook → Insert Keys and Inputs D → Generate POST Body Sig A → HMAC Base64 Encode D → Submit Order API → Format Place Order Reply → Reply Place Order Webhook.
- For order cancellation, confirm: Order Cancel Webhook → Insert Keys and Inputs C → Generate POST Body Sig → HMAC Base64 Encode C → Request Cancel Order → Format Cancel Response → Reply Cancel Order Webhook.
- For order info, confirm: Order Info Webhook → Insert Keys and Inputs E → Generate GET Query Sig B → HMAC Base64 Encode E → Request Order Info → Format Order Info Reply → Reply Order Info Webhook.
- For active orders, confirm: Active Orders Webhook → Insert Keys and Inputs B → Generate GET Query Sig C → HMAC Base64 Encode F → Request Active Orders → Format Active Orders Reply → Reply Active Orders Webhook.
Step 7: Configure Plan and Trigger Order Webhooks
Enable plan/trigger order creation, modification, cancellation, and listing with the dedicated webhook flows.
- Confirm the plan order chain: Plan Order Webhook → Insert Keys and Inputs F → Generate POST Body Sig B → HMAC Base64 Encode G → Request Plan Order → Format Plan Order Reply → Reply Plan Order Webhook.
- Confirm the plan modify chain: Plan Modify Webhook → Insert Keys and Inputs G → Generate POST Body Sig C → HMAC Base64 Encode H → Request Modify Plan → Format Modify Plan Reply → Reply Modify Plan Webhook.
- Confirm the active plans chain: Active Plan Orders Webhook → Insert Keys and Inputs H → Generate GET Query Sig D → HMAC Base64 Encode I → Request Active Plan Orders → Format Plan Orders Reply → Reply Plan Orders Webhook.
- Confirm the plan cancel chain: Plan Cancel Webhook → Insert Keys and Inputs I → Generate POST Signature → HMAC Base64 Encode J → Request Cancel Plan Order → Format Cancel Plan Reply → Reply Cancel Plan Webhook.
Step 8: Configure AI Tool HTTP Requests
Point the AI tool request nodes to your exchange API endpoints so the agent can fetch balances, place orders, and query market data.
- Set endpoint details inside Fetch Account Info Request, Fetch Account Assets Request, and Fetch Deposit Address Request for account-level tools.
- Set endpoint details inside Submit Order Request, Fetch Order Info Request, Fetch Active Orders Request, and Cancel Order Request for spot order tools.
- Set endpoint details inside Retrieve Ticker Details and Retrieve Symbol Details to enable market data queries.
- Set endpoint details inside Submit Plan Order Request, Modify Plan Order Request, Fetch Active Plan Orders Req, and Cancel Plan Order Request for trigger/plan order tools.
Step 9: Configure Outputs and Responses
Ensure responses are formatted correctly for both Telegram replies and webhook responses.
- Confirm Crypto Trading AI Agent outputs to Split Long Telegram Text and then to Send Telegram Notice.
- Review all formatter nodes (for example, Format Account Response, Format Assets Response, Format Place Order Reply, and Format Cancel Plan Reply) to ensure they return the response structure you want.
- Verify each formatter node connects to its matching responder: Reply Account Info Webhook, Reply Assets Webhook, Reply Deposit Webhook, Reply Place Order Webhook, Reply Cancel Order Webhook, Reply Order Info Webhook, Reply Active Orders Webhook, Reply Plan Order Webhook, Reply Modify Plan Webhook, Reply Plan Orders Webhook, and Reply Cancel Plan Webhook.
Step 10: Test and Activate Your Workflow
Validate the full flow from Telegram input to trading responses, then enable it for production use.
- Click Execute Workflow and send a test message to your Telegram bot to trigger Telegram Incoming Trigger.
- Confirm the message is authorized by User Auth Gate (Edit ID) and routed through Select Message Format.
- Check that Crypto Trading AI Agent produces an output and that Send Telegram Notice delivers a response.
- Trigger each webhook (for example, Order Placement Webhook and Account Info Webhook) and verify the corresponding Reply… Webhook node returns data.
- When satisfied, toggle the workflow to Active for production use.
Watch Out For
- Bitget credentials can expire or have missing permissions. If things break, check your Bitget API key status and IP restrictions in Bitget’s API management first.
- If you’re self-hosting, webhook endpoints must be reachable via HTTPS or Bitget calls will fail indirectly. When a request times out, verify your n8n webhook URL, reverse proxy, and Basic Auth credentials used for the webhook layer.
- Default AI prompts are generic. Add your trading rules and preferred confirmation format early, or you will keep rewriting messages and second-guessing what the agent meant.
Common Questions
About an hour if you already have your Bitget and Telegram credentials ready.
Yes, but you’ll want someone comfortable with credentials and webhooks. No traditional coding, though you will paste a Telegram user ID and verify HTTPS access.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI API costs (often a few cents per day for light usage) and any exchange-related fees.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
You can change what’s allowed at the User Auth Gate (Edit ID) logic, then adjust how the Crypto Trading AI Agent interprets commands and formats confirmations. Common customizations include adding stricter confirmation wording for live orders, limiting symbols to an allowlist, and changing output formatting in the “Format Place Order Reply” and “Split Long Telegram Text” steps so your team sees exactly what it cares about.
Usually it’s a wrong Telegram bot token or the bot can’t read messages because privacy settings are misconfigured in BotFather. Double-check the Telegram credentials in n8n, confirm you’re messaging the correct bot, and make sure your Telegram user ID matches what the User Auth Gate expects. If you’re sending voice or images, also verify the workflow can download media from Telegram (permissions and file size can matter). Finally, look at the execution logs for the first node that fails; it’s almost always upstream of Bitget.
For most individuals, capacity won’t be the bottleneck. On n8n Cloud Starter you’re limited by your monthly executions, and on self-hosting it mainly depends on your server and Bitget rate limits; practically, many teams run dozens of commands per hour comfortably as long as you don’t spam large batch queries.
Often, yes. This setup depends on signed HTTP calls, webhooks, branching logic, and tight control over credentials, which is where n8n tends to feel more flexible. Self-hosting also matters here because it keeps exchange keys out of third-party SaaS tooling you don’t control. Zapier or Make can still work for simple alerts, but they’re not the first choice for authenticated trading actions. If you want help deciding, Talk to an automation expert and we’ll sanity-check your approach.
You get a single place to execute and verify trades, without the constant tab-switching and second-guessing. Set it up once, then let the workflow handle the repetitive confirmation and routing work while you focus on decisions.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.