MS-900Chapter 96 of 104Objective 2.4

Microsoft 365 Connectors and Webhooks

This chapter covers Microsoft 365 Connectors and Webhooks, two mechanisms that enable external services to integrate with Microsoft 365 by sending notifications or triggering workflows. For the MS-900 exam, approximately 5-10% of questions touch on integration topics, including connectors and webhooks. Understanding these concepts is crucial for demonstrating knowledge of Microsoft 365 extensibility and automation capabilities, which are key to productivity scenarios.

25 min read
Intermediate
Updated May 31, 2026

The Office Mailroom and Pager System

Imagine a large office building with hundreds of employees. Each employee has a desk phone with a direct extension, but there is also a central mailroom that receives all external packages and messages. The mailroom has a pager system that can broadcast short alerts to all employees. When a package arrives for a specific person, the mailroom clerk can either hand-deliver it (like a direct API call) or send a broadcast page saying 'Package for John in Accounting, come to the mailroom' (like a webhook). Now, suppose the company wants to automate notifications: when a new shipment arrives, the mailroom sends a page to the entire building. But that's noisy and inefficient. Instead, they set up a rule: for urgent packages, the mailroom sends a direct page only to the recipient's desk phone. This is like configuring a connector: you define a trigger (package arrival) and an action (page specific extension). The mailroom doesn't need to know how each department's internal phone system works; it just sends a standardized message to the phone switch, which then routes it. This is the essence of connectors and webhooks: they allow different systems to communicate without custom integrations, using standard HTTP-based triggers and actions. The mailroom's pager system is the webhook endpoint—it waits for a POST request (the package notification) and then performs the action. The mailroom's rule book is the connector configuration—it defines what trigger maps to what action, including any data transformation (like converting a tracking number into a department code).

How It Actually Works

What Are Connectors and Webhooks?

Connectors and webhooks are two complementary technologies that allow Microsoft 365 to receive data from external services and send data to external services. They are fundamental to building automated workflows and integrations without writing custom code. The MS-900 exam tests your understanding of their purpose, configuration, and limitations.

Webhooks are HTTP callbacks: an external service sends an HTTP POST request to a predefined URL when a specific event occurs. In Microsoft 365, webhooks are used to receive notifications from external systems into groups, Teams channels, or other endpoints. For example, a monitoring tool can send a webhook to a Teams channel when a server goes down.

Connectors are pre-built wrappers around webhooks that simplify configuration. They provide a user interface to define triggers and actions without needing to write the HTTP request manually. Microsoft 365 offers both built-in connectors (like the Office 365 Outlook connector) and the ability to create custom connectors for your own services.

How They Work Internally

