Message extensions are the most overlooked productivity feature in Microsoft Teams. Instead of bouncing between apps to paste data, use the right extension for the job: Search extensions surface existing records on demand; Action extensions collect input, trigger back-end workflows, and return results via adaptive cards; Link unfurling turns pasted URLs into rich previews with instant context. The episode walks through building an action-based extension using the Teams SDK and Bot Framework to query external systems (like CRM or ticketing) and post structured, interactive results directly in chat—no context switching. You’ll also learn rollout gotchas: OAuth/SSO, permissions, privacy scope, manifest versioning, tenant-by-tenant deployment, and adoption tips. Pick the extension type that fits the workflow and Teams becomes a decision hub, not a copy-paste log.

Apple Podcasts podcast player iconSpotify podcast player iconYoutube Music podcast player iconSpreaker podcast player iconPodchaser podcast player iconAmazon Music podcast player icon

You can build a custom app in Microsoft Teams by using the right tools and following best practices. Start with a Microsoft 365 account and explore how teams benefit from apps that streamline communication. Message Extensions in Microsoft Teams boost productivity by letting you integrate data and actions into chats. Solutions like Microsoft Teams Message Extensions from m365.fm show how you can Build Custom Apps that transform workflow. Stay engaged as you learn how to create an app that fits your team's needs.

7 Surprising Facts about Building a Custom App for Microsoft Teams

  • Apps can run fully in the cloud without hosting code on Teams. You can host bots, tabs, and services on any cloud or on-premises server and integrate via Microsoft Graph and Teams endpoints.
  • Single app package supports multiple capabilities. A single Teams app package can include bots, tabs, messaging extensions, connectors, and adaptive cards, letting one app handle many scenarios.
  • Power Platform lowers the barrier to entry. You can build powerful Teams apps with Power Apps and Power Automate without writing full code, then surface them directly inside Teams.
  • Custom apps can bypass the public store. Organizations can sideload or upload apps to their tenant app catalog for internal distribution and governance without publishing publicly.
  • Adaptive Cards enable rich, interactive UIs across clients. The same adaptive card payload renders consistently in desktop, web, and mobile Teams clients, providing cross-platform interactivity.
  • Deep integration with Microsoft 365 security and compliance. Teams apps can leverage tenant-level policies, data loss prevention, and conditional access, so enterprise controls apply to custom apps too.
  • Offline and low-bandwidth experiences are possible. With caching, service workers (for web tabs), and progressive enhancement, Teams apps can provide usable experiences even with intermittent connectivity.

Key Takeaways

  • Start with a Microsoft 365 account to access the Teams developer platform.
  • Ensure your admin allows custom app uploads by adjusting settings in the Teams admin center.
  • Use Visual Studio Code and the Microsoft Teams Toolkit to simplify app development.
  • Understand the main app features: tabs for content, bots for automation, and messaging extensions for interaction.
  • Integrate Microsoft Graph to connect your app with Microsoft 365 data and enhance functionality.
  • Test your app locally using ngrok to ensure it works well before sharing it.
  • Package your app correctly with a manifest and icons before uploading it to Teams.
  • Gather user feedback regularly to improve your app and keep it relevant.

Build Custom Apps: Prerequisites

Microsoft 365 Account and Admin Setup

You need a work or school Microsoft 365 account to build custom apps for teams. This account gives you access to the microsoft teams developer platform. Admins must set policies that allow users to upload custom apps. Follow these steps to enable custom app uploads:

  1. Sign in to the Teams admin center.
  2. Go to Teams apps and select Setup policies.
  3. Add a new policy or edit an existing one.
  4. Toggle the Upload custom apps option.
  5. Save the policy and apply it to users.

These steps control who can upload custom apps in teams. If the org-wide, team-level, and user-level settings are off, users cannot upload apps directly. If all settings are on, users can upload custom apps to teams and their personal context.

Tip: Check with your IT admin to make sure you have permission to upload custom apps before you start building.

Required Tools and Software

You need several tools to build custom apps for teams. The toolkit you choose affects how quickly you can start and how easy it is to manage your project. Here is a table that shows the main tools and their purposes:

ToolPurpose
Visual Studio CodeEssential for JavaScript, TypeScript, or SharePoint Framework (SPFx) development.
Microsoft 365 Agents ToolkitSimplifies the development process by providing tools for provisioning and deploying cloud resources.
Node.jsBack-end JavaScript runtime environment necessary for app functionality.
Microsoft TeamsRequired for collaboration and testing of the app.
Recommended BrowsersDeveloper tools are available in Microsoft Edge or Google Chrome for debugging.

Visual Studio Code & Agents Toolkit

Visual Studio Code is a popular editor for building custom apps. The microsoft teams toolkit extension adds templates and debugging tools. The toolkit helps you manage your project and connect to cloud services. The Microsoft 365 Agents Toolkit makes it easier to provision resources and deploy your app.

Teams Developer Portal

The Teams Developer Portal lets you manage app manifests and test your app in teams. You can use the portal to register your app, set permissions, and upload your app for testing. The toolkit integrates with the portal to streamline these steps.

Node.js and npm

Node.js is the runtime environment for your app’s backend. npm is the package manager that installs dependencies. You need both to run and build custom apps for teams.

Development Environment Setup

Set up your development environment before you start building custom apps. Follow these steps:

  1. Install Visual Studio Code and add the microsoft teams toolkit extension.
  2. Use the toolkit to generate a simple Tab-based React web application. The teams apps generator helps you start quickly.
  3. Set up a secure tunnel with ngrok to expose your local server.
  4. Register your app in Azure Active Directory to set permissions.
  5. Complete your app manifest with all required information.
  6. Upload your app’s .zip folder to teams for testing.
  7. Each developer should add their own local app to teams to avoid overwriting changes.

Note: m365.fm offers resources and guides for developers who want to build custom apps for teams. Explore their tutorials to learn more about using the toolkit and integrating advanced features.

You now have the prerequisites to build custom apps for teams. The right toolkit and setup make the process smoother and help you create apps that boost productivity.

Microsoft Teams App Capabilities

Tabs, Bots, and Extensions

When you start building a microsoft teams app, you should understand the main features available on the microsoft teams platform. Each feature helps you solve different problems and boost your team's productivity. The table below gives you a quick overview of the main microsoft teams platform features and what they do:

App TypeFunctionality Description
Core appsBuilt-in apps that provide essential tools for teams, such as chat and file sharing.
Messaging extensionsShortcuts that let you insert content or take action on messages without leaving the conversation.
Meeting extensionsTools that add features to live meetings, like identifying participant roles or sharing meeting notes.
BotsApps that can answer questions, automate tasks, or guide users through processes in teams.
Cards and task modulesInteractive messages that help you complete tasks or share information quickly.
Activity feedsNotifications that keep you updated on important activities across your teams and channels.

You will find that tabs, bots, and message extensions are the most popular features when building a custom microsoft teams app. Tabs display web-based content right inside teams, making it easy to collaborate and discuss information. Bots help you automate workflows and respond to user requests. Message extensions let you search for information or share content without leaving the chat. You can use tabs to bring in dashboards, project management tools, or reports. Bots are great for automating repetitive tasks, such as sending reminders or collecting feedback. Message extensions work best when you want to enhance message interactions, like creating help tickets or sharing documents.

Tip: Use tabs to consolidate information from external services like Azure DevOps or Jira. Bots are ideal for automating tasks directly from chat. Message extensions make it easy to search and share information in conversations.

Choosing the Right App Type

