Microsoft Teams Email to Webhook Integration

Route inbound emails directly into Microsoft Teams as structured JSON. Microsoft Teams is a collaboration hub within Microsoft 365 that supports incoming webhooks for posting notifications to team channels. JsonHook bridges the gap between your inbox and Microsoft Teams — no custom server required.

Table of Contents
  1. Why Connect Microsoft Teams to Inbound Email
  2. Setting Up Microsoft Teams with JsonHook
  3. Example Workflow: When a client sends a project approval email, post a summary card to the #project-updates Teams channel
  4. Payload Mapping for Microsoft Teams
  5. Best Practices for Microsoft Teams Email Integration

Why Connect Microsoft Teams to Inbound Email

Teams using Microsoft Teams for real-time communication often miss critical signals that arrive by email. Customer support requests, system alerts, and business notifications all land in inboxes — but Microsoft Teams is where your team actually works. JsonHook connects the two, delivering parsed email content directly into Microsoft Teams so nothing falls through the cracks.

Connecting your inbound email to Microsoft Teams through JsonHook unlocks a range of high-value automation scenarios:

  • Post a formatted message to a dedicated channel whenever a support email arrives
  • Alert on-call engineers when an error notification email is received
  • Notify a sales channel the moment a new lead inquiry email comes in
  • Share customer feedback emails with the product team in real time
  • Create a digest of daily report emails delivered each morning to a channel

Microsoft Teams supports Incoming Webhook connector, which makes it a natural target for JsonHook's outbound POST requests. Every email that hits your JsonHook address is parsed within milliseconds and delivered to Microsoft Teams as a clean JSON object — no polling, no manual export, no middleware server to maintain.

Setting Up Microsoft Teams with JsonHook

The following steps walk you through connecting JsonHook to Microsoft Teams. The entire setup typically takes under ten minutes.

  1. Step 1: In Microsoft Teams, navigate to the channel where you want to receive email notifications. Click the three-dot menu next to the channel name and select Connectors. Search for Incoming Webhook, click Configure, give it a name, and click Create.
  2. Step 2: Copy the Incoming Webhook URL that Teams generates. This is your POST endpoint.
  3. Step 3: In JsonHook, create an inbound address and set the destination to your Teams Incoming Webhook URL. Set the Content-Type header to application/json.
  4. Step 4: Configure the message template in JsonHook to use the Teams Adaptive Card or MessageCard format: {"@type":"MessageCard","@context":"https://schema.org/extensions","summary":"{{subject}}","sections":[{"activityTitle":"{{from.address}}","activityText":"{{text}}"}]}.

Once the connection is active, every email sent to your JsonHook address will be automatically parsed and forwarded to Microsoft Teams. You can test the integration by sending a plain-text email to your JsonHook address and verifying that the payload appears in Microsoft Teams within a few seconds.

JsonHook supports Incoming Webhook connector on the Microsoft Teams side, so no additional configuration is needed in Microsoft Teams beyond the steps above. If Microsoft Teams requires header-based authentication for incoming webhooks, add the required headers in the JsonHook endpoint configuration under Advanced Settings.

Automate Microsoft Teams with Email Webhooks

Free tier: 100 emails/month. Set up in minutes.

Get Free API Key

Example Workflow: When a client sends a project approval email, post a summary card to the #project-updates Teams channel

This walkthrough demonstrates one concrete way to use JsonHook with Microsoft Teams. The scenario: When a client sends a project approval email, post a summary card to the #project-updates Teams channel.

When an email matching this scenario arrives, JsonHook parses the raw SMTP message and constructs the following JSON payload before POSTing it to your Microsoft Teams endpoint:

