A Microsoft API that provides programmatic access to Microsoft Advertising to manage large campaigns or to integrate your marketing with other in-house systems.
Hello @Nobuyoshi Shimmen ,
Thank you for using our Microsoft Advertising Learn Q&A Platform!
I appreciate you for providing the detailed reproduction steps and for isolating the behavior across multiple accounts, date ranges, and report-column combinations.
Based on the information provided, this does not appear to be explained simply by including FinalUrlSuffix or CustomParameters in the CampaignPerformanceReport request.
Microsoft Advertising Reporting API v13 generates reports through the Reporting service, and CampaignPerformanceReportRequest is one of the supported reporting data objects. The service accepts the requested report definition through SubmitGenerateReport, after which PollGenerateReport is used to retrieve the completed report. Because you confirmed that the duplicated performance values are already present in the raw report downloaded from the Reporting service, rather than being introduced during your application's processing, further investigation at the report-generation level would be appropriate.
Your additional testing is particularly useful here:
- The issue reproduces for the same affected campaigns across three accounts.
- It occurs across both October 1–29 and November 1–4, 2026.
- Requesting both FinalUrlSuffix and CustomParameters produces paired rows.
- Requesting either URL-related column individually still produces the paired rows.
- Removing both URL-related columns reduces the row count but does not reduce impressions, clicks, and spend to the expected totals.
- An independently generated AdPerformanceReport does not show the same doubled performance for the affected campaign IDs.
The last point is important. Since removing both URL attributes does not correct the aggregate CampaignPerformanceReport metrics, simply excluding FinalUrlSuffix and CustomParameters would not be a reliable workaround for this scenario.
The historical duplicate-row case you referenced also appears materially different because the duplicate row there contained zero performance metrics, whereas your reproduction shows nonzero metrics being duplicated.
At this point, we would not recommend deduplicating or dividing the CampaignPerformanceReport metrics by two in your integration. Such a workaround could produce incorrect results for campaigns that are not affected.
Based on the current evidence, the behavior warrants backend investigation rather than a client-side URL-column adjustment. Our review team will need the private identifiers and report artifacts to determine whether the affected CampaignPerformanceReport data is being generated incorrectly and whether a backend correction or supported workaround is available.
I trust that the details shared here will partially address your inquiry. Additionally, I’ve sent you a private message requesting additional information. Please don’t hesitate to reply so I can further assist you.
Our support teams are pleased to engage in more in-depth discussions about your account through phone, chat, or email to offer review assistance, please see our support page to reach out!
Kind regards,
Marvin | Microsoft Advertising Support Specialist | 800-518-5689