Selecting the right app type for your microsoft teams app depends on your team's needs and the tasks you want to simplify. You should consider how your team works and what processes you want to improve. Here are some points to help you decide:

  • Use tabs if you want to make important apps or websites easy to access within teams.
  • Choose bots when you need to automate tasks or guide users through workflows.
  • Pick message extensions if you want to let users search for information or take action on messages without leaving the chat.
  • Meeting extensions are useful if your team spends a lot of time in online meetings and needs extra tools.
  • Cards and task modules help when you want to share interactive content or collect information quickly.

Custom microsoft teams apps can boost productivity in many ways. You can automate repetitive tasks, which saves time for everyone. You can create custom tabs that link to the tools your team uses most. You can also design workflows that match your business processes, making task management easier. By integrating workflows directly into teams, you reduce the need to switch between different apps. This helps your team stay focused and efficient.

You can also add your company branding to your microsoft teams app, which makes the experience feel familiar and engaging. With the right combination of microsoft teams platform features, you can build solutions that fit your organization perfectly.

Message Extensions in Microsoft Teams App

Message extensions in teams give you powerful ways to interact with information and tools without leaving your chat. You can use these features to search, share, and display data from external apps right inside your conversations. This section explains the three main types of message extensions you can add to your microsoft teams app: Search Extensions, Action Extensions, and Link Unfurling.

Type of Message ExtensionDescriptionPrimary Use Case
Search CommandLets you search an external system for information.Searching for information and embedding results into messages.
Action CommandPresents users with a modal pop-up to collect or display information.Collecting user input and inserting messages into conversations.
Link UnfurlingConverts shared links into rich previews.Enhancing information sharing and collaboration.

Search Extensions

Search extensions let you find and share information from external sources without leaving teams. You can pull up records, documents, or data from other apps and insert them directly into your chat. This feature saves you time because you do not need to switch between different windows or tools. For example, you can search your company’s CRM for a client’s details and share them in a conversation with just a few clicks.

  • Search commands connect teams to external apps using APIs.
  • You can fetch and display data from services like SharePoint, Jira, or Salesforce.
  • This integration streamlines your workflow and keeps your team focused.

With solutions like Microsoft Teams Message Extensions from m365.fm, you can set up search extensions that fit your team’s needs. These tools help you bring important data into your conversations quickly and easily.

Action Extensions

Action extensions take your teams app to the next level by letting you collect or display information through interactive pop-ups. When you use an action extension, you can fill out forms, trigger workflows, or preview content without leaving the chat. This makes it easy to capture data and share updates with your team.

Action extensions improve user interaction in teams. You can use rich cards to show information or collect feedback. For example, a sales manager can update pipeline data, or a support agent can log a new ticket, all from within the app. This approach keeps communication smooth and helps your team stay productive.

Link Unfurling

Link unfurling in teams changes the way you share information. When you paste a link into a chat, the app automatically generates a rich preview. This preview shows key details from the linked content, making it easier for your team to understand and discuss the information.

Link unfurling improves visibility and engagement. Your team can see what a link contains before clicking it. This feature supports better collaboration and helps everyone stay informed. With Microsoft Teams Message Extensions, you can customize link previews to match your organization’s needs.

Tip: Use all three types of message extensions to create a seamless experience in your microsoft teams app. You will boost productivity and make teamwork more efficient.

Building with Teams SDK and Bot Framework

When you want to build message extensions for Microsoft Teams, you need to use the Teams SDK and the Bot Framework. These tools give you everything you need to create powerful, interactive features that work right inside Teams. You can connect your app to cloud services, display live data, and let users take action without leaving their chat.

The Teams SDK helps you add Teams-specific features to your app. It gives you templates, libraries, and APIs that make development faster and easier. The Bot Framework lets you build bots and message extensions that interact with users in real time. You can use both tools together to create custom solutions for your team.

Tip: Start with the Teams Toolkit in Visual Studio Code. It guides you through setting up your project and connecting to Teams.

Here is how the process works:

  • You create a web service that handles requests from Teams. This service can connect to any cloud-hosted system, such as a CRM or ticketing tool.
  • You register your web service as a bot in the Bot Framework. This step lets your app use secure messaging and Teams features.
  • You define your app’s capabilities in the Teams app manifest. The manifest tells Teams where and how your message extension appears, such as in the compose box.
  • You choose between two main methods for building message extensions:
    • API-based: Good for simple lookups and actions.
    • Bot-based: Best for complex workflows and interactive cards.
StepWhat You DoWhy It Matters
1Build a web serviceConnects Teams to external data
2Register as a botEnables secure, real-time messaging
3Create app manifestControls how your extension appears in Teams
4Choose build methodMatches your extension to your workflow needs

With the Bot Framework, you can use adaptive cards to display rich, interactive content. For example, you can show a sales report or a support ticket update right in the chat. Users can fill out forms, trigger workflows, or view live data—all without leaving Teams.

Message extensions built this way appear in the compose box. Users can search, share, or take action with just a few clicks. You can connect to any public service, making your Teams app a central hub for your team’s work.

Note: Microsoft Teams Message Extensions from m365.fm use these same tools and methods. They show how you can bring external data and workflows into Teams, making your team more productive.

By using the Teams SDK and Bot Framework, you can build message extensions that fit your team’s needs. You make it easy for users to access information and complete tasks, all within the Teams environment.

Build a Custom App for Microsoft Teams

Focused on microsoft teams app development, here are the main advantages and disadvantages to consider when building a custom Teams app.

Pros

  • Tailored functionality: Create features and workflows specific to your organization's needs that off-the-shelf apps cannot provide.
  • Improved productivity: Integrate with internal systems (ERP, CRM, databases) to reduce context switching and streamline processes directly in Teams.
  • Branding and UX control: Maintain consistent branding, UI patterns, and user experience aligned with company standards.
  • Security and compliance: Implement organization-specific security policies, data residency, and compliance controls within your app.
  • Extensibility: Leverage Microsoft Teams capabilities—tabs, bots, messaging extensions, adaptive cards, and webhooks—for rich interactions.
  • Ownership of roadmap: Prioritize features, bug fixes, and enhancements based on user feedback without relying on third-party vendors.
  • Integration with Microsoft 365: Use Microsoft Graph, Azure services, and single sign-on to tightly integrate with your existing Microsoft ecosystem.
  • Cost efficiency at scale: Long-term savings by replacing multiple subscription tools or manual processes with a single tailored solution.

Cons

  • Development effort: Building a custom Teams app requires design, development, testing, and ongoing maintenance resources.
  • Initial cost: Upfront investment in developer time, infrastructure (Azure), and possibly external consultants can be significant.
  • Platform complexity: Navigating Teams app manifest, permission scopes, Graph API, and multiple app surfaces (desktop, web, mobile) increases complexity.
  • Security responsibility: Your organization is responsible for securing the app, handling sensitive data, and keeping dependencies up to date.
  • Governance and deployment: Managing app distribution, tenant permissions, and app lifecycle across large organizations requires governance processes.
  • Compatibility and updates: Teams platform changes and API deprecations may require ongoing updates to keep the app functioning correctly.
  • User adoption effort: Custom apps may need training, documentation, and change management to drive adoption among employees.
  • Limited third-party ecosystem: Unlike popular off-the-shelf apps, custom solutions lack a community of extensions, plugins, and marketplace integrations.

Build Custom Apps: Development Process

Build Custom Apps: Development Process

Create a Teams App Project

You start your first microsoft teams app by setting up your development environment. Visual Studio Code is the recommended editor for this process. You install the Microsoft Teams Toolkit extension, which helps you manage your project and connect to your Microsoft 365 developer account. The toolkit guides you through each step, making the development process easier.