{
  "messageId": "",
  "from": {
    "name": "Jane Smith",
    "address": "[email protected]"
  },
  "to": [
    { "address": "[email protected]" }
  ],
  "subject": "When a client sends a project approval email, post a summary card to the #project-updates Teams channel",
  "text": "Hi, I need help with my account. Please contact me at your earliest convenience.",
  "html": "

Hi, I need help with my account...

", "date": "2026-03-15T10:32:00.000Z", "attachments": [], "headers": { "x-priority": "1" } }

Teams Incoming Webhooks use the MessageCard or Adaptive Card JSON schema. Map from.address to activitySubtitle or the card's from field, subject to activityTitle, and text to activityText. For Adaptive Cards, use a TextBlock for the subject and another for the body.

Once Microsoft Teams receives this payload, it can execute any downstream action — whether that is posting a notification, creating a record, updating a field, or triggering an entire multi-step workflow. The key advantage is that the data arrives as structured JSON, so Microsoft Teams never needs to parse raw email text or deal with MIME encoding.

Payload Mapping for Microsoft Teams

JsonHook delivers a consistent JSON schema for every parsed email. The table below shows which JsonHook fields map to the equivalent fields in Microsoft Teams. Use this as a reference when configuring your Microsoft Teams Incoming Webhook connector.

JsonHook Field Description Microsoft Teams Field
from.addressSender email addressSender / Contact email
from.nameSender display nameSender / Contact name
subjectEmail subject lineTitle / Subject / Name
textPlain-text email bodyDescription / Body / Message
htmlHTML email bodyRich text field / Notes
dateTimestamp of receipt (ISO 8601)Created date / Received at
attachments[n].filenameAttachment filenameFile name / Attachment label
attachments[n].contentAttachment content (base64)File content / Binary field
headers.*Raw email headersMetadata / Custom properties
messageIdUnique message identifierExternal ID / Deduplication key

Not every field will be present in every email. Always check for null or missing values before mapping to required fields in Microsoft Teams. For text-only emails, html will be empty; for HTML-only emails, text may be empty or auto-generated from the HTML. The attachments array will be an empty array when no files are attached.

Best Practices for Microsoft Teams Email Integration

Following these best practices will make your Microsoft Teams email integration more reliable, easier to debug, and simpler to scale as your email volume grows.

  • Use dedicated addresses per workflow. Create a separate JsonHook inbound address for each distinct Microsoft Teams workflow you want to trigger. This makes routing explicit and avoids a single endpoint becoming a bottleneck for all email types.
  • Validate the payload before acting. In Microsoft Teams, add a conditional check at the start of your workflow to confirm that required fields like from.address and subject are present and non-empty before executing downstream actions.
  • Test with real emails first. Use JsonHook's delivery log to inspect the raw JSON payload before wiring up Microsoft Teams. Confirm that all the fields you plan to map are actually populated by your email source.
  • Handle errors gracefully. Configure Microsoft Teams to catch webhook delivery failures and send an alert. JsonHook will retry failed deliveries, but your Microsoft Teams endpoint should return a 2xx status promptly to acknowledge receipt.
  • Keep secrets out of email content. Avoid routing emails that contain passwords, API keys, or PII through workflows unless you have appropriate data-handling controls configured in Microsoft Teams. Use JsonHook's HTTPS delivery to protect data in transit.

Frequently Asked Questions

Can I send emails to Microsoft Teams via webhook?
Yes. JsonHook provides a unique inbound email address for each webhook endpoint you configure. When an email is delivered to that address, JsonHook parses the message — extracting the sender, subject, body text, HTML body, and any attachments — and immediately POSTs the result as a structured JSON payload to your Microsoft Teams Incoming Webhook connector. From there, Microsoft Teams can trigger any downstream action you have configured.
Do I need to code to connect JsonHook to Microsoft Teams?
Minimal technical knowledge is needed. Microsoft Teams accepts webhook payloads through its Incoming Webhook connector. You paste the URL, configure the field mappings in the UI, and JsonHook takes care of the rest. No custom code is necessary for standard email-to-webhook routing.
How do I filter which emails go to Microsoft Teams?
JsonHook uses address-based routing. Create a dedicated inbound address such as [email protected] and point it exclusively at your Microsoft Teams webhook URL. You can also create multiple addresses for different email categories — one for support, one for sales leads, one for order notifications — each routed to a different Microsoft Teams workflow or channel. If Microsoft Teams supports conditional logic, you can add further filtering on the subject, from, or any custom field in the parsed JSON payload.
Does the Microsoft Teams Incoming Webhook support Adaptive Cards?
Yes. In addition to the older MessageCard format, Teams connectors accept Adaptive Card payloads. Adaptive Cards offer more layout flexibility and interactive elements. Use JsonHook's template engine to build the card JSON with email fields mapped to the appropriate content blocks.
What happens if the Teams webhook URL changes after a connector is recreated?
If you delete and recreate the Teams connector, a new URL is generated. You will need to update the destination URL in your JsonHook inbound address settings. It is good practice to document your webhook URLs and update them as part of any Teams administration change.