[{"data":1,"prerenderedAt":1334},["ShallowReactive",2],{"content-query-3T5zwMJaIo":3,"content-query-W4RtfFQaoh":1133,"content-query-yP1cWMns5L":1158,"content-query-M5aWdXgQKx":1162,"content-query-eJ9XWy0CGH":1169,"content-query-UP87PRcOMw":1182,"content-query-7VgBfxLOWV":1186,"content-query-j8GGVgf9na":1208,"content-query-Z6fTkbgt1D":1221,"content-query-9giMhwHrGj":1229,"content-query-1mvwAKmUBq":1236,"content-query-G03kJtQzJS":1259,"content-query-No6iPTj4EO":1278,"content-query-zRSmsuVl55":1288,"content-query-MsdmgXewTK":1292,"content-query-BMhIInEJl2":1299},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"intro":9,"type":10,"layout":11,"tags":12,"body":15,"_type":1126,"_id":1127,"_source":1128,"_file":1129,"_stem":1130,"_extension":1131,"sitemap":1132},"/docs/tutorials/email/microsoft-teams","email",false,"","Email to Microsoft Teams","Route inbound email into a Microsoft Teams channel automatically. Webhook Relay receives each email, parses it to JSON, and a transform reshapes it into a Teams card.","tutorial","doc",[13,14],"Email","Webhook Forwarding",{"type":16,"children":17,"toc":1117},"root",[18,40,61,83,90,95,125,146,152,157,163,175,189,202,647,653,665,671,691,990,1035,1068,1074,1087,1093,1111],{"type":19,"tag":20,"props":21,"children":22},"element","p",{},[23,26,31,33,38],{"type":24,"value":25},"text","Plenty of useful signals still arrive as ",{"type":19,"tag":27,"props":28,"children":29},"strong",{},[30],{"type":24,"value":5},{"type":24,"value":32}," — alert notifications from legacy systems, approval requests, scheduled reports, vendor updates. If your team lives in ",{"type":19,"tag":27,"props":34,"children":35},{},[36],{"type":24,"value":37},"Microsoft Teams",{"type":24,"value":39},", copy-pasting those messages out of a shared inbox is tedious and easy to drop. You want each email to land in a Teams channel automatically.",{"type":19,"tag":20,"props":41,"children":42},{},[43,52,54,59],{"type":19,"tag":44,"props":45,"children":49},"a",{"href":46,"rel":47},"https://webhookrelay.com",[48],"nofollow",[50],{"type":24,"value":51},"Webhook Relay",{"type":24,"value":53}," does exactly that. It gives you an inbound email address, ",{"type":19,"tag":27,"props":55,"children":56},{},[57],{"type":24,"value":58},"parses every message it receives into clean JSON",{"type":24,"value":60},", and POSTs it to your outputs. Add a small transform that reshapes the parsed email into a Teams card, point the output at your Teams webhook URL, and every email becomes a channel message — no glue server, no inbox polling.",{"type":19,"tag":62,"props":63,"children":64},"blockquote",{},[65],{"type":19,"tag":20,"props":66,"children":67},{},[68,73,75,81],{"type":19,"tag":27,"props":69,"children":70},{},[71],{"type":24,"value":72},"Build it visually first:",{"type":24,"value":74}," the free ",{"type":19,"tag":44,"props":76,"children":78},{"href":77},"/webhook-message-formatter",[79],{"type":24,"value":80},"webhook → Slack/Discord/Teams formatter",{"type":24,"value":82}," lets you paste a sample payload, template the message, preview it live, and copy the exact transform function — for any incoming payload, including a parsed email.",{"type":19,"tag":84,"props":85,"children":87},"h2",{"id":86},"how-it-works",[88],{"type":24,"value":89},"How it works",{"type":19,"tag":20,"props":91,"children":92},{},[93],{"type":24,"value":94},"The flow is a single hop with a transform in the middle:",{"type":19,"tag":96,"props":97,"children":100},"pre",{"className":98,"code":99,"language":24,"meta":7,"style":7},"language-text shiki shiki-themes github-dark","inbound email  ──▶  Webhook Relay  ──▶  transform to Teams card  ──▶  Teams channel\n (to your addr)     (parse to JSON)     (serverless function)        (message appears)\n",[101],{"type":19,"tag":102,"props":103,"children":104},"code",{"__ignoreMap":7},[105,116],{"type":19,"tag":106,"props":107,"children":110},"span",{"class":108,"line":109},"line",1,[111],{"type":19,"tag":106,"props":112,"children":113},{},[114],{"type":24,"value":115},"inbound email  ──▶  Webhook Relay  ──▶  transform to Teams card  ──▶  Teams channel\n",{"type":19,"tag":106,"props":117,"children":119},{"class":108,"line":118},2,[120],{"type":19,"tag":106,"props":121,"children":122},{},[123],{"type":24,"value":124}," (to your addr)     (parse to JSON)     (serverless function)        (message appears)\n",{"type":19,"tag":20,"props":126,"children":127},{},[128,130,136,138,144],{"type":24,"value":129},"Webhook Relay handles SMTP, parsing, SPF/DKIM/DMARC checks, and attachments for you. By the time the email reaches your transform it's already structured JSON — see ",{"type":19,"tag":44,"props":131,"children":133},{"href":132},"/email-to-webhook",[134],{"type":24,"value":135},"Email to Webhook",{"type":24,"value":137}," for the full picture of ",{"type":19,"tag":44,"props":139,"children":141},{"href":140},"/docs/email",[142],{"type":24,"value":143},"receiving emails as webhooks",{"type":24,"value":145},".",{"type":19,"tag":84,"props":147,"children":149},{"id":148},"step-1-create-a-bucket",[150],{"type":24,"value":151},"Step 1: Create a bucket",{"type":19,"tag":20,"props":153,"children":154},{},[155],{"type":24,"value":156},"A bucket is the container that ties an input (where data arrives) to outputs (where it goes). Create one in the dashboard — it's where you'll add the email input and the Teams output.",{"type":19,"tag":84,"props":158,"children":160},{"id":159},"step-2-add-an-email-input",[161],{"type":24,"value":162},"Step 2: Add an email input",{"type":19,"tag":20,"props":164,"children":165},{},[166,168,173],{"type":24,"value":167},"On the bucket, add an ",{"type":19,"tag":27,"props":169,"children":170},{},[171],{"type":24,"value":172},"email input",{"type":24,"value":174},". Webhook Relay generates a unique address:",{"type":19,"tag":96,"props":176,"children":178},{"className":98,"code":177,"language":24,"meta":7,"style":7},"\u003Cuuid>@in.webhookrelay-mail.com\n",[179],{"type":19,"tag":102,"props":180,"children":181},{"__ignoreMap":7},[182],{"type":19,"tag":106,"props":183,"children":184},{"class":108,"line":109},[185],{"type":19,"tag":106,"props":186,"children":187},{},[188],{"type":24,"value":177},{"type":19,"tag":20,"props":190,"children":191},{},[192,194,200],{"type":24,"value":193},"Any message sent to that address is parsed and POSTed to the bucket's outputs as JSON. The parsed payload looks like this (see the full ",{"type":19,"tag":44,"props":195,"children":197},{"href":196},"/docs/email/payload",[198],{"type":24,"value":199},"payload reference",{"type":24,"value":201},"):",{"type":19,"tag":96,"props":203,"children":207},{"className":204,"code":205,"language":206,"meta":7,"style":7},"language-json shiki shiki-themes github-dark","{\n  \"from\": \"alerts@example.com\",\n  \"from_name\": \"Monitoring\",\n  \"recipient\": \"\u003Cuuid>@in.webhookrelay-mail.com\",\n  \"to\": [\"\u003Cuuid>@in.webhookrelay-mail.com\"],\n  \"cc\": [],\n  \"subject\": \"Disk usage above 90% on db-01\",\n  \"date\": \"2026-06-28T11:59:00Z\",\n  \"message_id\": \"\u003C...>\",\n  \"text\": \"db-01 root volume is at 92%.\",\n  \"html\": \"\u003Cp>db-01 root volume is at 92%.\u003C/p>\",\n  \"headers\": {},\n  \"spf\": \"pass\",\n  \"dkim\": \"pass\",\n  \"dmarc\": \"pass\",\n  \"attachments\": [\n    { \"name\": \"report.csv\", \"content_type\": \"text/csv\", \"size\": 1024, \"content\": \"\", \"truncated\": false }\n  ]\n}\n","json",[208],{"type":19,"tag":102,"props":209,"children":210},{"__ignoreMap":7},[211,220,245,267,289,312,326,348,370,392,414,436,450,472,493,514,528,629,638],{"type":19,"tag":106,"props":212,"children":213},{"class":108,"line":109},[214],{"type":19,"tag":106,"props":215,"children":217},{"style":216},"--shiki-default:#E1E4E8",[218],{"type":24,"value":219},"{\n",{"type":19,"tag":106,"props":221,"children":222},{"class":108,"line":118},[223,229,234,240],{"type":19,"tag":106,"props":224,"children":226},{"style":225},"--shiki-default:#79B8FF",[227],{"type":24,"value":228},"  \"from\"",{"type":19,"tag":106,"props":230,"children":231},{"style":216},[232],{"type":24,"value":233},": ",{"type":19,"tag":106,"props":235,"children":237},{"style":236},"--shiki-default:#9ECBFF",[238],{"type":24,"value":239},"\"alerts@example.com\"",{"type":19,"tag":106,"props":241,"children":242},{"style":216},[243],{"type":24,"value":244},",\n",{"type":19,"tag":106,"props":246,"children":248},{"class":108,"line":247},3,[249,254,258,263],{"type":19,"tag":106,"props":250,"children":251},{"style":225},[252],{"type":24,"value":253},"  \"from_name\"",{"type":19,"tag":106,"props":255,"children":256},{"style":216},[257],{"type":24,"value":233},{"type":19,"tag":106,"props":259,"children":260},{"style":236},[261],{"type":24,"value":262},"\"Monitoring\"",{"type":19,"tag":106,"props":264,"children":265},{"style":216},[266],{"type":24,"value":244},{"type":19,"tag":106,"props":268,"children":270},{"class":108,"line":269},4,[271,276,280,285],{"type":19,"tag":106,"props":272,"children":273},{"style":225},[274],{"type":24,"value":275},"  \"recipient\"",{"type":19,"tag":106,"props":277,"children":278},{"style":216},[279],{"type":24,"value":233},{"type":19,"tag":106,"props":281,"children":282},{"style":236},[283],{"type":24,"value":284},"\"\u003Cuuid>@in.webhookrelay-mail.com\"",{"type":19,"tag":106,"props":286,"children":287},{"style":216},[288],{"type":24,"value":244},{"type":19,"tag":106,"props":290,"children":292},{"class":108,"line":291},5,[293,298,303,307],{"type":19,"tag":106,"props":294,"children":295},{"style":225},[296],{"type":24,"value":297},"  \"to\"",{"type":19,"tag":106,"props":299,"children":300},{"style":216},[301],{"type":24,"value":302},": [",{"type":19,"tag":106,"props":304,"children":305},{"style":236},[306],{"type":24,"value":284},{"type":19,"tag":106,"props":308,"children":309},{"style":216},[310],{"type":24,"value":311},"],\n",{"type":19,"tag":106,"props":313,"children":315},{"class":108,"line":314},6,[316,321],{"type":19,"tag":106,"props":317,"children":318},{"style":225},[319],{"type":24,"value":320},"  \"cc\"",{"type":19,"tag":106,"props":322,"children":323},{"style":216},[324],{"type":24,"value":325},": [],\n",{"type":19,"tag":106,"props":327,"children":329},{"class":108,"line":328},7,[330,335,339,344],{"type":19,"tag":106,"props":331,"children":332},{"style":225},[333],{"type":24,"value":334},"  \"subject\"",{"type":19,"tag":106,"props":336,"children":337},{"style":216},[338],{"type":24,"value":233},{"type":19,"tag":106,"props":340,"children":341},{"style":236},[342],{"type":24,"value":343},"\"Disk usage above 90% on db-01\"",{"type":19,"tag":106,"props":345,"children":346},{"style":216},[347],{"type":24,"value":244},{"type":19,"tag":106,"props":349,"children":351},{"class":108,"line":350},8,[352,357,361,366],{"type":19,"tag":106,"props":353,"children":354},{"style":225},[355],{"type":24,"value":356},"  \"date\"",{"type":19,"tag":106,"props":358,"children":359},{"style":216},[360],{"type":24,"value":233},{"type":19,"tag":106,"props":362,"children":363},{"style":236},[364],{"type":24,"value":365},"\"2026-06-28T11:59:00Z\"",{"type":19,"tag":106,"props":367,"children":368},{"style":216},[369],{"type":24,"value":244},{"type":19,"tag":106,"props":371,"children":373},{"class":108,"line":372},9,[374,379,383,388],{"type":19,"tag":106,"props":375,"children":376},{"style":225},[377],{"type":24,"value":378},"  \"message_id\"",{"type":19,"tag":106,"props":380,"children":381},{"style":216},[382],{"type":24,"value":233},{"type":19,"tag":106,"props":384,"children":385},{"style":236},[386],{"type":24,"value":387},"\"\u003C...>\"",{"type":19,"tag":106,"props":389,"children":390},{"style":216},[391],{"type":24,"value":244},{"type":19,"tag":106,"props":393,"children":395},{"class":108,"line":394},10,[396,401,405,410],{"type":19,"tag":106,"props":397,"children":398},{"style":225},[399],{"type":24,"value":400},"  \"text\"",{"type":19,"tag":106,"props":402,"children":403},{"style":216},[404],{"type":24,"value":233},{"type":19,"tag":106,"props":406,"children":407},{"style":236},[408],{"type":24,"value":409},"\"db-01 root volume is at 92%.\"",{"type":19,"tag":106,"props":411,"children":412},{"style":216},[413],{"type":24,"value":244},{"type":19,"tag":106,"props":415,"children":417},{"class":108,"line":416},11,[418,423,427,432],{"type":19,"tag":106,"props":419,"children":420},{"style":225},[421],{"type":24,"value":422},"  \"html\"",{"type":19,"tag":106,"props":424,"children":425},{"style":216},[426],{"type":24,"value":233},{"type":19,"tag":106,"props":428,"children":429},{"style":236},[430],{"type":24,"value":431},"\"\u003Cp>db-01 root volume is at 92%.\u003C/p>\"",{"type":19,"tag":106,"props":433,"children":434},{"style":216},[435],{"type":24,"value":244},{"type":19,"tag":106,"props":437,"children":439},{"class":108,"line":438},12,[440,445],{"type":19,"tag":106,"props":441,"children":442},{"style":225},[443],{"type":24,"value":444},"  \"headers\"",{"type":19,"tag":106,"props":446,"children":447},{"style":216},[448],{"type":24,"value":449},": {},\n",{"type":19,"tag":106,"props":451,"children":453},{"class":108,"line":452},13,[454,459,463,468],{"type":19,"tag":106,"props":455,"children":456},{"style":225},[457],{"type":24,"value":458},"  \"spf\"",{"type":19,"tag":106,"props":460,"children":461},{"style":216},[462],{"type":24,"value":233},{"type":19,"tag":106,"props":464,"children":465},{"style":236},[466],{"type":24,"value":467},"\"pass\"",{"type":19,"tag":106,"props":469,"children":470},{"style":216},[471],{"type":24,"value":244},{"type":19,"tag":106,"props":473,"children":475},{"class":108,"line":474},14,[476,481,485,489],{"type":19,"tag":106,"props":477,"children":478},{"style":225},[479],{"type":24,"value":480},"  \"dkim\"",{"type":19,"tag":106,"props":482,"children":483},{"style":216},[484],{"type":24,"value":233},{"type":19,"tag":106,"props":486,"children":487},{"style":236},[488],{"type":24,"value":467},{"type":19,"tag":106,"props":490,"children":491},{"style":216},[492],{"type":24,"value":244},{"type":19,"tag":106,"props":494,"children":496},{"class":108,"line":495},15,[497,502,506,510],{"type":19,"tag":106,"props":498,"children":499},{"style":225},[500],{"type":24,"value":501},"  \"dmarc\"",{"type":19,"tag":106,"props":503,"children":504},{"style":216},[505],{"type":24,"value":233},{"type":19,"tag":106,"props":507,"children":508},{"style":236},[509],{"type":24,"value":467},{"type":19,"tag":106,"props":511,"children":512},{"style":216},[513],{"type":24,"value":244},{"type":19,"tag":106,"props":515,"children":517},{"class":108,"line":516},16,[518,523],{"type":19,"tag":106,"props":519,"children":520},{"style":225},[521],{"type":24,"value":522},"  \"attachments\"",{"type":19,"tag":106,"props":524,"children":525},{"style":216},[526],{"type":24,"value":527},": [\n",{"type":19,"tag":106,"props":529,"children":531},{"class":108,"line":530},17,[532,537,542,546,551,556,561,565,570,574,579,583,588,592,597,601,606,610,615,619,624],{"type":19,"tag":106,"props":533,"children":534},{"style":216},[535],{"type":24,"value":536},"    { ",{"type":19,"tag":106,"props":538,"children":539},{"style":225},[540],{"type":24,"value":541},"\"name\"",{"type":19,"tag":106,"props":543,"children":544},{"style":216},[545],{"type":24,"value":233},{"type":19,"tag":106,"props":547,"children":548},{"style":236},[549],{"type":24,"value":550},"\"report.csv\"",{"type":19,"tag":106,"props":552,"children":553},{"style":216},[554],{"type":24,"value":555},", ",{"type":19,"tag":106,"props":557,"children":558},{"style":225},[559],{"type":24,"value":560},"\"content_type\"",{"type":19,"tag":106,"props":562,"children":563},{"style":216},[564],{"type":24,"value":233},{"type":19,"tag":106,"props":566,"children":567},{"style":236},[568],{"type":24,"value":569},"\"text/csv\"",{"type":19,"tag":106,"props":571,"children":572},{"style":216},[573],{"type":24,"value":555},{"type":19,"tag":106,"props":575,"children":576},{"style":225},[577],{"type":24,"value":578},"\"size\"",{"type":19,"tag":106,"props":580,"children":581},{"style":216},[582],{"type":24,"value":233},{"type":19,"tag":106,"props":584,"children":585},{"style":225},[586],{"type":24,"value":587},"1024",{"type":19,"tag":106,"props":589,"children":590},{"style":216},[591],{"type":24,"value":555},{"type":19,"tag":106,"props":593,"children":594},{"style":225},[595],{"type":24,"value":596},"\"content\"",{"type":19,"tag":106,"props":598,"children":599},{"style":216},[600],{"type":24,"value":233},{"type":19,"tag":106,"props":602,"children":603},{"style":236},[604],{"type":24,"value":605},"\"\"",{"type":19,"tag":106,"props":607,"children":608},{"style":216},[609],{"type":24,"value":555},{"type":19,"tag":106,"props":611,"children":612},{"style":225},[613],{"type":24,"value":614},"\"truncated\"",{"type":19,"tag":106,"props":616,"children":617},{"style":216},[618],{"type":24,"value":233},{"type":19,"tag":106,"props":620,"children":621},{"style":225},[622],{"type":24,"value":623},"false",{"type":19,"tag":106,"props":625,"children":626},{"style":216},[627],{"type":24,"value":628}," }\n",{"type":19,"tag":106,"props":630,"children":632},{"class":108,"line":631},18,[633],{"type":19,"tag":106,"props":634,"children":635},{"style":216},[636],{"type":24,"value":637},"  ]\n",{"type":19,"tag":106,"props":639,"children":641},{"class":108,"line":640},19,[642],{"type":19,"tag":106,"props":643,"children":644},{"style":216},[645],{"type":24,"value":646},"}\n",{"type":19,"tag":84,"props":648,"children":650},{"id":649},"step-3-add-the-teams-output",[651],{"type":24,"value":652},"Step 3: Add the Teams output",{"type":19,"tag":20,"props":654,"children":655},{},[656,658,663],{"type":24,"value":657},"Add an output to the bucket and set its destination to your ",{"type":19,"tag":27,"props":659,"children":660},{},[661],{"type":24,"value":662},"Teams Incoming Webhook",{"type":24,"value":664}," URL (created via a Power Automate Workflow, or a legacy Office 365 connector). Keep that URL handy — it's where the transformed message gets delivered.",{"type":19,"tag":84,"props":666,"children":668},{"id":667},"step-4-attach-a-transform",[669],{"type":24,"value":670},"Step 4: Attach a transform",{"type":19,"tag":20,"props":672,"children":673},{},[674,676,682,684,689],{"type":24,"value":675},"Right now the parsed email would be POSTed to Teams as-is, and Teams would reject it because the shape is wrong. Attach a ",{"type":19,"tag":44,"props":677,"children":679},{"href":678},"/docs/webhooks/functions",[680],{"type":24,"value":681},"transform function",{"type":24,"value":683}," to the output to convert the parsed email into a Teams ",{"type":19,"tag":27,"props":685,"children":686},{},[687],{"type":24,"value":688},"MessageCard",{"type":24,"value":690},":",{"type":19,"tag":96,"props":692,"children":696},{"className":693,"code":694,"language":695,"meta":7,"style":7},"language-js shiki shiki-themes github-dark","const email = JSON.parse(r.body);\n\nconst card = {\n  \"@type\": \"MessageCard\",\n  \"@context\": \"https://schema.org/extensions\",\n  summary: email.subject,\n  title: email.subject,\n  text: `**From:** ${email.from_name || email.from}\\n\\n${email.text}`\n};\n\nr.setBody(JSON.stringify(card));\nr.setHeader(\"Content-Type\", \"application/json\");\n","js",[697],{"type":19,"tag":102,"props":698,"children":699},{"__ignoreMap":7},[700,739,748,769,790,811,819,827,903,911,918,955],{"type":19,"tag":106,"props":701,"children":702},{"class":108,"line":109},[703,709,714,719,724,728,734],{"type":19,"tag":106,"props":704,"children":706},{"style":705},"--shiki-default:#F97583",[707],{"type":24,"value":708},"const",{"type":19,"tag":106,"props":710,"children":711},{"style":225},[712],{"type":24,"value":713}," email",{"type":19,"tag":106,"props":715,"children":716},{"style":705},[717],{"type":24,"value":718}," =",{"type":19,"tag":106,"props":720,"children":721},{"style":225},[722],{"type":24,"value":723}," JSON",{"type":19,"tag":106,"props":725,"children":726},{"style":216},[727],{"type":24,"value":145},{"type":19,"tag":106,"props":729,"children":731},{"style":730},"--shiki-default:#B392F0",[732],{"type":24,"value":733},"parse",{"type":19,"tag":106,"props":735,"children":736},{"style":216},[737],{"type":24,"value":738},"(r.body);\n",{"type":19,"tag":106,"props":740,"children":741},{"class":108,"line":118},[742],{"type":19,"tag":106,"props":743,"children":745},{"emptyLinePlaceholder":744},true,[746],{"type":24,"value":747},"\n",{"type":19,"tag":106,"props":749,"children":750},{"class":108,"line":247},[751,755,760,764],{"type":19,"tag":106,"props":752,"children":753},{"style":705},[754],{"type":24,"value":708},{"type":19,"tag":106,"props":756,"children":757},{"style":225},[758],{"type":24,"value":759}," card",{"type":19,"tag":106,"props":761,"children":762},{"style":705},[763],{"type":24,"value":718},{"type":19,"tag":106,"props":765,"children":766},{"style":216},[767],{"type":24,"value":768}," {\n",{"type":19,"tag":106,"props":770,"children":771},{"class":108,"line":269},[772,777,781,786],{"type":19,"tag":106,"props":773,"children":774},{"style":236},[775],{"type":24,"value":776},"  \"@type\"",{"type":19,"tag":106,"props":778,"children":779},{"style":216},[780],{"type":24,"value":233},{"type":19,"tag":106,"props":782,"children":783},{"style":236},[784],{"type":24,"value":785},"\"MessageCard\"",{"type":19,"tag":106,"props":787,"children":788},{"style":216},[789],{"type":24,"value":244},{"type":19,"tag":106,"props":791,"children":792},{"class":108,"line":291},[793,798,802,807],{"type":19,"tag":106,"props":794,"children":795},{"style":236},[796],{"type":24,"value":797},"  \"@context\"",{"type":19,"tag":106,"props":799,"children":800},{"style":216},[801],{"type":24,"value":233},{"type":19,"tag":106,"props":803,"children":804},{"style":236},[805],{"type":24,"value":806},"\"https://schema.org/extensions\"",{"type":19,"tag":106,"props":808,"children":809},{"style":216},[810],{"type":24,"value":244},{"type":19,"tag":106,"props":812,"children":813},{"class":108,"line":314},[814],{"type":19,"tag":106,"props":815,"children":816},{"style":216},[817],{"type":24,"value":818},"  summary: email.subject,\n",{"type":19,"tag":106,"props":820,"children":821},{"class":108,"line":328},[822],{"type":19,"tag":106,"props":823,"children":824},{"style":216},[825],{"type":24,"value":826},"  title: email.subject,\n",{"type":19,"tag":106,"props":828,"children":829},{"class":108,"line":350},[830,835,840,844,848,853,858,862,866,871,876,881,886,890,894,898],{"type":19,"tag":106,"props":831,"children":832},{"style":216},[833],{"type":24,"value":834},"  text: ",{"type":19,"tag":106,"props":836,"children":837},{"style":236},[838],{"type":24,"value":839},"`**From:** ${",{"type":19,"tag":106,"props":841,"children":842},{"style":216},[843],{"type":24,"value":5},{"type":19,"tag":106,"props":845,"children":846},{"style":236},[847],{"type":24,"value":145},{"type":19,"tag":106,"props":849,"children":850},{"style":216},[851],{"type":24,"value":852},"from_name",{"type":19,"tag":106,"props":854,"children":855},{"style":705},[856],{"type":24,"value":857}," ||",{"type":19,"tag":106,"props":859,"children":860},{"style":216},[861],{"type":24,"value":713},{"type":19,"tag":106,"props":863,"children":864},{"style":236},[865],{"type":24,"value":145},{"type":19,"tag":106,"props":867,"children":868},{"style":216},[869],{"type":24,"value":870},"from",{"type":19,"tag":106,"props":872,"children":873},{"style":236},[874],{"type":24,"value":875},"}",{"type":19,"tag":106,"props":877,"children":878},{"style":225},[879],{"type":24,"value":880},"\\n\\n",{"type":19,"tag":106,"props":882,"children":883},{"style":236},[884],{"type":24,"value":885},"${",{"type":19,"tag":106,"props":887,"children":888},{"style":216},[889],{"type":24,"value":5},{"type":19,"tag":106,"props":891,"children":892},{"style":236},[893],{"type":24,"value":145},{"type":19,"tag":106,"props":895,"children":896},{"style":216},[897],{"type":24,"value":24},{"type":19,"tag":106,"props":899,"children":900},{"style":236},[901],{"type":24,"value":902},"}`\n",{"type":19,"tag":106,"props":904,"children":905},{"class":108,"line":372},[906],{"type":19,"tag":106,"props":907,"children":908},{"style":216},[909],{"type":24,"value":910},"};\n",{"type":19,"tag":106,"props":912,"children":913},{"class":108,"line":394},[914],{"type":19,"tag":106,"props":915,"children":916},{"emptyLinePlaceholder":744},[917],{"type":24,"value":747},{"type":19,"tag":106,"props":919,"children":920},{"class":108,"line":416},[921,926,931,936,941,945,950],{"type":19,"tag":106,"props":922,"children":923},{"style":216},[924],{"type":24,"value":925},"r.",{"type":19,"tag":106,"props":927,"children":928},{"style":730},[929],{"type":24,"value":930},"setBody",{"type":19,"tag":106,"props":932,"children":933},{"style":216},[934],{"type":24,"value":935},"(",{"type":19,"tag":106,"props":937,"children":938},{"style":225},[939],{"type":24,"value":940},"JSON",{"type":19,"tag":106,"props":942,"children":943},{"style":216},[944],{"type":24,"value":145},{"type":19,"tag":106,"props":946,"children":947},{"style":730},[948],{"type":24,"value":949},"stringify",{"type":19,"tag":106,"props":951,"children":952},{"style":216},[953],{"type":24,"value":954},"(card));\n",{"type":19,"tag":106,"props":956,"children":957},{"class":108,"line":438},[958,962,967,971,976,980,985],{"type":19,"tag":106,"props":959,"children":960},{"style":216},[961],{"type":24,"value":925},{"type":19,"tag":106,"props":963,"children":964},{"style":730},[965],{"type":24,"value":966},"setHeader",{"type":19,"tag":106,"props":968,"children":969},{"style":216},[970],{"type":24,"value":935},{"type":19,"tag":106,"props":972,"children":973},{"style":236},[974],{"type":24,"value":975},"\"Content-Type\"",{"type":19,"tag":106,"props":977,"children":978},{"style":216},[979],{"type":24,"value":555},{"type":19,"tag":106,"props":981,"children":982},{"style":236},[983],{"type":24,"value":984},"\"application/json\"",{"type":19,"tag":106,"props":986,"children":987},{"style":216},[988],{"type":24,"value":989},");\n",{"type":19,"tag":20,"props":991,"children":992},{},[993,995,1001,1003,1009,1011,1017,1019,1025,1027,1033],{"type":24,"value":994},"The function reads ",{"type":19,"tag":102,"props":996,"children":998},{"className":997},[],[999],{"type":24,"value":1000},"r.body",{"type":24,"value":1002}," (the parsed-email JSON string), pulls out the subject, sender and body, and writes a MessageCard back with ",{"type":19,"tag":102,"props":1004,"children":1006},{"className":1005},[],[1007],{"type":24,"value":1008},"r.setBody()",{"type":24,"value":1010},". Setting ",{"type":19,"tag":102,"props":1012,"children":1014},{"className":1013},[],[1015],{"type":24,"value":1016},"Content-Type: application/json",{"type":24,"value":1018}," with ",{"type":19,"tag":102,"props":1020,"children":1022},{"className":1021},[],[1023],{"type":24,"value":1024},"r.setHeader()",{"type":24,"value":1026}," ensures Teams accepts it. You can also call ",{"type":19,"tag":102,"props":1028,"children":1030},{"className":1029},[],[1031],{"type":24,"value":1032},"r.setResponseStatus()",{"type":24,"value":1034}," if you need to control the response returned to the sender.",{"type":19,"tag":20,"props":1036,"children":1037},{},[1038,1043,1045,1050,1052,1058,1060,1066],{"type":19,"tag":27,"props":1039,"children":1040},{},[1041],{"type":24,"value":1042},"A note on Adaptive Cards.",{"type":24,"value":1044}," Microsoft is migrating Incoming Webhooks away from Office 365 connectors toward Power Automate Workflows, where the modern format is an ",{"type":19,"tag":27,"props":1046,"children":1047},{},[1048],{"type":24,"value":1049},"Adaptive Card",{"type":24,"value":1051}," wrapped in an ",{"type":19,"tag":102,"props":1053,"children":1055},{"className":1054},[],[1056],{"type":24,"value":1057},"attachments",{"type":24,"value":1059}," array. The pattern is identical — parse the email, build the card object, ",{"type":19,"tag":102,"props":1061,"children":1063},{"className":1062},[],[1064],{"type":24,"value":1065},"r.setBody(JSON.stringify(...))",{"type":24,"value":1067}," — only the JSON shape differs to match whichever URL you were given.",{"type":19,"tag":84,"props":1069,"children":1071},{"id":1070},"step-5-test-it",[1072],{"type":24,"value":1073},"Step 5: Test it",{"type":19,"tag":20,"props":1075,"children":1076},{},[1077,1079,1085],{"type":24,"value":1078},"Send a plain email to your ",{"type":19,"tag":102,"props":1080,"children":1082},{"className":1081},[],[1083],{"type":24,"value":1084},"\u003Cuuid>@in.webhookrelay-mail.com",{"type":24,"value":1086}," address. Within a second or two the subject and body appear as a card in your Teams channel. If nothing shows up, open the request log in your dashboard to see exactly what was received, transformed, and delivered.",{"type":19,"tag":84,"props":1088,"children":1090},{"id":1089},"wrapping-up",[1091],{"type":24,"value":1092},"Wrapping up",{"type":19,"tag":20,"props":1094,"children":1095},{},[1096,1098,1102,1104,1109],{"type":24,"value":1097},"That's a complete email-to-Teams bridge: an email input parses each message, a transform reshapes it into a Teams card, and the output delivers it — all in the cloud with nothing to host. The same building blocks cover any destination; see ",{"type":19,"tag":44,"props":1099,"children":1100},{"href":132},[1101],{"type":24,"value":135},{"type":24,"value":1103}," for the broader pattern and the ",{"type":19,"tag":44,"props":1105,"children":1106},{"href":77},[1107],{"type":24,"value":1108},"formatter",{"type":24,"value":1110}," to template your card without writing code by hand.",{"type":19,"tag":1112,"props":1113,"children":1114},"style",{},[1115],{"type":24,"value":1116},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":7,"searchDepth":247,"depth":247,"links":1118},[1119,1120,1121,1122,1123,1124,1125],{"id":86,"depth":118,"text":89},{"id":148,"depth":118,"text":151},{"id":159,"depth":118,"text":162},{"id":649,"depth":118,"text":652},{"id":667,"depth":118,"text":670},{"id":1070,"depth":118,"text":1073},{"id":1089,"depth":118,"text":1092},"markdown","content:docs:tutorials:email:microsoft-teams.md","content","docs/tutorials/email/microsoft-teams.md","docs/tutorials/email/microsoft-teams","md",{"loc":4},[1134,1137,1140,1143,1146,1149,1152,1155],{"_path":1135,"title":1136},"/docs/installation/cli","CLI",{"_path":1138,"title":1139},"/docs/installation/docker","Docker container",{"_path":1141,"title":1142},"/docs/installation/docker-compose","Docker Compose",{"_path":1144,"title":1145},"/docs/installation/kubernetes","Kubernetes",{"_path":1147,"title":1148},"/docs/installation/autostart-windows","Autostart (Windows)",{"_path":1150,"title":1151},"/docs/installation/autostart-linux","Autostart (Linux)",{"_path":1153,"title":1154},"/docs/installation/autostart-macos","Autostart (MacOS)",{"_path":1156,"title":1157},"/docs/installation/behind-proxy","HTTP proxy configuration",[1159],{"_path":1160,"title":1161},"/docs/webhooks/internal/localhost","Receiving webhooks on localhost",[1163,1166],{"_path":1164,"title":1165},"/docs/webhooks/public/public-destination","Forward to public URL",{"_path":1167,"title":1168},"/docs/webhooks/public/multiple-destination-urls","Multiple destinations",[1170,1173,1176,1179],{"_path":1171,"title":1172},"/docs/webhooks/auth/username-password","Username and password",{"_path":1174,"title":1175},"/docs/webhooks/auth/hmac","HMAC",{"_path":1177,"title":1178},"/docs/webhooks/auth/jwt","JWT authentication",{"_path":1180,"title":1181},"/docs/webhooks/auth/http-method","Auth using request method",[1183],{"_path":1184,"title":1185},"/docs/webhooks/cron/using-cron-webhooks","Schedule recurring webhooks",[1187,1190,1193,1196,1199,1202,1205],{"_path":1188,"title":1189},"/docs/service-connections","Service Connections",{"_path":1191,"title":1192},"/docs/service-connections/aws_s3","AWS S3",{"_path":1194,"title":1195},"/docs/service-connections/aws_sns","AWS SNS",{"_path":1197,"title":1198},"/docs/service-connections/aws_sqs","AWS SQS",{"_path":1200,"title":1201},"/docs/service-connections/azure","Azure",{"_path":1203,"title":1204},"/docs/service-connections/gcp_gcs","GCP Cloud Storage",{"_path":1206,"title":1207},"/docs/service-connections/gcp_pubsub","GCP Pub/Sub",[1209,1212,1215,1218],{"_path":1210,"title":1211},"/docs/account/account-management","Account management",{"_path":1213,"title":1214},"/docs/account/mfa","Multi-factor authentication (MFA)",{"_path":1216,"title":1217},"/docs/account/team","Teams and sub-accounts",{"_path":1219,"title":1220},"/docs/account/billing-and-subscriptions","Billing & subscriptions",[1222,1224,1226],{"_path":140,"title":1223},"Receive emails as webhooks",{"_path":196,"title":1225},"Email webhook payload",{"_path":1227,"title":1228},"/docs/email/filtering-and-policy","Sender filtering & policy",[1230,1233],{"_path":1231,"title":1232},"/docs/tunnels/demoing-your-website","Demoing your website",{"_path":1234,"title":1235},"/docs/tunnels/regions","Regions",[1237,1240,1243,1246,1249,1252,1253,1256],{"_path":1238,"title":1239},"/docs/tutorials/email/airtable","Email to Airtable",{"_path":1241,"title":1242},"/docs/tutorials/email/api","Email to API",{"_path":1244,"title":1245},"/docs/tutorials/email/database","Email to Database",{"_path":1247,"title":1248},"/docs/tutorials/email/discord","Email to Discord",{"_path":1250,"title":1251},"/docs/tutorials/email/google-sheets","Email to Google Sheets",{"_path":4,"title":8},{"_path":1254,"title":1255},"/docs/tutorials/email/notion","Email to Notion",{"_path":1257,"title":1258},"/docs/tutorials/email/slack","Email to Slack",[1260,1263,1266,1269,1272,1275],{"_path":1261,"title":1262},"/docs/tutorials/cicd/jenkins-bitbucket","Jenkins and Bitbucket",{"_path":1264,"title":1265},"/docs/tutorials/cicd/jenkins-github","Jenkins and GitHub",{"_path":1267,"title":1268},"/docs/tutorials/cicd/jenkins-plugin","Jenkins Plugin",{"_path":1270,"title":1271},"/docs/tutorials/cicd/kubernetes-operator","Kubernetes Operator",{"_path":1273,"title":1274},"/docs/tutorials/cicd/terraform-atlantis","Terraform Atlantis",{"_path":1276,"title":1277},"/docs/tutorials/cicd/webhook-exec","Execute scripts on webhook",[1279,1282,1285],{"_path":1280,"title":1281},"/docs/tutorials/edge/home-assistant","Home Assistant",{"_path":1283,"title":1284},"/docs/tutorials/edge/javascript-app","JavaScript app",{"_path":1286,"title":1287},"/docs/tutorials/edge/node-red","Node-RED",[1289],{"_path":1290,"title":1291},"/docs/tutorials/warehouse/bigquery","GCP BigQuery",[1293,1296],{"_path":1294,"title":1295},"/docs/tutorials/transform/docker-to-slack","DockerHub webhook to Slack notification",{"_path":1297,"title":1298},"/docs/tutorials/transform/enrich-webhooks","Enrich webhooks from APIs",[1300,1303,1306,1309,1312,1315,1318,1321,1324,1327,1329,1332],{"_path":1301,"title":1302},"/docs/webhooks/functions/manipulating-json","JSON encoding",{"_path":1304,"title":1305},"/docs/webhooks/functions/make-http-request","Make HTTP request",{"_path":1307,"title":1308},"/docs/webhooks/functions/modify-request","Read, write request data",{"_path":1310,"title":1311},"/docs/webhooks/functions/multipart-form-data","Multipart form to JSON",{"_path":1313,"title":1314},"/docs/webhooks/functions/url-encoded-data","URL Encoded Form",{"_path":1316,"title":1317},"/docs/webhooks/functions/working-with-time","Working with time",{"_path":1319,"title":1320},"/docs/webhooks/functions/send-emails","Sending emails",{"_path":1322,"title":1323},"/docs/webhooks/functions/crypto-functions","Base64, encryption",{"_path":1325,"title":1326},"/docs/webhooks/functions/integrate-into-cicd","Integrating into CI/CD",{"_path":1328,"title":1291},"/docs/webhooks/functions/big-query",{"_path":1330,"title":1331},"/docs/webhooks/functions/accessing-metadata","Accessing metadata",{"_path":678,"title":1333},"Functions",1782718125988]