Follow these steps to create your project:

  1. Open Visual Studio Code and install the Microsoft Teams Toolkit extension.
  2. Sign in with your Microsoft 365 developer account.
  3. Use the toolkit to create a new teams project. Choose a template that matches your needs, such as a tab, bot, or messaging extension.
  4. Customize your app’s branding, features, and user experience.
  5. Set up a repository and CI/CD pipeline in Azure DevOps for version control and automated deployment.
  6. Choose Azure App Service to host your app.
  7. Register your app in Azure Active Directory and set the required permissions.
  8. Use App Studio or the Developer Portal for Teams to generate your app manifest and package your app as a .zip file.
  9. Submit your app to teams for testing and approval.

Tip: The Microsoft Teams Toolkit handles much of the configuration for you, so you can focus on building features and improving user experience.

App Manifest and Configuration

The app manifest is a key part of your first microsoft teams app. It tells teams how your app appears and what features it offers. You can use the Microsoft 365 Agents toolkit or the Developer Portal for Teams to create and edit your manifest. These tools help you add the right capabilities, such as tabs, bots, and messaging extensions.

When you configure your app manifest, make sure to:

  • Include all required features, like tabs, bots, and messaging extensions.
  • Add two versions of your app icon (color and outline) that meet the size requirements for the Teams Store.
  • Reference the latest manifest schema to ensure compatibility with the microsoft teams platform.
  • Set permissions for any api or data integration your app needs.

The manifest file is a simple JSON document. It defines your app’s name, description, icons, and features. You package this file with your app before uploading it to teams.

Note: Always check the latest documentation for manifest schema updates. This helps your app pass the review process and work smoothly in teams.

Add Core Features

Your first microsoft teams app should include features that help your team work better. The main features you can add are tabs, bots, and messaging extensions. Each feature serves a different purpose and improves collaboration in teams.

FeatureDescription
TabDisplays web-based content in a central location for collaboration.
BotAutomates tasks and enables conversational interactions in teams.
Messaging ExtensionLets users search and share external information directly in conversations.

Custom Tabs

A tab is a powerful feature in your app. It lets you display web content, dashboards, or tools right inside teams. You can use a tab to show project status, reports, or any web-based application your team needs. Tabs help you centralize information and reduce the need to switch between different apps.

To build a tab:

  • Use the Teams Toolkit to add a tab to your project.
  • Design your tab as a web page using React, Angular, or plain HTML and JavaScript.
  • Connect your tab to external data sources or api endpoints for live updates.
  • Test your tab in teams to make sure it displays correctly and responds to user actions.

Tip: Keep your tab interface simple and focused. Use clear navigation and responsive design so your tab works well on all devices.

Bots

Bots automate tasks and provide conversational support in teams. You can build a bot to answer questions, send reminders, or guide users through workflows. Bots use the Microsoft Bot Framework and connect to teams through secure messaging.

To add a bot:

  1. Open the Teams Developer Portal and create a new app. Select "Bot" as a capability.
  2. Configure your bot with a unique ID and password.
  3. Set up your bot’s capabilities, such as sending proactive messages or responding to commands.
  4. Connect your bot to external systems using api calls.
  5. Test your bot in teams and refine its responses based on user feedback.

Bots help your team save time and stay organized. You can automate repetitive tasks and provide instant support without leaving teams.

Messaging Extensions

Messaging extensions let users interact with external data and services directly in teams conversations. You can build messaging extensions to search for information, share content, or trigger workflows. These features use api integration to connect teams with other apps.

To implement messaging extensions:

  • Use the Teams Toolkit to add a messaging extension to your project.
  • Define the commands and actions your extension will support, such as search or action commands.
  • Connect your extension to external services using api endpoints.
  • Use adaptive cards to display rich content in chat.
  • Test your messaging extension in teams to ensure it works smoothly.

Messaging extensions make it easy for users to find and share information without leaving the conversation. They improve collaboration and help your team stay focused.

Note: Microsoft Teams Message Extensions from m365.fm are a great example of how messaging extensions can transform your workflow. You can integrate external data and automate actions, all within teams.

By following these steps, you can build a first microsoft teams app that includes powerful features like tabs, bots, and messaging extensions. Each feature helps your team work smarter and collaborate more effectively. The development process becomes easier when you use the right tools and follow best practices for configuration and integration.

Integrate Microsoft Graph & APIs

You can make your Microsoft Teams app much more powerful by connecting it to Microsoft Graph and other APIs. Microsoft Graph gives you access to a wide range of data and actions across Microsoft 365. You can use these APIs to automate tasks, manage teams, and keep your app up to date with real-time information.

Here are some ways you can use Microsoft Graph and APIs in your Teams app:

  • Manage teams and channels with the /teams and /channels endpoints. You can create, update, or delete teams and channels as needed.
  • Send messages using the /chatMessage endpoint. This helps you send notifications or interact with users through bots.
  • Use event-based systems like change notifications and webhooks. These tools let your app react to real-time changes in Teams, such as new messages or updates.
  • Set up notifications by sending a POST request to the subscriptions endpoint. This keeps your app informed about important events.
  • Automate team tasks, such as creating multiple teams or channels at once, by making specific API calls.
  • Manage users and roles. You can add, update, or remove team members with API calls, making user management simple.
  • Implement security controls like Single Sign-On (SSO). This makes it easy for users to sign in and keeps your app secure.

Tip: Use Microsoft Graph to connect your Teams app to calendars, files, and other Microsoft 365 services. This integration helps your team work smarter and faster.

You can also connect to other APIs, such as your company’s CRM or ticketing system. This lets you bring in data from outside Microsoft 365 and display it in Teams. For example, you can show sales data, support tickets, or project updates right inside your app.

To get started, add the Microsoft Graph SDK to your project. Set up authentication so your app can access the data it needs. Use the Teams Toolkit in Visual Studio Code to help you manage permissions and API calls.

Local Testing

Testing your app locally is an important step before you share it with your team. Local testing helps you find and fix problems early. You can test your app by yourself or with other developers.

Follow these steps for local testing:

  1. Open Visual Studio Code and use the Teams Toolkit extension to set up your app.
  2. Start your app locally. You can access it through localhost in your browser.
  3. Set up a tunnel with ngrok. This exposes your local server to the public internet, so you can test your app inside Microsoft Teams.
  4. Add your local app to Teams. This lets you see how it works in the real Teams environment.
  5. Test your app’s features, such as tabs, bots, and messaging extensions. Make sure everything works as expected.

Each developer should add their own local app to Teams. This prevents you from overwriting changes made by other developers during testing.

You can also build an app for your own workflow automation or create one for a small group, such as your work team. Local testing gives you the chance to improve your app before you deploy it to everyone.

Note: Always test your app on different devices and screen sizes. This ensures your app looks good and works well for all users.

Custom Microsoft Teams App Deployment

App Packaging

You need to package your custom microsoft teams app before you can share it with others. This process helps teams use your app safely and ensures it works as expected. Start by creating an app manifest. The manifest describes your app’s features, permissions, and resources. Use the Microsoft 365 Agents toolkit in Visual Studio Code to help you build and configure the manifest. The toolkit gives you a template that you can customize for your needs.

After you finish the manifest, check that it matches the requirements for teams. Add your app icons and make sure they meet the size and format rules. Next, place the manifest and icons into a folder. Compress this folder into a .zip file. This .zip file is your app package. Always validate your package before moving to the next step. Validation helps you find errors early and makes the review process smoother.

Tip: Use clear version numbers in your manifest. This helps you track updates and avoid confusion when you publish new versions.

Upload and Test in Teams

You should test your custom microsoft teams app before sharing it with your whole organization. Testing helps you catch problems and improve the user experience. To upload your app, log in to the teams client with your Microsoft 365 development account. Go to the Apps section, then choose Manage your apps. Select Upload an app and pick your .zip app package.

Teams will add your custom microsoft teams app to your personal apps. Open the app to see how it works in teams. Make sure all features, like tabs, bots, and messaging extensions, function as planned. If you find any issues, update your app package and upload it again. You can repeat this process until your app works perfectly.

