{
"name": "WooCommerce Processing Orders to Telegram",
"tags": [],
"nodes": [
{
"id": "woocommerce-processing-order-to-telegram-trigger",
"name": "Order updated",
"type": "n8n-nodes-base.wooCommerceTrigger",
"typeVersion": 1,
"position": [
0,
240
],
"parameters": {
"event": "order.updated"
}
},
{
"id": "woocommerce-processing-order-to-telegram-status",
"name": "Check order status",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
240,
240
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "function status({order}) {if(!order||typeof order!=='object'||Array.isArray(order)||typeof order.status!=='string')throw Error('Invalid order status');return {processing:order.status==='processing'};}\n\nreturn {json:status({order:$json})};"
}
},
{
"id": "woocommerce-processing-order-to-telegram-gate",
"name": "Order is processing",
"type": "n8n-nodes-base.if",
"typeVersion": 1,
"position": [
480,
240
],
"parameters": {
"conditions": {
"boolean": [
{
"value1": "={{ $json.processing }}",
"operation": "equal",
"value2": true
}
]
}
}
},
{
"id": "woocommerce-processing-order-to-telegram-format",
"name": "Format the order notice",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
720,
240
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "function format({order}) {\n const str=(v,name)=>{if(typeof v!=='string')throw Error('Missing '+name);return v},escape=s=>s.replace(/&/g,'&').replace(//g,'>');\n if(!order||typeof order!=='object'||Array.isArray(order)||!Number.isSafeInteger(order.id)||order.id<=0)throw Error('Invalid order ID');\n const total=str(order.total,'total'),currency=str(order.currency,'currency');if(!/^-?\\d+(?:\\.\\d+)?$/.test(total)||!/^[A-Z]{3}$/.test(currency))throw Error('Invalid total or currency');\n const raw=str(order.date_created_gmt,'creation date'),match=/^(\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d)Z?$/.exec(raw);if(!match)throw Error('Invalid GMT creation date');const dt=new Date(match[1]+'Z');if(!Number.isFinite(dt.getTime())||dt.toISOString().slice(0,19)!==match[1])throw Error('Invalid GMT creation date');\n if(!order.billing||typeof order.billing!=='object'||Array.isArray(order.billing)||!Array.isArray(order.line_items))throw Error('Missing billing or line items');const b=order.billing,name=str(b.first_name,'first name')+' '+str(b.last_name,'last name'),city=str(b.city,'city'),phone=str(b.phone,'phone'),note=str(order.customer_note,'customer note');\n const products=order.line_items.map(item=>{if(!item||typeof item.name!=='string'||!Number.isSafeInteger(item.quantity)||item.quantity<0)throw Error('Invalid line item');return 'š¹ '+escape(item.name)+' ('+item.quantity+' items)';}).join('\\n');\n const text='š Order ID: '+order.id+'\\n\\nš¦š» Customer Name: '+escape(name)+'\\n\\nšµ Amount: '+escape(total)+' '+escape(currency)+'\\n\\nš
Order Date:\\nā '+match[1].replace('T',' ')+' UTC\\n\\nš City: '+escape(city)+'\\n\\nš Phone: '+escape(phone)+'\\n\\nāš» Order Note:\\n'+escape(note||'No notes')+'\\n\\nš¦ Ordered Products:\\n\\n'+products;\n if(text.length>4096)throw Error('Order notice exceeds the Telegram message limit');return {text};\n}\n\nreturn {json:format({order:$(\"Order updated\").item.json})};"
}
},
{
"id": "woocommerce-processing-order-to-telegram-send",
"name": "Telegram",
"type": "n8n-nodes-base.telegram",
"position": [
720,
740
],
"parameters": {
"text": "={{ $json.text }}",
"chatId": "YOUR_TELEGRAM_CHAT_ID",
"additionalFields": {
"parse_mode": "HTML",
"appendAttribution": false
}
},
"typeVersion": 1.2
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"connections": {
"Order updated": {
"main": [
[
{
"node": "Check order status",
"type": "main",
"index": 0
}
]
]
},
"Check order status": {
"main": [
[
{
"node": "Order is processing",
"type": "main",
"index": 0
}
]
]
},
"Order is processing": {
"main": [
[
{
"node": "Format the order notice",
"type": "main",
"index": 0
}
]
]
},
"Format the order notice": {
"main": [
[
{
"node": "Telegram",
"type": "main",
"index": 0
}
]
]
}
}
}