At the protocol level, a webhook is simply an HTTP POST request sent to a specific endpoint URL. The request body is typically JSON or XML. In Microsoft 365, the endpoint is a URL generated by the target (e.g., a Teams channel's webhook URL). The flow:

1.

An external service (e.g., GitHub, Twitter, a monitoring system) detects an event.

2.

The service constructs an HTTP POST request with relevant data in the body.

3.

The request is sent to the webhook URL provided by Microsoft 365.

4.

Microsoft 365 receives the request, validates it (e.g., checks for a secret token), and processes it.

5.

The message is displayed in the target (e.g., a Teams channel as a card).

Connectors abstract this process. When you configure a connector in the Microsoft 365 admin center or within a Teams channel, you are essentially setting up a webhook endpoint and defining the message format. The connector may also include authentication (e.g., OAuth) and data transformation.

Key Components, Values, and Defaults

Webhook URL: A unique HTTPS URL generated by the target (e.g., https://outlook.office.com/webhook/...). This URL must be kept secret to prevent unauthorized messages.

Secret Token: An optional string used to sign the request. The external service includes a hash of the token in the request headers; Microsoft 365 verifies it to ensure the request is from a trusted source.

Message Format: Most connectors expect a specific JSON schema. For example, Office 365 connectors use the "Actionable Message Card" format with fields like @type, summary, title, sections, and potentialAction.

Rate Limits: Microsoft 365 imposes rate limits on incoming webhooks. For Teams, the limit is 4 requests per second per webhook URL. Exceeding this may result in throttling (HTTP 429).

Timeout: The external service should expect a response within 30 seconds; otherwise, the connection may be dropped.

Configuration and Verification

To create a webhook in a Teams channel:

1.

Navigate to the desired channel.

2.

Click "..." (More options) > Connectors.

3.

Search for "Incoming Webhook" and click Configure.

4.

Provide a name and optionally upload an image.

5.

Click Create. A unique URL is generated.

6.

Copy the URL and use it in your external service.

To test the webhook, you can use a tool like curl:

curl -H "Content-Type: application/json" -d '{"text": "Hello from curl"}' <your_webhook_url>

For connectors with more complex logic, you may use Power Automate, which provides a graphical interface to define triggers and actions. Power Automate connectors can use webhooks internally.

Interaction with Related Technologies

Power Automate: Provides hundreds of pre-built connectors (e.g., Twitter, SharePoint, Salesforce) that can trigger flows when events occur. These connectors often use webhooks or polling.

Microsoft Graph: Provides a unified API to interact with Microsoft 365 data. Webhooks can be used with Microsoft Graph to receive change notifications (e.g., when a user's email changes).

Teams: Incoming webhooks post messages to channels. Outgoing webhooks (deprecated) allowed Teams to send messages to external services.

Azure Logic Apps: Similar to Power Automate but with enterprise features. Logic Apps can both receive and send webhooks.

Security Considerations

URL Secrecy: Anyone with the webhook URL can post messages. Keep it confidential.

Validation: Always use a secret token and validate the HMAC signature on the receiving end (if supported).

HTTPS Only: Microsoft 365 only accepts HTTPS webhooks.

IP Ranges: External services should be aware of Microsoft 365's IP ranges for outbound connections, though for incoming webhooks, the external service's IP is what matters.

Exam-Relevant Details

Connectors vs. Webhooks: Connectors are user-friendly wrappers; webhooks are raw HTTP endpoints. The exam may ask which to use for a given scenario.

Incoming vs. Outgoing Webhooks: Incoming webhooks bring data into Microsoft 365; outgoing webhooks send data out (deprecated in Teams but still used in some contexts). The exam focuses on incoming webhooks.

Power Automate Connectors: The exam expects you to know that Power Automate provides connectors for hundreds of services and that these connectors can be triggered by events or schedules.

Custom Connectors: You can build custom connectors for your own APIs using Power Automate or Azure Logic Apps.

Common Pitfalls

Assuming webhooks are real-time: While webhooks are near-instant, there is no guaranteed delivery; the external service may retry on failure.

Confusing connectors with add-ins: Connectors are for external data; add-ins extend Office client functionality.

Ignoring rate limits: Sending too many requests can cause throttling.

Summary of Technical Specifications

Protocol: HTTPS (TLS 1.2 or higher)

Method: POST

Content-Type: application/json (most common)

Authentication: Via URL (secret) or OAuth (for some connectors)

Retry: Depends on external service; Microsoft 365 does not retry on failure.

Payload Size: Max 28 KB for Teams incoming webhooks.

Headers: Content-Type, optionally Authorization or custom headers.

Example: Posting a Simple Message to Teams

Using curl:

curl -X POST -H "Content-Type: application/json" -d '{
  "@type": "MessageCard",
  "@context": "http://schema.org/extensions",
  "summary": "Test message",
  "title": "Alert",
  "text": "This is a test message from curl."
}' https://outlook.office.com/webhook/...

The message appears as a card in the Teams channel.

Conclusion

Connectors and webhooks are lightweight integration tools that enable Microsoft 365 to receive data from external systems. They are simple to set up but have security and rate-limit considerations. The MS-900 exam tests your ability to identify when to use them and how they differ from other integration methods like Power Automate or Microsoft Graph.

Walk-Through

1

Identify Integration Need

First, determine what external service you want to integrate with Microsoft 365. For example, you want to post notifications from a monitoring system (like Nagios) to a Teams channel. This step involves understanding the event trigger (e.g., server down) and the desired action (e.g., post message). No technical action is taken yet; this is a planning step.

2

Choose Connector or Webhook

Decide whether to use a pre-built connector (available in Power Automate or Teams) or a raw webhook. If the external service supports sending webhooks directly, a raw webhook is simpler. If you need to transform data or combine multiple actions, use a connector in Power Automate. For MS-900, know that connectors are easier for non-developers.

3

Generate Webhook URL

In Teams, navigate to the channel, select Connectors, and add an Incoming Webhook. Give it a name and optionally an icon. Click Create to generate a unique HTTPS URL. Copy this URL immediately; it will not be shown again. This URL is the endpoint to which external services will POST data.

4

Configure External Service

In your external service (e.g., Nagios, GitHub, Jenkins), configure a webhook notification. Provide the URL from step 3. You may also need to set a secret token for security. The external service will then send an HTTP POST request to the URL when the defined event occurs. The request body must match the expected format (e.g., MessageCard JSON for Teams).

5

Test and Validate

Trigger the event in the external service (e.g., simulate a server down) and verify that the message appears in the Teams channel. Check for errors: if the message doesn't appear, ensure the webhook URL is correct, the payload format is valid, and the external service's network can reach the URL. Use tools like curl to test the webhook URL independently.

6

Monitor and Maintain

After deployment, monitor for throttling (HTTP 429) or failures. Microsoft 365 limits incoming webhooks to 4 requests per second per URL. If you exceed this, consider batching messages or using multiple webhook URLs. Also rotate the webhook URL periodically for security. Document the integration for future reference.

What This Looks Like on the Job

Scenario 1: DevOps Alerting with Jenkins and Teams

A development team uses Jenkins for CI/CD. They want build failure notifications sent to a Teams channel. They create an incoming webhook in the #build-alerts channel and configure Jenkins to send an HTTP POST to that URL on build failure. The Jenkins plugin 'Office 365 Connector' simplifies this by providing a UI to enter the webhook URL and choose message formatting. In production, they handle rate limits by using a dedicated webhook for Jenkins only, not sharing it with other services. They also include a secret token in the payload to prevent spoofing. Misconfiguration often occurs when the payload format is wrong—Teams expects a specific JSON schema; if the 'text' field is missing, the message may not appear. They also learned to set the webhook URL as a Jenkins credential to avoid exposing it in plain text in job configurations.

Scenario 2: Customer Support Integration with Zendesk

A support team uses Zendesk for ticket management. They want new high-priority tickets to appear in a Teams channel. Zendesk supports webhooks natively: they create a webhook in Zendesk targeting the Teams incoming webhook URL. They set the trigger to send when a ticket with priority 'urgent' is created. The Zendesk webhook sends JSON with ticket details; they use a Power Automate flow to transform the Zendesk format into a Teams MessageCard because Zendesk's default payload is not compatible. This adds a processing step but allows custom formatting. Scale considerations: at 1000 urgent tickets per hour, they stay well under the 4 req/s limit. They also set up a second webhook for a different channel for 'critical' tickets. A common mistake is forgetting to update the webhook URL when the channel is renamed or deleted, causing silent failures.

Scenario 3: Social Media Monitoring with Twitter to SharePoint

A marketing team wants to save tweets mentioning their brand into a SharePoint list. They use Power Automate with the Twitter connector (trigger: when a new tweet is posted) and the SharePoint connector (action: create item). This flow uses webhooks internally—Twitter sends a webhook to Power Automate, which then writes to SharePoint. No manual webhook configuration is needed. However, the Twitter connector requires a Twitter developer account and API keys. Performance: Power Automate flows have a maximum run duration of 30 days, but for real-time processing, this is fine. Misconfiguration: if the SharePoint list schema changes, the flow fails. They monitor flow runs in the Power Automate portal.

How MS-900 Actually Tests This

What MS-900 Tests on Connectors and Webhooks

The MS-900 exam objectives under 'Describe the productivity solutions of Microsoft 365' include 'describe connectors and webhooks' (Objective 2.4). Specific points tested:

Purpose: Connectors and webhooks bring external data into Microsoft 365 (e.g., into Teams, SharePoint, or Outlook).

Difference: Connectors are pre-built integrations; webhooks are raw HTTP endpoints.

Use Cases: Posting alerts, automated notifications, and data sync.

Tools: Power Automate provides connectors; Teams has built-in webhooks.

Common Wrong Answers

1.

'Connectors allow Microsoft 365 to send data to external services.' This is partially true for outgoing webhooks, but the exam focuses on incoming. Most connectors are for receiving data.

2.

'Webhooks require custom coding.' While you can use curl, many tools (like Jenkins) have plugins that make it code-free. The exam tests that webhooks are simple HTTP calls.

3.

'Connectors and webhooks are the same thing.' They are related but distinct; connectors often use webhooks underneath.

4.

'You need Power Automate to use webhooks.' False; you can use webhooks directly without Power Automate.

Specific Numbers and Terms

Incoming Webhook: The term used in Teams for a webhook that posts messages.

Outgoing Webhook: Deprecated in Teams but still exists; sends data out.

MessageCard: The JSON format used by Office 365 connectors (also called Actionable Message Card).

Rate Limit: 4 requests per second per webhook URL (Teams).

Max Payload Size: 28 KB for Teams incoming webhooks.

Edge Cases

Security: If a webhook URL is exposed, anyone can post messages. The exam may ask about best practices (keep it secret, use HTTPS).

Deprecation: Outgoing webhooks in Teams are deprecated; the exam may test that you should use Power Automate or bots instead.

Power Automate vs. Webhooks: Power Automate provides a graphical interface and more logic; webhooks are simpler but less flexible.

How to Eliminate Wrong Answers

If the question asks for 'data coming into Microsoft 365 from an external service', the answer is 'incoming webhook' or 'connector'.

If the question mentions 'no-code' or 'pre-built', it's likely a connector.

If the question involves 'HTTP POST' or 'URL', it's a webhook.

If the question is about 'sending data out of Microsoft 365', consider 'outgoing webhook' (deprecated) or 'Power Automate'.

Exam Tips

Read the scenario carefully: Is the data coming in or going out? Is the integration with a specific service (like Twitter) that has a pre-built connector? If yes, choose connector.

Remember that connectors can be used in Power Automate, Teams, and SharePoint.

Know that webhooks are a fundamental technology; connectors are a higher-level abstraction.

Be aware that Microsoft Graph webhooks are a separate topic but related; the exam may not test that deeply.

Key Takeaways

Connectors and webhooks enable external services to send data into Microsoft 365 without custom code.

An incoming webhook is a URL that accepts HTTP POST requests and posts the data to a target like a Teams channel.

Connectors are pre-built integrations that often use webhooks internally, providing a user-friendly configuration experience.

Teams incoming webhooks have a rate limit of 4 requests per second per URL and a max payload size of 28 KB.

Outgoing webhooks in Teams are deprecated; use Power Automate or bots instead.

Always keep webhook URLs secret and use HTTPS to prevent unauthorized access.

Power Automate provides hundreds of connectors for services like Twitter, Salesforce, and SharePoint, enabling complex automated workflows.

Easy to Mix Up

These come up on the exam all the time. Here's how to tell them apart.

Incoming Webhook

Simple HTTP POST endpoint

No graphical interface; requires manual payload formatting

Limited to posting messages (e.g., to Teams channel)

No built-in retry or error handling

Best for simple, one-way notifications

Power Automate Connector

Pre-built integration with hundreds of services

Graphical designer with triggers and actions

Can perform complex logic (e.g., transform data, create files)

Includes retry policies, error handling, and logging

Best for multi-step workflows and data transformation

Watch Out for These

Mistake

Connectors and webhooks are the same thing.

Correct

Connectors are pre-built integrations that often use webhooks internally, but they provide a user interface and additional features like authentication and data transformation. Webhooks are raw HTTP endpoints that require manual configuration.

Mistake

Webhooks can only be used with Teams.

Correct

Webhooks can be used with many Microsoft 365 services, including SharePoint, Outlook, and Power Automate. Teams is just one common use case.

Mistake

You must use Power Automate to set up a webhook.

Correct

Power Automate is not required. You can set up a webhook directly in Teams or SharePoint without any flow. Power Automate is used for more complex integrations.

Mistake

Webhooks provide real-time guaranteed delivery.

Correct

Webhooks are near real-time but not guaranteed. The external service may retry on failure, but Microsoft 365 does not acknowledge delivery. There is no built-in retry mechanism from Microsoft's side.

Mistake

Outgoing webhooks are the recommended way to send data from Teams to external services.

Correct

Outgoing webhooks in Teams are deprecated. Microsoft recommends using Power Automate, bots, or Microsoft Graph for sending data out of Teams.

Do You Actually Know This?

Reveal each answer, then mark whether you got it right. Score 60%+ to unlock the next chapter.

Frequently Asked Questions

What is the difference between a connector and a webhook in Microsoft 365?

A webhook is a raw HTTP endpoint that accepts POST requests from external services. A connector is a pre-built integration that wraps a webhook (or other API) with a graphical interface, authentication, and data transformation. For example, the 'Incoming Webhook' connector in Teams creates a webhook URL and formats the message as a card. Connectors are easier to use for non-developers, while webhooks require manual HTTP request construction.

Can I use webhooks to send data from Microsoft 365 to an external service?

Yes, but outgoing webhooks in Teams are deprecated. Instead, you should use Power Automate, which can send HTTP requests to external services via the 'HTTP' connector or use service-specific connectors. Alternatively, you can use Microsoft Graph to subscribe to change notifications and send data to your own webhook endpoint.

How do I secure a webhook in Microsoft 365?

Keep the webhook URL secret—anyone with the URL can post messages. Some connectors support a secret token: the external service includes a hash of the token in the request, and Microsoft 365 validates it. Always use HTTPS. For critical integrations, consider using Power Automate with OAuth authentication.

What is the maximum payload size for a Teams incoming webhook?

The maximum payload size is 28 KB. If your message exceeds this, you need to truncate or split the data. Also, the rate limit is 4 requests per second per webhook URL.

Do I need a Microsoft 365 subscription to use webhooks?

Yes, you need a Microsoft 365 subscription that includes Teams, SharePoint, or other services that support webhooks. The webhook feature is available in most business and enterprise plans.

How do I test a webhook URL?

You can use a tool like curl or Postman to send a POST request to the webhook URL with a sample JSON payload. For Teams, use the MessageCard format. Example: curl -X POST -H 'Content-Type: application/json' -d '{"text": "Test"}' <webhook_url>. If successful, the message appears in the channel.

What happens if I exceed the webhook rate limit?

Microsoft 365 responds with HTTP 429 (Too Many Requests). The external service should implement retry logic with exponential backoff. To avoid throttling, consider batching messages or using multiple webhook URLs.

Terms Worth Knowing

Ready to put this to the test?

You've just covered Microsoft 365 Connectors and Webhooks — now see how well it sticks with free MS-900 practice questions. Full explanations included, no account needed.

Done with this chapter?