Before you upload, check that your app is accessible through HTTPS. Also, confirm that your teams settings allow custom app uploads. This step is important for security and smooth testing. When you test, remember that your app is sideloaded into microsoft teams. Only you and other testers can see it at this stage.

Note: Testing in teams helps you see your app in action and ensures it meets your team’s needs.

Organization App Catalog

When your custom microsoft teams app is ready, you can share it with your whole organization. Use the organization app catalog for this step. The catalog is a private store where your company can manage and distribute apps. Upload your app package to the catalog so everyone in your organization can find and use it.

Admins control which apps appear in the catalog. They can review your app for security, permissions, and compliance. Make sure your manifest lists all permissions your app needs. This helps admins approve your app faster. You can also update your app in the catalog when you release new features or fix bugs.

Tip: Keep your app documentation clear and up to date. Good instructions help users get started and reduce support requests.

After you publish to teams through the organization app catalog, your app becomes available to all users in your company. This process makes it easy to roll out new tools and improve teamwork across your organization.

Teams App Store Submission

Submitting your custom Microsoft Teams app to the Teams App Store lets users across the world discover and use your solution. You need to follow a clear process and meet specific requirements to ensure your app passes review and reaches your audience.

Start by preparing your app package. Make sure your manifest, icons, and all features work as intended. Test your app thoroughly in Teams. Fix any issues before you move forward. When you feel confident, sign in to the Teams Developer Portal. Select your app and choose the option to submit it to the Teams App Store.

You must provide detailed information about your app. This includes a clear description, screenshots, and a list of supported features. You also need to supply important links and documents. The table below shows the main requirements for Teams App Store submission:

Requirement TypeDetails
Privacy PolicyMust explain how you handle user data, describe security controls, and provide contact information. The link must work and not require users to sign in.
Terms of UseMust be specific to your app, hosted on your own website, and accessible without authentication.
Support LinksMust let users contact you without signing in. Include either a direct contact method or a support ticket system.
LocalizationMust include translation files for supported languages and list these languages in your app description.

Tip: Double-check that all links work and do not require users to log in. Broken or restricted links can delay your app’s approval.

After you submit your app, the Teams App Store team reviews it for compliance, security, and user experience. They check your privacy policy, terms of use, and support links. They also test your app’s features and look for any issues. If they find problems, they will send you feedback. You can update your app and resubmit it.

Follow these best practices to improve your chances of approval:

  • Use clear version numbers in your manifest.
  • List all permissions your app needs.
  • Make sure your app does not collect unnecessary data.
  • Provide accurate and helpful documentation.
  • Respond quickly to feedback from the review team.

Note: Submitting your app to the Teams App Store helps you reach a wider audience and build trust with users. Meeting all requirements ensures a smooth review process and a successful launch.

By following these steps and best practices, you can publish your custom Microsoft Teams app to the Teams App Store and help teams everywhere work smarter.

Teams App UI/UX Best Practices

Teams App UI/UX Best Practices

Teams Look and Feel

You want your app to feel like a natural part of teams. Consistency helps users feel comfortable and confident as they move between different features. Start by following Microsoft’s design guidelines for typography, color, and layout. Use Segoe UI for all text in your app. This font matches the rest of teams and keeps your content easy to read. Support light, dark, and high-contrast themes so everyone can use your app in their preferred mode.

You should keep your design simple. Avoid deep nesting and stick to a flat hierarchy. This makes navigation easier for everyone. Use shared tokens for color, padding, and fonts to ensure your app looks consistent with teams. Regularly audit your designs to catch any inconsistencies early. The table below summarizes the main guidelines:

AspectGuidelines
TypographyUse Segoe UI for type ramp and different font sizes to create hierarchy and ensure readability.
ColorsSupport light, dark, and high-contrast themes with specific color schemes for each.
Shape & ElevationUtilize shape and elevation to create additional hierarchy in your app.
Copy & ContentFollow Microsoft voice principles: warm, relaxed, crisp, and clear.

Tip: A simple, adaptive design helps your app blend seamlessly into teams and improves the user experience.

Accessibility

You need to make your app accessible to everyone, including people with disabilities. Add alt text to all visuals so screen readers can describe images to users who cannot see them. Use clear labels for buttons and forms. This helps users who rely on assistive technology. Teams offers built-in accessibility tools, such as Immersive Reader, which lets users customize their reading experience.

You should also support keyboard navigation. Make sure users can move through your app without a mouse. Test your app with high-contrast themes to ensure all text and controls remain visible. For meetings and messages, provide captions and allow users to change backgrounds for better visibility. These steps help everyone participate fully in teams.

  • Add alt text to images and icons.
  • Use clear, simple language for all instructions.
  • Support keyboard navigation and screen readers.
  • Test your app with different accessibility settings.

Note: Accessible design is not just a requirement—it makes your app better for everyone in teams.

Responsive Design

Your app must work well on all devices, from desktops to mobile phones. Responsive design ensures your app adapts to different screen sizes and orientations. Use flexible layouts that adjust automatically. Avoid fixed widths or heights, as these can break your app on smaller screens.

Test your app in teams on both desktop and mobile. Make sure all buttons, forms, and content remain easy to use. Use scalable icons and images that look sharp at any size. Responsive design keeps your app usable and attractive, no matter where users access teams.

  • Use flexible grids and layouts.
  • Test on multiple devices and screen sizes.
  • Make sure touch targets are large enough for mobile users.

Tip: A responsive app helps everyone stay productive in teams, whether they are at their desk or on the go.

Adaptive Cards & Fluent UI

You can create engaging and interactive experiences in your Microsoft Teams app by using Adaptive Cards and Fluent UI. These tools help you build interfaces that look modern and work well across devices. You make your app feel like a natural part of Teams when you use these technologies.

Adaptive Cards let you display rich content in messages, tabs, and bots. You design cards with JSON, which makes them easy to customize and update. Users can interact with buttons, forms, and images right inside Teams. You can show live data, collect feedback, or trigger actions without leaving the conversation.

Here are some benefits of Adaptive Cards:

  • You create interactive messages that users can respond to.
  • You display information in a clear, structured way.
  • You support actions like submitting forms or opening links.
  • You use the same card design across Teams, Outlook, and other Microsoft 365 apps.

Tip: Use Adaptive Cards to simplify workflows. For example, you can let users approve requests or update records directly from chat.

Fluent UI gives you a set of design components that match the look and feel of Microsoft Teams. You build tabs, dialogs, and forms with Fluent UI controls. These controls include buttons, text fields, dropdowns, and more. You ensure your app stays consistent with Teams by using Fluent UI.

FeatureAdaptive CardsFluent UI
PurposeInteractive messagesApp interface components
UsageBots, messaging extensionsTabs, task modules
CustomizationJSON schemaReact components
ConsistencyWorks across Microsoft 365Matches Teams design guidelines

You can combine Adaptive Cards and Fluent UI in your app. Use Adaptive Cards for messages and notifications. Use Fluent UI for building the main interface in tabs and task modules. This approach helps you deliver a seamless user experience.

To get started, add the Adaptive Cards SDK and Fluent UI library to your project. Design your cards with the Adaptive Cards Designer tool. Build your interface with Fluent UI React components. Test your app in Teams to make sure everything looks and works as expected.

Note: Microsoft Teams Message Extensions from m365.fm use Adaptive Cards to display live data and actions in chat. You can follow this example to create your own interactive cards.

You improve accessibility and responsiveness when you use Adaptive Cards and Fluent UI. Both tools support keyboard navigation and screen readers. You help all users participate fully in Teams.

You build apps faster and with fewer errors when you use these technologies. You focus on your app’s features instead of worrying about design details. You create solutions that boost productivity and make teamwork easier.

