How to Troubleshoot Microsoft Copilot for Sales
Why This Is Happening
I've seen this exact scenario play out dozens of times: a sales rep opens Outlook on a Tuesday morning, ready to fire off follow-up emails using their AI-assisted summaries, and the Microsoft Copilot for Sales panel just… isn't there. Or it shows up but the CRM fields are blank, the contact cards don't load, and the "Save to Dynamics" button throws a generic error with no useful message. Frustrating doesn't even begin to cover it , especially when leadership has already counted on this tool to cut down manual data entry and your pipeline review is in two hours.
Copilot for Sales (formerly called Viva Sales, then Microsoft Sales Copilot , yes, the rebranding has been a lot) is genuinely powerful when it works. It sits inside Outlook and Teams, reads your email threads and meeting notes, suggests CRM record updates, and generates AI-drafted email content tied directly to Dynamics 365 or Salesforce. But it's also a layered system with a surprising number of dependencies, and each layer is its own potential failure point.
Here's what's actually going wrong under the hood. Copilot for Sales relies on a Microsoft 365 add-in architecture (COM-based for desktop Outlook, web manifest for Outlook on the web), an OAuth connection to your CRM environment, Microsoft Graph API calls for calendar and email access, and the Copilot AI backend which itself has regional availability requirements. Any one of those connections breaking silently will produce an error that looks the same from the outside: a blank panel, a spinning loader that never resolves, or a vague "Something went wrong" toast notification.
The most common root causes I see in enterprise environments are: expired OAuth tokens between the add-in and your CRM tenant, admin-blocked add-in deployments through Exchange or Microsoft 365 admin policies, missing or misconfigured Copilot for Sales licenses (separate from your Microsoft 365 E3/E5 license, people miss this constantly), browser security settings blocking the authentication redirect, and Dynamics 365 environment URL mismatches where the add-in is still pointed at a sandbox URL that no longer exists.
Microsoft's own error messages don't help. "We're having trouble connecting" tells you nothing. The add-in doesn't surface the HTTP status codes or Graph API errors happening behind the scenes. That's exactly why this guide exists, to dig into the actual failure points that the UI won't tell you about. Browse all Microsoft fix guides →
The Quick Fix, Try This First
Before you go deep into diagnostics, do this. It resolves about 60% of Copilot for Sales issues in my experience and takes under five minutes.
First, sign out of the add-in completely and sign back in. This sounds embarrassingly simple, but token expiration is the single most common cause of broken Copilot for Sales sessions. Open Outlook (desktop or web), click the Copilot for Sales icon in the ribbon or the right-side panel. If the panel loads at all, click the gear icon in the top-right of the panel, then select Sign out. Close the panel, wait 30 seconds, reopen it, and sign in fresh.
If the panel doesn't appear at all in desktop Outlook, go to File → Options → Add-ins. At the bottom of the dialog, where it says "Manage:", make sure "COM Add-ins" is selected and click Go…. Look for "Microsoft Copilot for Sales" or "Microsoft Viva Sales" in the list. If it's unchecked, check it and click OK. If it's not in the list at all, your admin may have pushed it through Integrated Apps, check the web version of Outlook first to confirm the add-in is actually deployed to your account.
For Outlook on the Web (OWA), go to outlook.office.com, open any email, click the three-dot menu (More actions) at the top of the reading pane, and look for Copilot for Sales in the dropdown. If you don't see it there, the add-in hasn't been deployed to your account, and this is an admin task, not something you can fix yourself.
If the panel loads but the CRM connection is broken, look for a yellow warning bar inside the panel that says something like "Reconnect to [CRM name]." Click that, go through the OAuth flow, and agree to the permissions. This re-establishes the token without requiring IT involvement.
This one trips up IT teams constantly. Copilot for Sales requires a dedicated license assigned in Microsoft 365 Admin Center, it is not included in Microsoft 365 E3, E5, or even Microsoft 365 Copilot licenses. It's a separate SKU called "Microsoft Copilot for Sales" (product code: COPILOT_FOR_SALES).
To check your own license: go to myaccount.microsoft.com, click Subscriptions, and look through the list. You need to see "Copilot for Sales" explicitly listed. If you only see Microsoft 365 Copilot or Dynamics 365 Sales, you don't have the right license and the add-in will load in a degraded state or refuse to connect to AI features entirely.
If you're an admin checking for a user: go to admin.microsoft.com → Users → Active Users, search for the affected user, click their name, and select the Licenses and apps tab. Scroll down to find "Microsoft Copilot for Sales" and make sure the checkbox is ticked. After assigning or reassigning a license, give it 15–30 minutes to propagate and then have the user sign out and back in to Outlook.
# PowerShell: Check Copilot for Sales license for a specific user
Connect-MgGraph -Scopes "User.Read.All"
$user = Get-MgUser -UserId "user@yourdomain.com" -Property "DisplayName,AssignedLicenses"
$user.AssignedLicenses | Format-List
Cross-reference the SkuId values you get back against your tenant's available SKUs using Get-MgSubscribedSku to confirm which license corresponds to Copilot for Sales. If the user's assigned licenses don't include that SkuId, that's your problem, assign the license and retest.
You'll know this step worked when the Copilot for Sales panel loads with AI features active (email summaries, suggested CRM updates, meeting prep cards) rather than showing a grayed-out or restricted interface.
If the add-in isn't showing up at all, you need to check two places: the Microsoft 365 admin center's Integrated Apps section, and the Exchange add-in policies that might be suppressing it.
As an admin, go to admin.microsoft.com → Settings → Integrated Apps. Search for "Copilot for Sales" in the app list. Click it and check the Status column, it should say "Deployed." If it says "Not deployed" or if the app isn't listed, click Get apps and deploy it from the AppSource. During deployment, make sure you assign it to specific users or groups (or Everyone) and enable both the Outlook and Teams surfaces.
There's a second place add-ins can get blocked: Exchange Organization policies. Admins sometimes configure rules that prevent users from installing or even seeing add-ins. Check this in the Exchange Admin Center:
# PowerShell: Check Exchange add-in policies
Connect-ExchangeOnline
Get-OrganizationConfig | Select-Object -ExpandProperty DefaultPublicFolderAgeLimit
# Check if user-level add-in installation is blocked
Get-OwaMailboxPolicy -Identity "OWAMailboxPolicy-Default" | Select-Object AllowedExtensions, BlockedExtensions, AdditionalStorageProvidersAvailable
If AllowedExtensions is locked down and Copilot for Sales is not explicitly allowed, that's your blocker. You'll need to either modify the OWA Mailbox Policy or push the add-in via Centralized Deployment instead of letting users self-install.
For users on a domain-joined machine with Group Policy, also check that the GPO setting "Block Add-ins" under User Configuration → Administrative Templates → Microsoft Outlook [version] → Miscellaneous is not enabled. This setting in older GPO templates blocks all VSTO and COM add-ins, which includes Copilot for Sales on the desktop client.
Success indicator: the user sees the Copilot for Sales icon in the Outlook ribbon (Home tab, right side) and the side panel opens without an error banner.
The most visually obvious Copilot for Sales failure is the broken CRM connection, the panel loads but shows blank contact cards, "No record found" on everything, or a red banner with error code 401 or 403. This is an OAuth authentication failure between the add-in and your Dynamics 365 or Salesforce org.
Inside the Copilot for Sales panel in Outlook, click the gear/settings icon (top right of the panel). Under CRM, you'll see your connected environment. If it shows a yellow triangle or a "Reconnect" prompt, click it and walk through the sign-in flow again. Make sure you're signing in with the same account that has access to the Dynamics 365 environment.
A subtler version of this problem: the OAuth connection looks fine in the UI but the Dynamics 365 environment URL has changed. This happens after tenant migrations, environment copies, or when a sandbox was promoted to production. The add-in still holds the old URL in its cached configuration.
To fix this, you need to clear the add-in's stored environment. In the Copilot for Sales panel settings, click Disconnect from CRM, confirm, then reconnect and re-enter the correct Dynamics 365 environment URL. The URL should look like https://yourorg.crm.dynamics.com, not a sandbox URL (.crm4., .crm6., etc.) unless that's intentional.
For Salesforce users: the OAuth callback URL must be registered in your Salesforce Connected App. Go to Setup → App Manager in Salesforce, find the Copilot for Sales connected app, and verify that https://teams.microsoft.com and https://outlook.office.com are both listed as valid callback URLs. Missing callbacks produce a silent 400 error in the auth flow.
You should see this message when it works: "Connected to [Your Org Name]" with a green indicator in the panel settings, and contact/account cards start populating when you open emails from known CRM contacts.
So the panel loads and the CRM is connected, but the AI features are missing, no email draft suggestions, no meeting summaries, no opportunity insights. The panel just shows raw CRM fields without any of the Copilot magic. This is a different category of problem from the connectivity issues above.
First, confirm regional availability. As of early 2026, Copilot for Sales AI features are available in North America, Europe, UK, Australia, Japan, India, and a handful of other regions, but your Microsoft 365 tenant data residency region matters. If your tenant was provisioned in a geography where Copilot AI is not yet available, the features silently don't appear. Check your tenant region at admin.microsoft.com → Settings → Org settings → Organization profile → Data location.
Second, verify that the Copilot for Sales feature flags are enabled in Dynamics 365 admin. Go to admin.powerplatform.microsoft.com, select your environment, click Settings → Features, and look for "Sales Copilot" or "Copilot" related toggles. Make sure they're turned on at the environment level, even if the license is correct, the features can be disabled at the environment level by an admin.
# Check if Copilot features are enabled in the environment settings
# Run this in Power Platform CLI
pac env list
pac env select --environment "your-env-guid"
pac solution list
Third, check the user's security role in Dynamics 365. The user needs the Salesperson security role or a custom role with read privileges on the msdyn_copilotinteraction and msdyn_salescopilotemail tables. Without these table-level permissions, the AI backend returns a silent 403 and the suggestions never appear. In Dynamics 365, go to Settings → Security → Security Roles, find the user's assigned role, and check the Custom Entities tab for those table names.
Once permissions and settings are correct, send a test email to a known contact in your CRM. When you open that email thread, you should see an "Email Summary" card and a "Suggested reply" button appear inside the Copilot for Sales panel within about 10–15 seconds.
Copilot for Sales also surfaces inside Microsoft Teams, specifically, it generates post-meeting summaries, extracts action items and CRM-relevant signals, and lets you save meeting notes directly to Dynamics. When the Teams integration breaks, you either don't see the Copilot for Sales tab inside Teams meetings, or post-meeting summaries never show up in your CRM activity feed.
Start by confirming the Copilot for Sales app is installed in Teams. Go to the Teams Apps section (left rail → Apps icon), search "Copilot for Sales," and check if it's installed. If your organization uses managed app policies, only an admin can install it, users can't self-install if the policy blocks unapproved apps. Have your Teams admin go to Teams Admin Center → Teams apps → Manage apps, find Copilot for Sales, and ensure its status is "Allowed."
For post-meeting summaries specifically: the feature requires that the meeting was recorded and that Teams meeting transcription was enabled. Go to Teams Admin Center → Meetings → Meeting policies, find the policy assigned to your users, and verify that both Cloud recording and Transcription are set to "On." Without transcription, Copilot for Sales has no text to analyze and produces no summary.
# PowerShell: Check Teams meeting policy for transcription
Connect-MicrosoftTeams
Get-CsTeamsMeetingPolicy -Identity "Global" | Select-Object AllowTranscription, AllowCloudRecording
If transcription is enabled but summaries still don't appear in Dynamics 365 after meetings, check the Copilot for Sales app's data sync. Inside the Teams app, go to Settings and look for the CRM connection status. The same OAuth token issue from Step 3 applies here, if the Teams app has a stale token, it can collect the meeting data but fail to write it to Dynamics. Disconnect and reconnect the CRM from within the Teams app settings.
You'll know the integration is healthy when, within 5–10 minutes of a meeting ending, you see a "Meeting summary ready" notification in the Copilot for Sales Teams app, and the meeting activity appears on the related Dynamics 365 contact or opportunity record automatically.
Advanced Troubleshooting
If you've worked through all five steps and things are still broken, it's time to get into the diagnostic layer that Microsoft support will ask you about anyway. Let's skip the back-and-forth and get there now.
Event Viewer Analysis: On the user's Windows machine, open Event Viewer and navigate to Applications and Services Logs → Microsoft → Windows → User Device Registration → Admin. If you're seeing Event ID 304 or 360, the device isn't properly Azure AD joined or hybrid-joined, and this will break the SSO token flow that Copilot for Sales depends on. Similarly, check Application logs and filter for Source = "Microsoft Office", COM add-in crashes show up here with error codes you can actually Google.
Browser Console for OWA Issues: If the problem is in Outlook Web Access, open the browser developer tools (F12 in Edge or Chrome) and reproduce the error while watching the Console and Network tabs. Look for failed XHR requests to api.teams.microsoft.com, substrate.office.com, or api.crm.dynamics.com. HTTP 401 errors confirm auth token issues. HTTP 429 means you're being throttled, likely a sign that something is hammering the API endpoint.
Conditional Access Policy Conflicts: In enterprise environments, Conditional Access policies can block the specific OAuth flows that Copilot for Sales uses. Go to Entra Admin Center (entra.microsoft.com) → Protection → Conditional Access → Sign-in logs and filter for the affected user. Look for failed sign-in events from application "Microsoft Sales Copilot" or "Viva Sales." The failure reason column will tell you exactly which CA policy blocked the request. Common culprits: MFA policies that don't recognize the add-in context, device compliance policies blocking unmanaged devices, and IP-based policies that don't account for Microsoft's outbound IP ranges.
Proxy and TLS Inspection: Corporate network proxies that perform TLS inspection (SSL interception) frequently break the Copilot for Sales authentication flow because the add-in validates Microsoft's certificate chain. If your proxy is substituting its own cert, the add-in rejects the connection. Work with your network team to add exemptions for *.dynamics.com, *.microsoft.com, *.office.com, and *.teams.microsoft.com from SSL inspection. This is a very common issue in financial services and healthcare environments with strict DLP proxies.
Dynamics 365 Solution Health: In Dynamics 365, go to Settings → Solutions and look for the "MicrosoftSalesCopilot" managed solution. If it's listed but shows a warning icon, the solution may have incomplete dependencies or a failed update. Try running a Solution Checker on it. A corrupted solution layer will break CRM write operations even if read operations seem to work.
Fiddler / Network Capture for Deep Issues: For cases where everything looks right on the surface but still fails, run a Fiddler trace (or use the Network tab in F12 tools) while reproducing the error. Filter for requests containing "salesperson" or "salescopilot" in the URL. Failed 500-level responses from substrate.office.com indicate backend service issues, at that point, you're looking at a Microsoft-side incident, and checking the Microsoft 365 Service Health dashboard is your next move.
Prevention & Best Practices
Getting Copilot for Sales working is one thing. Keeping it working across a sales team of 50, 500, or 5,000 people is a different challenge entirely. Here's what I recommend to IT teams who want to avoid a flood of helpdesk tickets every time Microsoft pushes an update.
Automate license assignment: Don't rely on manual license assignment for Copilot for Sales. Set up dynamic Microsoft 365 group membership rules in Entra ID (Azure AD) that automatically assign the Copilot for Sales license when a user is added to the "Sales" department group. This prevents the situation where new hires go two weeks without AI features because someone forgot to tick a box.
Pin the add-in to all relevant surfaces: In Microsoft 365 Admin Center under Integrated Apps, when deploying Copilot for Sales, use the "Fixed" pinning position rather than letting users manage it themselves. This ensures it appears consistently in Outlook and Teams without users having to find and enable it. Use Teams Admin Center to pre-pin the Copilot for Sales app to the Teams sidebar for your sales group.
Establish a Conditional Access exclusion for the add-in: Create a named Conditional Access policy specifically for the Microsoft Sales Copilot application ID (9d4b13c3-f6c6-4b50-a461-4bd4dee60e21) that grants access from managed corporate devices without blocking the OAuth flow. This prevents future CA policy changes from breaking the add-in without anyone realizing it.
Document your Dynamics 365 environment URLs: Keep a maintained record of which Dynamics 365 environment URL is production vs. sandbox. Whenever an environment is renamed, migrated, or promoted, send a proactive communication to sales users so they know to update their CRM connection in Copilot for Sales. This saves a predictable spike of support tickets every time infrastructure changes happen.
Set up a monitoring alert for failed Copilot sign-ins: In Entra ID, create a Log Analytics alert rule that fires whenever there are more than 10 failed sign-in events for the Microsoft Sales Copilot app within a 15-minute window. This catches both outages and CA policy regressions early, before the helpdesk queue fills up.
- Set up Copilot for Sales license assignment as part of new hire onboarding automation, don't wait for an IT ticket
- Test the add-in in both desktop Outlook and OWA after every Microsoft 365 monthly update cycle, since Office updates sometimes reset COM add-in states
- Keep a Dynamics 365 service account specifically for Copilot for Sales OAuth, shared credentials expire and break silently
- Review Entra ID sign-in logs for the Sales Copilot app quarterly and clean up any stale Conditional Access blocks before they affect users
Frequently Asked Questions
Why does Copilot for Sales show "No records found" even though the contact is in Dynamics 365?
This almost always comes down to how the contact's email domain is stored in Dynamics. Copilot for Sales matches email addresses from Outlook threads to contact records in your CRM by the exact email address, if the contact is stored as john.smith@company.com but the email comes from jsmith@company.com, it won't match. Check the contact record in Dynamics 365 and make sure all known email variants are saved under the Email 1 and Email 2 fields. The other cause is that the user doesn't have read access to the Contact entity in their Dynamics 365 security role.
Copilot for Sales worked fine yesterday and stopped working today, what changed?
The most common overnight trigger is a Microsoft 365 or Office update that resets COM add-in states, particularly the monthly channel update that rolls out Tuesday nights. Open Outlook in safe mode (outlook.exe /safe from Run dialog) and check if Copilot for Sales appears. If it does, another COM add-in is crashing it at startup. The second most common trigger is a Conditional Access policy change or a password reset that invalidated the stored OAuth token, signing out and back in inside the panel should fix that version.
Can I use Microsoft Copilot for Sales with Salesforce instead of Dynamics 365?
Yes, Copilot for Sales officially supports Salesforce as a CRM backend. During the initial setup in the panel, you choose either Dynamics 365 or Salesforce. For Salesforce, the OAuth Connected App must be configured in your Salesforce org with the correct callback URLs for Microsoft's services, and the Copilot for Sales managed package needs to be installed from the Salesforce AppExchange. The troubleshooting steps in this guide apply equally to Salesforce connections, particularly the OAuth reconnection steps in Step 3.
The Copilot for Sales panel is there but the AI email suggestions are grayed out, why?
Grayed-out AI suggestions typically mean one of three things: your Microsoft Copilot for Sales license is assigned but the AI feature is disabled at the Power Platform environment level, your tenant region doesn't yet support AI-generated content from Copilot for Sales, or the email you have open doesn't have a matched CRM contact (Copilot uses the contact context to generate relevant suggestions). Check the Power Platform admin center under Features for your Dynamics 365 environment and make sure AI features are toggled on. Also confirm you're viewing an email from a contact that exists in your CRM.
Is there a way to see Copilot for Sales error logs without opening a Microsoft support ticket?
Yes. In Outlook Web Access, open the browser developer tools (F12), go to the Console tab, reproduce the error, and look for messages prefixed with "SalesCopilot" or "VivaSales." These surface more detail than the UI does. In the Network tab, filter for "salesperson" or "substrate.office.com", failed API calls show the HTTP status code and sometimes the response body with a specific error code. On the Dynamics 365 side, go to Settings → Customizations → Developer Resources and use the Plugin Trace Log to see server-side errors triggered by Copilot for Sales write operations to CRM.
How do I troubleshoot Copilot for Sales meeting summaries not saving to Dynamics 365?
First, confirm that Teams transcription was enabled for the meeting, without it, there's no source text for the summary. Second, check that the Copilot for Sales Teams app has an active CRM connection by opening the app and going to Settings. Third, look in Dynamics 365 at the Activity timeline of the related contact or opportunity, the meeting note should appear there within 10 minutes of the meeting ending. If it's not there, check the Dynamics 365 Plugin Trace Log for errors from the msdyn_SaveMeetingSummary plugin, which is the write operation that fails most often when security roles are misconfigured. Event ID 70011 in that log specifically indicates a privilege error.