Browse all topics

Teams app development for Microsoft 365 Copilot

How to build Teams apps that extend Microsoft 365 Copilot — the unified app model, message extensions, and agent extensions.

Microsoft has converged the Teams app model with the Microsoft 365 Copilot extension model. A single app manifest can deploy to Teams, Outlook, Microsoft 365 Copilot, and the broader Microsoft 365 web surface. For developers building line-of-business extensions, this unified app model is the strategic direction.

The unified manifest

The modern Teams app manifest (formerly called the Teams App manifest, now also referred to as Microsoft 365 app manifest) is a JSON document describing:

  • App identity — name, ID, version, publisher.
  • App icons and metadata.
  • Capabilities — what kinds of things the app does:
    • Bots — conversational agents.
    • Tabs — embedded web pages.
    • Message extensions — actions in the message composer and adaptive cards.
    • Static tabs — pinned personal pages.
    • Meeting extensions — surfaces inside Teams meetings.
    • Copilot agent extensions — invocable from Microsoft 365 Copilot Chat with @AgentName.
  • Permissions — which Microsoft Graph scopes the app needs.
  • Domains — which web origins the app can talk to.
  • Distribution — where the app should appear (Teams store, internal catalog, etc.).

One manifest covers all the surfaces; you don't write separate apps for Teams vs Outlook vs Copilot.

Message extensions

The most useful starting point for many integrations:

  • Search extensions — user types @AppName search-query in a Teams chat; the app returns matching results as adaptive cards.
  • Action extensions — user invokes an action from the message composer or app menu; the app runs custom logic.

Existing message extensions automatically work as Copilot extensions — they show up in Copilot Chat for invocation. The user can @AppName from inside Copilot and get the same functionality.

For a CRM integration, this means: build a message extension that searches your CRM, deploy it once, and users get CRM search in Teams chats and in Copilot Chat — same code, same manifest.

Building agent extensions

For richer AI-orchestrated experiences, build agent extensions via Copilot Studio:

  • Define knowledge sources (SharePoint, Graph connectors, custom data).
  • Define actions (Power Automate flows, custom connectors, plug-ins).
  • Configure conversation behaviour.
  • Publish as a Microsoft 365 Copilot extension.

Users invoke with @AgentName from Copilot Chat. The agent grounds on the defined knowledge and can take action via the defined connectors.

Tabs and personal apps

For embedded web experiences:

  • Tabs in Teams channels or chats — your web app embedded in an iframe inside Teams.
  • Personal apps — pinned to a user's Teams sidebar for quick access.

These have been part of the Teams app model for years. The unified manifest now lets the same tabs and personal apps appear in Outlook and the Microsoft 365 web home.

Authentication

Apps use Microsoft Entra ID for auth. The Teams app SDK handles the authentication flow:

  1. User clicks the app in Teams.
  2. SDK acquires a token via SSO if the user is already authenticated.
  3. Token is sent with API calls to your backend.
  4. Your backend validates and uses the token to call Graph or other APIs on behalf of the user.

Same identity model as any modern Microsoft 365 integration.

Distribution

Once built, the app distributes via:

  • Microsoft Teams Store — public marketplace, optionally publicly available or restricted.
  • Tenant app catalog — internal apps sideloaded by admins or developers.
  • AppSource — Microsoft's broader app marketplace.

For internal LOB apps, the tenant catalog is the right path.

Tooling

  • Microsoft 365 Toolkit (formerly Teams Toolkit) for Visual Studio Code — scaffolds projects, generates manifests, runs local development with tunnelling, deploys to test tenants.
  • Microsoft Graph SDKs for backend integration.
  • Adaptive Cards for rich card-based UIs.
  • Microsoft 365 Developer Program for a free dev tenant to test against.

When to build vs buy

For organisations considering custom app development:

  • Build when the requirement is specific to your business, no off-the-shelf app fits, and you have engineering capacity.
  • Buy when an off-the-shelf SaaS app (with native Teams / Microsoft 365 integration) covers the need.
  • Low-code instead — Power Apps and Copilot Studio handle a lot of what previously required custom development. Consider before reaching for code.

For organisations doing custom development at all, the unified app model is dramatically more efficient than the historical pattern of separate Teams apps, separate Outlook add-ins, separate Copilot extensions. One codebase, many surfaces.