Security and Compliance in Microsoft Teams App

Security and compliance play a key role when you build a custom app for teams. You must protect user data, control access, and follow industry standards. Microsoft provides strong tools and policies to help you keep your app secure and compliant.

Authentication & Authorization

You need to make sure only the right users can access your app in teams. Microsoft Entra ID is the main service for authenticating users. You register your app in Azure AD to use these features. OAuth 2.0 is the protocol that handles authorization, so users can sign in safely and access only what they need. Modern Authentication, based on OAuth 2.0, supports multi-factor authentication and Conditional Access. These features help you block unauthorized logins and add extra layers of security.

Tip: Always enable multi-factor authentication for all users. This step protects your app from common attacks.

You should also use Conditional Access policies. These policies let you limit who can log in and from where. Review permissions often to make sure only trusted users have access.

Data Privacy

Data privacy means you control how information is shared and stored in your app. You should define clear governance for teams. Set up data security features to protect sensitive information. Share data only in the right collaboration spaces. For meetings with guests, always use the lobby to control who joins.

You can use privacy tags for documents and set data retention policies. These steps help you manage how long data stays in teams. Use eDiscovery and legal hold to find and keep important records when needed. Advanced Threat Protection and Data Loss Protection tools help you stop leaks and block threats.

  • Restrict guest access and review permissions regularly.
  • Manage data sharing and retention policies.
  • Monitor for cyber threats and create activity alerts.
  • Train your teams users on privacy best practices.
  • Delete sensitive documents when they are no longer needed.

Permissions Management

You must control what your app can do in teams. Start by listing all permissions your app needs in the manifest. Only ask for the permissions that are required. This step helps you build trust with users and admins.

Set up app management to control which apps are available to users. Audit user activity using Microsoft’s Communication Compliance policies. Make sure data is encrypted both in transit and at rest. These actions protect your app and the data inside teams.

Microsoft teams meets many compliance standards, such as HIPAA, ISO 27001, and EU Model Clauses. You can rely on these standards to show your app follows strong security rules.

Note: Review permissions and compliance settings often. This habit keeps your app secure as teams and policies change.

Maintain and Update Teams Apps

Keeping your Microsoft Teams app up to date is important for long-term success. You need to manage versions, monitor performance, and listen to your users. These steps help you deliver a reliable experience and keep your app valuable for your team.

Versioning

Versioning helps you track changes and improvements in your app. You should update the version number every time you add new features or fix bugs. This practice makes it easy for users to know which version they have. It also helps you roll back to a previous version if something goes wrong.

  • Use a simple versioning system, such as 1.0.0 for the first release.
  • Increase the middle number for new features and the last number for bug fixes.
  • Update the version in your app manifest before you upload a new package to teams.

Tip: Keep a changelog that lists updates and fixes. This helps your team understand what has changed.

Monitoring & Analytics

You need to know how your app performs in teams. Monitoring and analytics tools give you this information. You can track usage, errors, and user actions. This data helps you find problems and improve your app.

  • Use Microsoft Application Insights or Azure Monitor to collect data.
  • Set up alerts for errors or unusual activity.
  • Review analytics to see which features users like most.

A table can help you organize what to monitor:

What to MonitorWhy It Matters
App usageShows which features are popular
Error logsHelps you fix problems quickly
Performance metricsKeeps your app running smoothly

Note: Regular monitoring helps you keep your app reliable and responsive in teams.

User Feedback & Support

Listening to your users is key to making your app better. You should provide easy ways for users to share feedback or ask for help. This support builds trust and helps you spot issues early.

  • Add a feedback button or link inside your app.
  • Check reviews and comments in teams regularly.
  • Respond to questions and fix problems quickly.

You can also create a support channel in teams for your app. This gives users a place to ask questions and share ideas. When you act on feedback, you show users that you care about their experience.

Tip: Thank users for their feedback and let them know when you make changes based on their suggestions.

By following these steps, you keep your app useful and trusted in teams. Regular updates, monitoring, and support help your app grow with your team’s needs.


You now know how to build a custom app for teams using Microsoft tools. Start by setting up your environment, then add features that help your team work better. Use Message Extensions to bring data into teams and boost productivity. Test your app in teams to make sure it works well. Explore m365.fm and Microsoft resources for more ideas. Try building your own app and see how teams can become even more powerful.

Checklist: Build a Custom App for Microsoft Teams

Target keyword: microsoft teams app development

  • Define app goals, target users, and primary use cases for microsoft teams app development
  • Review Microsoft Teams platform capabilities (tabs, bots, messaging extensions, connectors, webhooks)
  • Choose app architecture: single-page app, server-side APIs, or serverless functions
  • Set up development environment: Node.js/.NET SDK, Teams Toolkit, Visual Studio Code, ngrok for local tunneling
  • Create Azure resources if needed: App Service, Azure Functions, Bot Service, Azure AD app registration, Cosmos DB/Storage
  • Register and configure app in Azure AD: application ID, client secret/certificate, redirect URIs, scopes/permissions
  • Configure Teams app manifest: app ID, version, developer info, icons, localization, valid domains
  • Implement authentication and authorization using Microsoft identity platform (OAuth 2.0, OpenID Connect)
  • Build front-end UI following Teams design guidelines and Fluent UI components
  • Implement bot and messaging capabilities using Bot Framework if needed
  • Add deep links, personal/team/channel scopes, and compose extensions as required
  • Ensure data storage and APIs follow least privilege and secure practices
  • Implement telemetry and logging (Application Insights, monitoring)
  • Validate app manifest and package app (.zip) using App Studio or Teams Developer Portal
  • Test locally with ngrok and in Teams client across desktop, web, and mobile
  • Conduct accessibility testing (WCAG) and internationalization/localization checks
  • Perform security review: vulnerability scanning, secure secrets handling, CORS, content security policy
  • Prepare documentation: installation guide, admin consent steps, user guide, troubleshooting
  • Plan app distribution: org app catalog, tenant-wide deployment, or Microsoft Teams Store submission
  • Complete Microsoft validation checklist if publishing to Teams Store (privacy, support, packaging)
  • Set up CI/CD pipeline for builds, automated tests, and deployment to Azure or hosting platform
  • Monitor post-release metrics, crash reports, and user feedback; iterate on features and fixes
  • Maintain app: update manifest versions, renew certificates/secrets, and review permissions periodically

building apps with teams toolkit for visual studio code

What is Microsoft Teams app development and why does it matter?

Microsoft Teams app development is the process of creating custom applications and integrations that run inside Microsoft Teams to extend collaboration, automate workflows, or surface data from other systems. It matters because apps and services in Teams increase productivity, centralize tools in the Teams UI, and leverage the Microsoft 365 platform to reach users directly where they work.

How do I get started to create a new teams app?

To create a new Teams app, begin by defining the scenario (tabs, bots, messaging extensions, or connectors), choose an app template or start from scratch, and use the Teams developer portal or development tools like the Teams Toolkit for Visual Studio Code or Teams Toolkit for Visual Studio. You can follow guided tutorials on Microsoft Learn to scaffold, run, and test your app locally before deploying.

What development tools and extensions should I use for building microsoft teams apps?

Common tools include Visual Studio Code with the Teams Toolkit extension, Visual Studio 2022 with the Teams Toolkit for Visual Studio, and the Teams developer portal. The toolkit for Visual Studio Code provides project templates, local debugging, and build and deploy apps workflows, while the Visual Studio extension integrates Teams development into .NET projects.

Can I build custom teams apps using Visual Studio Code and an extension?

Yes. Use the toolkit for Visual Studio Code (Visual Studio Code extension) to create apps such as tabs, bots, and messaging extensions. The extension offers create app wizards, local tunneling, and commands to build and deploy apps for Microsoft Teams, making it straightforward to build custom teams apps with web frameworks or Node/.NET backends.

