- Microsoft Ads in Blueprint covers campaigns, keywords with Quality Score tracking, search terms, conversion goals, and change events -- nearly on par with Google Ads.
- Account discovery uses a hybrid SOAP + REST approach, filtering to Active and Paused accounts only.
- Reports are submitted asynchronously and returned as ZIP-compressed CSVs via Azure Blob SAS URLs, with exponential backoff polling from 2 seconds to 30 seconds.
- Cost values arrive in dollars (not micros), so Blueprint multiplies by 1,000,000 for internal normalization -- the reverse of Google's conversion.
What Data Blueprint Syncs from Microsoft
Microsoft Ads is Blueprint's second-deepest integration, covering five of the six data categories available in the Google Ads integration. At the campaign level, Blueprint pulls campaign names, statuses, types, budgets, and daily spend totals. Supported campaign types include Search, Shopping, Audience, and Performance Max. DynamicSearchAds campaigns are excluded as they have been deprecated by Microsoft. Campaign data flows directly into Budget Pacing dashboards and the AI-powered anomaly detection engine, giving you the same spend tracking and alerting capabilities you get with Google Ads accounts.
Keyword-level data includes keyword text, match types, statuses, bids, and Quality Scores with all three sub-components -- the same granularity as Google Ads. Microsoft uses a slightly different rating scale for QS components: 1 means Below Average, 2 means Average, and 3 means Above Average. Blueprint normalizes these values internally so they display consistently alongside Google Ads Quality Score data on the Quality Scores dashboard. This normalization means you can compare keyword quality trends across platforms without mentally translating between different rating systems.
Search terms, conversion goals, and change events round out the Microsoft integration. Search term data is pulled with the same daily granularity and 30-day window as Google, feeding into Blueprint's n-gram analysis engine. Conversion goals are synced to ensure accurate attribution across campaigns and keywords. Change events track modifications made within the Microsoft Ads interface, supporting Blueprint's Change Impact detector. The only data category available in Google but absent from Microsoft is the full change history API -- Microsoft provides change events through a different mechanism that Blueprint normalizes to match the same Change Impact analysis workflow.
Account Discovery
Microsoft's account discovery process is more technically involved than Google's, but the experience from your perspective is identical: click Connect Microsoft Ads, sign in with your Microsoft account, and select the accounts you want to track. Behind the scenes, Blueprint uses a hybrid SOAP and REST approach because Microsoft's Advertising API has not fully migrated all endpoints to REST. The initial step uses the SOAP-based GetUser call to extract your CustomerId from the response headers. This identifier is critical because it serves as the primary key for all subsequent account queries.
With the CustomerId in hand, Blueprint switches to the REST-based SearchAccounts endpoint, passing the CustomerId as a predicate to retrieve all ad accounts associated with your profile. The results are filtered client-side to include only accounts with an Active or Paused status -- suspended, draft, or deleted accounts are excluded because they do not contain actionable data. The CustomerId is stored in Blueprint's database as the parentAccountId field, which is used for all subsequent API calls against those accounts.
One detail worth noting for agencies: if your Microsoft account manages multiple client accounts through a manager hierarchy, all of those accounts will appear during discovery. Blueprint does not need you to have a separate developer token -- Blueprint already holds an approved token for the Microsoft Advertising API. This eliminates a common pain point when migrating from tools that required you to apply for and manage your own API credentials. The entire connection process is a single click-and-authorize flow, identical in user experience to connecting a Google Ads account.
Sync Schedules and Report Handling
Blueprint uses the same seven dedicated BullMQ workers for Microsoft Ads that it uses for Google Ads, maintaining identical sync schedules across both platforms. Campaigns sync every 6 hours with chaining into dependent data types, keywords sync on a 3-day cadence with Quality Score snapshots, daily spend records sync every 6 hours, search terms sync every 7 days, change events sync every 6 hours, and conversion goals sync every 6 hours. This consistency means you get the same data freshness regardless of whether an account is on Google or Microsoft.
The key technical difference is how Microsoft returns report data. While Google Ads returns results synchronously through paginated API responses, Microsoft Ads uses an asynchronous reporting pipeline. When Blueprint requests a report -- such as a search term report or daily spend report -- it submits the report request to Microsoft's API, which returns a report ID. Blueprint then polls for the report's completion status using exponential backoff, starting at 2-second intervals and increasing to a maximum of 30 seconds between polls. The entire polling process has a 5-minute timeout; if the report is not ready within that window, the job is retried later.
Once a report is marked as complete, Microsoft provides an Azure Blob Storage SAS URL pointing to the report file. The file is always delivered as a ZIP archive containing a single CSV. Blueprint downloads the ZIP, extracts the CSV, and parses the rows into its normalized data model. One important edge case: Microsoft sometimes returns a "Success" status with no actual data rows. Blueprint handles this "Success with no data" response explicitly, treating it as a completed sync with zero new records rather than an error. This prevents false error alerts when an account genuinely had no activity during the reporting period.
Microsoft-Specific Data Differences
The most important data difference between Microsoft and Google is how cost values are represented. Google Ads returns costs in micros (multiply the dollar amount by 1,000,000), so $45.67 arrives as 45670000. Microsoft Ads does the opposite -- it returns costs in dollars, so $45.67 arrives as 45.67. Blueprint normalizes both to the same internal format by multiplying Microsoft's dollar values by 1,000,000 during ingestion. This normalization ensures that cross-platform aggregations and comparisons work correctly throughout the application. If you ever compare Blueprint's stored values against raw Microsoft API data, remember that Blueprint stores the micros-normalized version.
Impression share data also requires special handling. Microsoft returns impression share as percent strings like "45.67%" rather than decimal values. Blueprint parses these strings, strips the percent sign, and stores the value as a Decimal type for precise aggregation. Quality Score components use a numeric scale instead of text labels: 1 corresponds to Below Average, 2 to Average, and 3 to Above Average. Blueprint maps these numeric values to the same descriptive labels used for Google Ads, so the Quality Scores dashboard presents a unified view regardless of the source platform.
Campaign type handling is another area of divergence. Microsoft supports Search, Shopping, Audience, and Performance Max campaign types, all of which Blueprint tracks. DynamicSearchAds campaigns are identified and excluded during sync because Microsoft has deprecated this campaign type. If you have legacy DynamicSearchAds campaigns in your account, they will not appear in Blueprint -- this is intentional, as deprecated campaign types do not receive API support updates and their data model may become unreliable over time.
Token Management
Microsoft Ads uses Azure AD v2.0 for OAuth authentication, which is functionally similar to Google's OAuth 2.0 flow but with one critical difference in token refresh behavior. When refreshing an expired access token, Azure AD v2.0 requires the scope parameter to be included in the refresh request. Omitting this parameter results in error code AADSTS90023, which can be confusing because the initial authorization works fine without it -- the error only appears during token refresh, which happens hours or days after the initial connection.
Blueprint handles this automatically by always including the required scope parameter in token refresh requests. You do not need to worry about this technical detail -- it is mentioned here only because it is a common stumbling block for developers building Microsoft Ads integrations and explains why some third-party tools occasionally lose Microsoft connections. From your perspective, Microsoft connections behave identically to Google connections: the refresh token persists indefinitely, and Blueprint silently refreshes access tokens as needed without any manual intervention.
If you change your Microsoft account password or revoke Blueprint's access from your Microsoft account security settings, the refresh token will be invalidated. In that case, Blueprint marks the connection as ERROR and stops attempting syncs. Navigate to Settings → Connections and click Reconnect to re-authorize. No historical data is lost -- Blueprint resumes syncing from where it left off once a new token is issued.
What Microsoft Doesn't Support vs Google
The Microsoft Ads integration is very close to feature parity with Google Ads. Both platforms support campaign and keyword syncing, Quality Score tracking with all three components, search term data for n-gram analysis, daily spend records, conversion tracking, and change event data for the Change Impact detector. Impression share data is available on both platforms, feeding the Impression Share Erosion detector. For most Blueprint users, switching between Google and Microsoft accounts feels seamless because the dashboards, alerts, and analytical tools work identically regardless of the source platform.
The differences that do exist are minor. Microsoft's change event data is structured slightly differently from Google's change history, but Blueprint normalizes both into the same format for Change Impact analysis. Microsoft's async report delivery adds a small amount of latency to sync jobs compared to Google's synchronous responses, but this does not affect the overall sync schedule -- both platforms update on the same cadence. The DynamicSearchAds campaign type exclusion only affects accounts with legacy campaigns that Microsoft itself has deprecated. In practical terms, if a feature works with Google Ads data in Blueprint, it works with Microsoft Ads data too.
- Microsoft Ads covers campaigns, keywords, Quality Scores, search terms, conversion goals, and change events -- nearly identical to Google Ads.
- Account discovery uses a hybrid SOAP + REST approach, but the user experience is a single click-and-authorize flow.
- Reports are async with ZIP/CSV delivery -- Blueprint handles polling, extraction, and "Success with no data" responses automatically.
- Cost values are in dollars (not micros), so Blueprint multiplies by 1,000,000 for normalization -- the opposite of Google.
- Token refresh requires the scope parameter for Azure AD v2.0 -- Blueprint handles this automatically to prevent AADSTS90023 errors.