The Troubleshooting page provides SpringServe users with a visual interpretation of their activity in realtime. This is particularly useful to help debug issues for new supply and/or demand tags that do not work as expected. This dashboard can be accessed from the settings menu or by clicking the wrench icon in the header of an object or in the action column of an index table.
Navigating the Dashboard
Real Time Debugger
The main page of the Troubleshooting dashboard begins with the 'Real time Debugger' tab. This is where you can search any of your supply and demand tags, campaigns, or partners that need troubleshooting. As you enter text in the search box a drop down list sectioned off by headers (in bold) will display. Select the object that you want to look into and hit the submit button.
To search a specific supply and demand combination, add another search box by clicking on the "+" button and then hitting "Submit". This will result in 2 search boxes:
The results of your search will display the following in the same tab:
- Object metadata including Targeting, CPM and RPM Rates, Environment, waterfall positioning, and 3rd party pixels if applicable
- Realtime events including usable and blocked or skipped requests, opportunities, errors, impressions, and completes
- A visual display of your traffic including the number of secure/Non secure requests, Environment, Player Sizes, Inventory, Country, and User Agents
Note that realtime event and inventory data is a sampling of traffic for the last 15 minutes.
Targeting icons are shown below the object name. Like in the rest of the UI, icons are highlighted in teal when targeting is on the object and dark grey when targeting is on the parent (partner and/or campaign). If applicable, parent objects are shown below the targeting icons.
For supply tags CPM Rate, RPM Floor Rate, and (Targeted) Environment are shown. Response Type is displayed for managed supply tags. In the second column, the details for the associated demand are shown: domain and player size targeting, the number of tags in the waterfall, the number of distinct tiers/prios, and the number of broadcast tags in the waterfall.
Targeting icons and the number of active supply tags are shown for Supply Partners.
Revenue metadata and (Targeted) Environment are shown in the first column. Managed demand tags display the endpoint url in the second column. If applicable, demand pixels are shown. A table also displays the number of waterfalls that the demand tag belongs to, organized by tier. The inclusion rate is the percentage of time that the demand tag is included in a waterfall. There are a number of reasons that a tag would not be included in the waterfall, including:
- Targeting Skips: targeting prevents the tag from being eligible
- Pre-Bid Skips: demand tag has pre-bid enabled and
- Evaluation Skips: round robin exclusions, a demand tag downstream blocks the request, the demand stack behind a DC demand tag is empty
The number of active demand tags, Inclusion Rate, and average position in the waterfall is shown for Campaigns.
The number of active campaigns and demand tags, as well as the inclusion rate and the average position in the waterfall is shown for demand partners.
The events container shows data for a sample of your requests over the last 15 minutes.
You can look at performance information in three ways:
- Sunburst: Hierarchy of all events listed in the tables below
- Graph: Time Series for Usable Requests, Impressions, and Fill Rate
- Table: Select events listed in the tables below, highlighted in yellow
For demand objects, you can also view data for Errors. Sunburst and Table views are available for VAST error code data.
All Requests that come into the adserver
Usable requests + skipped/blocked requests
|1||Usable Requests||Total Requests||All Requests that passed targeting and pre-bid blocking|
|2||Impressions||Usable Requests||Number of times an ad is served||JS impression + VAST only impression|
|3||Completes||Impressions||Number of times an ad reaches complete|
|Number of times the request passes supply tag targeting but does not pass targeting on any of demand tags on the waterfall|
|1||Blocked/Skipped Requests||Total Requests||All unusable requests blocked/skipped by Supply Tag, Partner, Account, and Global Blacklist targeting and Pre-Bid IVT Filtering|
|2||Pre-bid Blocks/Skips||Blocked/Skipped Requests||Sum of Blocked SpringServe and WhiteOps Pre-bid||Blocks are recorded for managed supply, Skips are recorded for DC supply|
|3||WhiteOps Blocks/Skips||Pre-bid Blocks/Skips||WhiteOps Pre-bid blocks/skips|
|3||SpringServe Blocks/Skips||Pre-bid Blocks/Skips||SpringServe internal Pre-bid blocks/skips|
|2||Targeting Blocks/Skips||Blocked/Skipped Requests||Requests blocked/skipped by targeting||Sum of all targeting blocks/skips on the supply tag, supply partner, account, and global levels|
|3||Tag: Targeting Attribute||Targeting Blocks/Skips||Requests blocked/skipped by Tag level targeting||Supply tag targeting includes: domain, app name, app bundle, selling supply tag (DC), player size, aspect ratio, user agent, country, budget, frequency cap, environment (DC), ssb fill rate|
|3||Partner: Targeting Attribute||Targeting Blocks/Skips||Requests blocked/skipped by Partner level targeting||Partner targeting includes: domain, app name, app bundle, country, budget|
|3||Account: Targeting Attribute||Targeting Blocks/Skips||Requests blocked/skipped by Account level targeting||Account targeting includes: domain, app name, app bundle, country|
|3||Global: Domain||Targeting Blocks/Skips||Requests blocked by the SpringServe Global Blacklist|
|0||Total Ad Requests||Number of times demand is considered for inclusion in a waterfall||Included Ad Requests + Skipped Ad Requests|
|1||Included Ad Requests||Total Ad Requests||Number of times demand tag is included in a waterfall|
|2||Pre-Ad VAST Errors||Included Ad Requests||Sum of VAST errors that occur before a non-empty VAST response can be returned by the demand||see VAST Error Code documentation|
|3||Individual Pre-Ad VAST Error Code||Pre-Ad VAST Errors||Requests that resulted in a VAST error before a non-empty VAST response was returned by the demand||Pre-Ad VAST error codes include: 1xx, 2xx, 3xx, 4xx, 5xx, 6xx, 900, 13xx|
|2||Ads||Included Ad Requests||Number of times demand returns a non-empty VAST response||A non-empty VAST response is required for an impression to fill|
|3||Post-Ad VAST Errors||Ads||Sum of VAST errors that occur after a non-empty VAST response is returned by the demand||see VAST Error Code documentation|
|4||Individual Post-Ad VAST Error Code||Post-Ad VAST Errors||Requests that resulted in a VAST error after a non-empty VAST response is returned by the demand||Post-Ad VAST error codes include: 403, 405|
|3||Opportunities||Ads||Number of times the demand's VPAID is initialized|
|4||Impressions||Opportunities||Number of times an ad is served||JS impression + flash impression + VAST only impression|
|5||Completes||Impressions||Number of times the ad reaches complete|
|4||Post-Opp VAST Errors||Opportunities||Sum of VAST Errors that occur after the demand's VPAID is initialized||see VAST Error Code documentation|
|5||Individual Post-Opp VAST Error Code||Post-Opp VAST Errors||Requests that resulted in a VAST error after the demand's VPAID initialized||Post-Opp VAST error codes include: 901, 15xx|
|1||Skipped Requests||Total Ad Requests||Requests that are skipped due to targeting||Sum of all targeting skips on the demand tag, campaign, and partner levels|
|2||Pre-Bid Skips||Skipped Requests||Sum of Blocked SpringServe and WhiteOps Pre-bid|
|3||WhiteOps Skips||Pre-Bid Skips||WhiteOps Pre-bid skips|
|3||SpringServe Skips||Pre-Bid Skips||SpringServe internal Pre-bid skips|
|2||Targeting Skips||Skipped Requests||All Requests skipped due to targeting||Sum of all targeting skips on the demand tag, campaign, and demand partner levels|
|3||Tag: Targeting Attribute||Targeting Skips||Requests skipped due to Demand Tag level targeting||Demand Tag targeting includes: domain, app name, app bundle, buying demand tag, player size, aspect ratio, user agent, country, state, DMA, city, postal code, budget, flight dates, frequency caps, give-up, dayparting, dynamic pricing, key-values, secure, DC, tag health|
|3||Campaign: Targeting Attribute||Targeting Skips||Requests skipped due to Campaign level targeting||Campaign targeting includes: domain, app name, app bundle, player size, aspect ratio, KPI, user agent, country, state, DMA, city, postal code, budget, flight dates, frequency caps|
|3||Partner: Targeting Attribute||Targeting Skips||Requests skipped due to Demand Partner level targeting||Demand Partner targeting includes: domain, app name, app bundle, secure, budget, flight dates, frequency caps|
|2||Evaluation Skips||Skipped Requests||Requests skipped due to waterfall evaluation rules|
|3||Max Tags||Evaluation Skips|
|3||Max Auction||Evaluation Skips||Exceeds maximum number of tags in the waterfall|
|3||Randomized||Evaluation Skips||Tag was not selected due to round robin with other tag(s) at the same priority|
|3||Empty||Evaluation Skips||The demand stack behind the demand tag was empty||DC only|
|3||Max WF Size||Evaluation Skips|
|3||Downstream||Evaluation Skips||Targeting block downstream||DC only|
|2||Open RTB Skips||Skipped Requests||Requests skipped due to Open RTB rules|
|3||RTB Excl||Open RTB Skips||Tag/domain/size/country combo matching active set in exclusions, a system used to weed out combos that never fill in order to preserve QPS|
|3||RTB No Page||Open RTB Skips||No domain passed (required for desktop/mobile web inventory)|
|3||RTB No App||Open RTB Skips||No app name or bundle passed (required for ctv/in-app inventory)|
|3||RTB QPS||Open RTB Skips||QPS limit was reached|
|3||RTB No User ID||Open RTB Skips||No user id match (most desktop/mobile web demand partners require a user id in the bid request)|
|3||RTB Dupe Demand||Open RTB Skips||Duplicate demand tag in the same waterfall|
The sunburst graph allows you to see what portion of requests are being blocked, resulting in impressions, or throwing errors. To drill down, either click on the name of level in the legend or the level in the graph itself.
Drilling down can be helpful if there is a large portion of your requests that are being blocked or if you want to know more details about what kinds of VAST error codes you are seeing.
To get back to the default view of all events, click on Total (Ad) Requests in the legend.
The Requests graph shows the ratio of secure vs. non-secure requests.
The Environment graph shows the ratio of requests from Desktop, Mobile Web, In-app, and CTV.
The default Player Sizes graph shows the ratio of declared sizes.
The dropdown menu allows you to see histograms of Player Widths and Player Heights.
You can also view a scatter plot of Aspect Ratio. In this graph, the width is shown on the x-axis and the height on the y-axis. You can zoom in on this graph by highlighting the area of interest. Zooming can be useful if there are outliers.
These 4 types of graphs are also available for Detected sizes. Note that player size can only be detected if the VPAID has initialized, so for tags will few opportunities or VAST only tags (CTV), detected data is not available.
Inventory (Top 25)
The Inventory graph shows the top 25 requesting domains or apps. Select from Domains, App Names, and App Bundles in the dropdown.
The Country graph shows the ratio of requesting countries.
The User Agents graph defaults to the ratio of Device Types.
You can also select Device Make, Operating System, and Browser from the dropdown.
The Incoming requests tab is generated if your search included a managed supply tag. This tab streams the last 100 incoming requests. You could choose to pause the stream, or continue it by clicking on the / button to the right of the search box. This tab is especially useful to see if the tags are being filled in with their correct macro data.
The Outgoing requests tab gets generated if your search included a managed demand tag. The tab streams the last 100 outgoing requests. You could choose to pause the stream, or continue it by clicking on the button to the right of the search box. This tab is especially useful to see if macros from the supply tags are correctly being passed on to the demand.