What is a teams tab and when should I use it?

A Teams tab is a web-based view embedded in a Teams channel or chat that lets you surface a web app directly inside Teams. Use a teams tab to provide dashboards, forms, or workflow interfaces tied to your business processes so users can interact with your applications without leaving Teams.

How do I deploy apps for Microsoft Teams and what are the deployment options?

You can deploy apps for Microsoft Teams by packaging the app manifest and resources and publishing to the organization app catalog or Microsoft Teams Store. Tooling like the Teams Toolkit automates build and deploy steps, while enterprise scenarios can use the Microsoft 365 platform and centralized deployment via the Teams admin center or Microsoft 365 admin center.

What is the role of the Microsoft 365 platform in teams development?

The Microsoft 365 platform provides APIs, identity, and services (Graph API, SharePoint, OneDrive, Outlook) that Teams applications can use to access organizational data and capabilities. Integrating with the Microsoft 365 platform helps you build richer apps that interact with calendars, files, and users across the tenant.

Are there app templates or starters to speed up building apps for microsoft teams?

Yes. There are app templates and sample projects available through Microsoft Learn, the Teams Toolkit, and the Teams developer portal. These templates cover common scenarios like task management, polls, or approval flows and help you rapidly create a functioning prototype you can customize.

How do I test and debug applications for Microsoft Teams locally?

Use local tunneling tools and the Teams Toolkit to run your app locally and expose it to Teams for testing. The toolkit integrates with local debuggers in Visual Studio Code and Visual Studio 2022, enabling breakpoints and logs while you interact with your app in a test team or personal scope in MS Teams.

What best practices should I follow when building microsoft teams apps for enterprise use?

Follow security and compliance guidelines from Microsoft 365, use proper authentication and Graph permissions, design for accessibility, minimize permission scopes, implement telemetry, and use the Teams design guidelines. Plan for lifecycle management, app updates, and centralized deployment to ensure apps are maintainable across the organization.

Can I use .NET and Visual Studio 2022 to build and deploy apps for Microsoft Teams?

Yes. Visual Studio 2022 with the Teams Toolkit for Visual Studio supports building server-side components and web apps in .NET that integrate as tabs, bots, or APIs for your Teams application. The toolkit helps with scaffolding, local debugging, and deploying apps to Azure and publishing to Teams.

What does "build and deploy apps" mean in the Teams context and how automated can it be?

"Build and deploy apps" refers to compiling assets, packaging the Teams manifest, deploying backend services (e.g., to Azure), and publishing the app. Toolkits and CI/CD pipelines can automate these steps so you can continuously build, test, and deploy apps for Microsoft Teams with minimal manual intervention.

How do teams capabilities like bots and messaging extensions differ from tabs?

Bots enable conversational interactions via chat and channel messages, messaging extensions let users compose rich messages or query external data from the compose box, while tabs provide persistent embedded web experiences. Choose the capability that best fits your workflow: interactive UI (tabs), conversational automation (bots), or in-message integrations (messaging extensions).

What is the Teams developer portal and how does it help create apps for teams?

The Teams developer portal is a web-based tool for registering, configuring, and managing your Teams applications. It simplifies creating a new teams app, editing the app manifest, testing, and managing app packages and versioning before deploying to your organization or submitting to the Teams Store.

How can I ensure my apps built for Teams scale and remain secure?

Design for scalability by using cloud-native services, implement authentication with Azure AD, apply least-privilege permissions (Graph), validate inputs, encrypt data in transit and at rest, and monitor performance and usage via telemetry. Follow Microsoft’s security recommendations for apps and services integrated with Microsoft 365.

Can I reuse existing web applications to build a teams application?

Yes. Many existing web apps can be adapted into teams tabs by embedding them in an iframe-compliant way or exposing specific views for Teams. You may need to handle single sign-on with Microsoft accounts and adjust UI to fit the Teams experience.

What is basic teams development and when should I use it?

Basic teams development covers simple app scenarios such as static tabs or simple bots that require minimal backend logic. Use it to prototype ideas quickly or to provide lightweight integrations that enhance a team's workflows without complex infrastructure.

How do I build your app with continuous integration and deployment for Microsoft Teams?

Integrate build and deploy steps into CI/CD pipelines (GitHub Actions, Azure DevOps) to run tests, build artifacts, deploy backend services to Azure, and update the Teams app package in the app catalog. Toolkits provide CLI commands to streamline these steps and can be wired into pipeline tasks.

Where can I learn step-by-step guidance on building microsoft teams apps?

Microsoft Learn offers guided modules and learning paths for teams development, including hands-on labs for creating tabs, bots, and messaging extensions. Combine Microsoft Learn with the Teams Toolkit, developer portal, and sample repositories to get practical, end-to-end experience.

How do I submit apps built for Teams to the Teams Store or distribute them within my organization?

Package your app manifest and resources, then use the Teams developer portal or Partner Center to submit to the Teams Store. For internal distribution, upload the app package to the organization app catalog or use centralized deployment through the Teams admin center or Microsoft 365 admin center.

What skills from software development are most useful for teams development?

Skills in web development (JavaScript/TypeScript, React), backend services, REST APIs, authentication (OAuth/Azure AD), and familiarity with the Microsoft 365 platform and Graph API are highly valuable. Understanding UX design for Teams and experience with Visual Studio Code or Visual Studio 2022 and the Teams toolkits will accelerate development.

🚀 Want to be part of m365.fm?

Then stop just listening… and start showing up.

👉 Connect with me on LinkedIn and let’s make something happen:

  • 🎙️ Be a podcast guest and share your story
  • 🎧 Host your own episode (yes, seriously)
  • 💡 Pitch topics the community actually wants to hear
  • 🌍 Build your personal brand in the Microsoft 365 space

This isn’t just a podcast — it’s a platform for people who take action.

🔥 Most people wait. The best ones don’t.

👉 Connect with me on LinkedIn and send me a message:
"I want in"

Let’s build something awesome 👊

If you’ve ever wanted to cut out five different clicks just to fetch key data during a Teams chat, you’re in the right place. Message extensions are the shortcut you didn’t know you needed—but which type actually fits your workflow?Today, we’re exposing the real differences between Teams search, action, and link unfurling extensions. Plus, I’ll walk you through building an action-based one that pulls external data straight into your conversations, no context-switching required.

Why Message Extensions Are the Most Overlooked Productivity Power-Up

Everyone talks about bots and tabs in Teams. The search bar gets an entire page of tutorials. But the average user—especially outside of IT—misses what message extensions actually unlock. If you think of all the time you spend bouncing between apps, pasting in updates, or trying to grab some live data for your team, it’s easy to see why these other features get most of the attention. They’re showy. They sit in obvious places in the menu. They look interactive. But look a little closer, and you’ll realize there’s a hidden tool in plain sight that handles so much of the tedious work nobody wants to do.Let’s say your day starts with a simple request: someone in chat asks for the latest sales number, or a customer’s support history. Maybe you’re forced to open the CRM in a separate browser, dig up the record, then painstakingly copy the information back into Teams. Ten minutes gone, and that conversation has already moved on. Multiply that by five or six requests per day and you’ve basically lost an hour without even thinking about it. We’ve all been there—scrambling to keep up because the process for sharing information breaks your flow. There are tabs and bots that promise a fix, but they all seem to demand an extra step, or open another window, and soon you’re managing as many browser tabs as real conversations.Here’s the funny part: even the biggest Teams fans rarely open up the message extension menu. Most assume, “I’ll just ask the bot”—never mind that bots love to demand very specific commands, or throw an error if you phrase something the wrong way. Tabs sound good in theory but pull you into a full app view, swallowing up what’s happening in the chat. Somewhere in between, message extensions are sitting there like a Swiss Army knife. They’re not flashy, and their little icon gets overshadowed by the stack of notifications everyone is staring at instead. But when you actually need to move information from one place to another without leaving the chat window, nothing comes close.Take a sales team as an example. Every time an account manager needs to update the pipeline, it’s the same ritual—switching out of Teams, logging into Salesforce, pulling up an ID, then bouncing back to paste a number. Replace “Salesforce” with whatever system your own department clings to, and the problem is the same. For support teams, you see it when someone needs to drop in a ticket update for a customer’s incident, and suddenly they’re toggling between ServiceNow, their Outlook, Slack, and finally, back to Teams. Even project managers aren’t safe: status reports, budget numbers, or the latest deadline get lost in the scroll of half a dozen browser tabs.What’s fascinating is just how invisible message extensions are, even though Microsoft data shows the adoption rate lags far behind that of bots and tabs. Most users don’t explore that extra little more menu beside the chat box, and admin training rarely covers what extensions can do. The numbers paint a clear story: people default to whatever feature sits on the main screen, clicking anything else only when prompted or called out during onboarding. So the bulk of communication remains manual, dependent on human memory and the hope that someone pastes the right data in the right format whenever it’s needed.Maybe the biggest missed opportunity is time itself. It’s easy to hand-wave a few seconds lost copying and pasting, but context switching adds up fast. Multiple research studies put the cost of switching tasks anywhere from 20 to 30 minutes per day for heavy Teams users, a number that jumps higher in roles that depend on live information. That’s not just wasted time, it’s decision fatigue—people forget what they were working on, lose their place in a conversation, and sometimes miss a critical piece of data they were trying to share in the first place.Here’s the real question, though: if message extensions can reduce all that friction, why aren’t they at the top of every admin’s adoption list? The answer usually comes down to visibility and awareness, not usefulness. Once you get into the habit, interacting with data right inside the conversation feels natural—and the effect is immediate. With message extensions, you aren’t just dropping links; you’re letting users trigger a live data lookup, fill out a quick form, or share a customer profile, all without ever clicking away.So, if message extensions can do everything from surfacing records to spinning up interactive updates, you’re probably wondering what kinds actually exist. Because not all message extensions are created equal—and picking the right type is what determines whether your team finally gets out from under the copy-paste treadmill or just adds another button nobody uses.

Choosing the Right Tool: Comparing Search, Action, and Link Unfurling Extensions

The reality is, most Teams admins see “message extension” and assume it’s just one big monolith—turn it on, let folks explore, and call it a day. But the details matter here. Using the wrong message extension type doesn’t just create a learning curve, it builds in confusion from day one. People start expecting everything to behave like a search box, only to realize halfway through a workflow that things just…stop. Or they click a button expecting a quick preview and get a mini app trying to collect their email for the third time that day. It’s the difference between a workflow that runs smoothly, and one that has users asking, “Why can’t Teams just do what I want?”Teams groups message extensions into three flavors. First, you’ve got the search extension. This is the one you see when someone clicks the “...” below the chat box and starts typing for a record or document. Think of it like a Teams-native search with direct tie-ins: the sales rep types the customer’s name, instantly pulls up the latest deal, and shares it to chat in a couple of clicks. Then you have action extensions. These are a bit more involved. Instead of just finding something, they let users fill out a form, trigger a backend process, or gather feedback. A good example? The HR manager drops in a quick “request vacation” button, and users fill out the dates right there—submitting the form without leaving the thread. And finally, there’s link unfurling. The most “invisible” of the bunch—paste a CRM link, and instead of dumping a long blue URL into chat, Teams turns it into a rich summary with the deal stage, client name, and even a contact photo. Each looks simple in the UI. Dig deeper, and they’re solving completely different problems.Here’s where it gets tricky. If your team just needs information surfaced—for example, the latest sales lead or a recent support ticket—search extensions do the job. Instantly surfacing data, no complicated workflows. But let’s say you need to do more than surface info. Someone needs to approve a budget, create a new service request, or collect structured feedback right where the discussion is happening. That’s the territory of action extensions. They collect details, pass them to your backend, and then let you show a summary directly in chat. No separate tabs, no copy-paste. With link unfurling, the scenario is different. It’s all about making pasted links smarter. You want someone to share a CRM deal, and instead of a cold hyperlink, give that context—status, owner, priority—all displayed as soon as the link hits the chat. For a user, it feels almost magical, but for the admin, it’s a conscious choice: what experience do you want to enable?Imagine the same scenario—“I need the status of Order #4421.” With a search extension, the user types the order number, and the extension pops up with the latest info. With an action extension, maybe someone needs to file a follow-up request, attach a screenshot, or note a delivery issue—they get a mini form, submit it, and the conversation moves on. If someone pastes a URL from the order system, link unfurling kicks in, turning that bare link into a product summary or package tracking widget. Three routes to the same conversation, but three different outcomes.Now, not every type is frictionless. Permissions can trip up the rollout fast. Search and action extensions often need to connect to backend systems. That means OAuth, SSO, or—worst case—the endless “consent to this app?” popups. Data privacy enters the mix, especially when you’re pulling customer info or financial data straight into chat. The most seamless extension in the world falls flat if the security team gets nervous about leaking sensitive details, or if you forget to scope permissions tight enough for each team.Authentication can also create a hidden hurdle. Users expect instant results, but backend systems aren’t always tied into Azure AD cleanly. You end up building (and debugging) authentication logic for each service, balancing privacy, speed, and user patience. With link unfurling, the privacy challenge is different—how much should you show in the chat preview? Just a title, or the entire customer record? Set that wrong, and now users see confidential info appear where it shouldn’t.All this means that choosing the right type of message extension affects not just usability, but compliance and adoption down the road. Pick search where your users simply need a fast lookup. Deploy action extensions where input, workflow, or updates are part of the process. Roll out link unfurling when context matters more than workflows.The right message extension transforms chat from a noisy backchannel into a real decision hub. When you tailor the tool to the job, Teams isn’t just driving faster conversations—it’s powering smarter ones.That brings us to the heavy lifters: action-based message extensions. If you want to accelerate workflows and cut out manual steps, this is where the real payoff starts.

Inside the Swiss Army Knife: Building an Action-Based Message Extension That Does the Heavy Lifting

Let’s look at what actually happens in the middle of a busy Teams chat. Someone asks for a live update about a client order that just shipped, or a project manager wants the status of a critical task. Conventional wisdom tells you to open another tab, hunt for the data in a separate app, copy it all, and then alt-tab back to Teams to share the details. The reality is, by the time you’ve finished all that, half the team has checked out of the conversation. Manual copy-paste is a breeding ground for simple mistakes, like pasting the status for the wrong customer or missing the right context entirely. Bots force you into oddly specific commands, and tabs move the whole workflow away from the conversation. Neither fits the rhythm of fast, high-stakes collaboration.Action-based message extensions break that snarl of interruptions by letting you stay exactly where the conversation is happening. You don’t have to jump between windows or remember a list of trigger phrases; you just click, fill in some details, and the answer lands right in the chat thread. What you’re really building is a workflow tool that starts and finishes within the context of your Teams discussion—no extra clicks, no losing the thread.Here’s how the pieces fit together. The Microsoft Teams SDK is your starting point. It gives you the hooks to surface your extension’s button in the right places and handle the interactions with users. When someone clicks the action, Teams calls your extension, which usually sits behind a Bot Framework endpoint. The Bot Framework is where the real logic happens—it receives requests from Teams, passes along any user input, talks to your backend systems, and figures out what to send back. The adaptive card, that visually rich block you see embedded in chat, is generated in the backend and pushed back through the Bot Framework API. The SDK glues it all together so anyone can interact with the data, respond directly, or take another action, all in a two-step process that mimics natural conversation, not rigid forms.Setting up your first action extension starts with registering a new Teams app in the Azure portal. Give it a manifest, pick your icon, and define the action handlers—these are the pieces of code that trigger when a user picks your extension from the Teams compose box. The manifest file is the contract that tells Teams where your backend lives, what permissions you need, and how the extension should display. If you want to hit external services (maybe your order database or CRM), this is the place you call out the right OAuth permissions and scopes.On the backend, wiring up the Bot Framework means spinning up a simple web service. In Node.js, you might use the BotBuilder SDK; for .NET, it’s the Bot Framework SDK for C#. Your handler listens for requests Teams sends when the user activates the extension. Let’s say you have a “check order status” extension. A user clicks the extension, types in an order number, and Teams ships that info to your Bot. Your backend handler queries the order database, builds an adaptive card with live tracking details, and returns it to Teams, which inserts it right into the message thread.Why adaptive cards? Plain text gets lost in the chat sea, and pasted screenshots get out of date in no time. Adaptive cards bring structure—sections, buttons, bold highlights, even embedded images—and let users interact without ever leaving Teams. You can make the data editable: Let a manager approve a request, update a deadline, or drop a comment, right inside the card. Suddenly, the conversation isn’t just a log of what people said—it’s part of the live workflow, updated in real time and readable at a glance.It’s surprising how natural this ends up feeling. The button you add for “Order Status” becomes a muscle memory move. Within two clicks, anyone in chat—regardless of their backend access—can see the latest from the database, confirm delivery, or follow up with a client. The gap between inquiry and action closes almost overnight. You’re not waiting for someone to paste a screenshot or summarize a dozen emails. The card lands in the chat with up-to-the-minute data, and you move on. Every manual step that teams used to stumble over just fades away.Of course, this is where things start to get interesting. You’ve built a working extension on your dev tenant and impressed a handful of testers, but making it available to the entire org—or worse, across multiple tenants—raises a new set of challenges. That’s when deployment, security, and discoverability take center stage. The story changes from what’s technically possible to what scales without blowing up your admin team’s weekend. And that’s a different kind of problem, with its own set of pitfalls to navigate.

Packaging, Deploying, and Scaling: Getting Your Extension into Users’ Hands

Here’s the part most developers quietly dread: taking that shiny Teams extension you’ve polished in the dev tenant and turning it into something the entire org can use without breaking into a cold sweat over permissions or compliance. Getting apps working for a handful of users is one thing. Shipping them to hundreds—or entire partner organizations in a multi-tenant setup—is where technical details meet real-world roadblocks. It’s never just about the code. Secure packaging, compliance checks, and making sure people can actually find your app matter just as much, sometimes more.When you start packaging your extension, every little requirement along the way has ripple effects. You’ll be dealing with the Teams app manifest, which is more than a bit of required XML—it’s the literal handshake between your app and Teams. The manifest defines metadata, permissions, valid domains, endpoints, and where your extension’s icon appears. Even the icon needs care: Teams is picky about formats and sizes. Get the manifest or branding wrong and your app will fail to upload or look out of place, which instantly signals to users and security folks alike that something’s off.App permissions can trigger entire side quests of their own. Want to connect to a third-party CRM? You’ll need to specify the right OAuth scopes in the manifest—and document what data is accessed, how it’s used, and what’s surfaced back in Teams. Even a small overstep here, like requesting read/write when you only need read, can mean you end up stuck in a days-long review with the security team. Just because your app works doesn’t mean the admin center will let it through. Every permission gets scrutinized, which slows down rollout if you’re not precise.Then there’s the unglamorous friction of versioning. Once you’ve started sharing the app, updating it is about more than just pushing new code. Each new build often means tweaking the manifest, updating descriptions, icons, endpoint URLs, and making sure nobody loses data or settings on upgrade. More than once, teams have rolled out an update only to find half the feature set suddenly unreachable—or worse, messages that used to work throwing errors due to mismatched backend URLs. Consistent manifest updates, clear version history, and test deployments to scoped pilot groups help catch these bugs before your wider user base hits them.The admin experience can be a bigger pain point than any dev task. Confused users flood help desks if the app shows up in unexpected locations or if permissions are denied by default. You see this the most in organizations juggling multiple tenants—maybe you’ve started small in a sandbox tenant, but the real deployment has to cross the chasm to test, prod, and even partner environments. Each jump raises new headaches: duplicate configuration, manually uploading manifests, or tweaking permission sets for different regulatory requirements.Now, let’s talk about compliance—the kind of thing that doesn’t keep you up at night until it suddenly does. GDPR is more than a scary acronym; it’s a practical checklist if your extension handles personal data for EU users. Data residency comes into focus the second your backend leaves a given region. Then there’s authentication, which means deciding if you want Teams SSO for a quick pass or building a custom OAuth flow to hit legacy services. The SSO route is smoother for users but can quickly expose gaps in legacy integration. Meanwhile, any custom OAuth logic will need rock-solid validation and revocation flows or risk exposing data where it shouldn’t surface. Compliance reviews sometimes spot small config errors—like accepting connections from more than intended—or log files that end up outside prescribed regions.Best practices, pretty much written in admin scars, come down to a handful of habits. Keep your manifest under source control. Document every change and permission explicitly, however small. Always dry-run updates first with a small group and collect logs to see if anything quietly breaks. Set up monitoring—usage analytics and error alerting—not just for uptime, but to flag permission errors, user drop-offs, and the dreaded “no response” message in chat.There’s a case worth mentioning. One financial services company rolled out a customer lookup extension. The devs handled all the manifest details, scoped permissions tightly, and staged deployments across test and production. Early feedback flagged confusing icons and a missing error message when data wasn’t found—minor, but they slowed initial adoption until fixed. When the final, polished version went live org-wide, support tickets dropped, teams spent less time swapping between apps, and management pointed to faster customer response as a quiet win. A few teething issues aside, careful rollout planning turned what could have become a support burden into a feature users relied on daily.Done right, deployment stops being a technical hurdle and becomes a natural bridge—your extension ends up woven into every chat and workflow, quietly saving time and lifting the team. When that workflow change happens across every conversation, you start to see the real power of building for Teams extensibility. It’s a practical upgrade, not a theoretical one, and the benefits show up where the work actually lives. From here, there’s an even bigger shift to think about: how these tools reshape entire workflows and help teams get more from every chat, every day.

Conclusion

It’s easy to scroll past message extensions in Teams and never realize how much they can strip out the friction from daily work. Most people reach for bots or spin up tabs when really, the right extension at the right moment can drop exactly the info you need into the flow of conversation. If your team spends too much time jumping between tools, this isn’t about working harder—it’s about getting Teams to do more of the work for you. Try building a message extension that fits your actual workflow. And if you’ve got ideas or want more Teams automation tips, stick around.



Get full access to M365 Show - Microsoft 365 Digital Workplace Daily at m365.show/subscribe

Mirko Peters Profile Photo

Founder of m365.fm, m365.show and m365con.net

Mirko Peters is a Microsoft 365 expert, content creator, and founder of m365.fm, a platform dedicated to sharing practical insights on modern workplace technologies. His work focuses on Microsoft 365 governance, security, collaboration, and real-world implementation strategies.

Through his podcast and written content, Mirko provides hands-on guidance for IT professionals, architects, and business leaders navigating the complexities of Microsoft 365. He is known for translating complex topics into clear, actionable advice, often highlighting common mistakes and overlooked risks in real-world environments.

With a strong emphasis on community contribution and knowledge sharing, Mirko is actively building a platform that connects experts, shares experiences, and helps organizations get the most out of their Microsoft 365 investments.