[Error messages] Google Ad Manager
Challenge
While using our Google Ad Manager integration with features like check availability or submit an error message appears that is coming directly from the Google API. What does an error from the API mean and what are the best ways to handle this?
Solution:
When submitting data from ADvendio to external platforms, there are always two platforms involved. ADvendio is the system that sends data and the external platform (e.g. the AdServer) receives data. While we try to focus our application on validating the item configuration within ADvendio so that we're not sending faulty data in our requests, there are still certain cases where an error is returned and shown in our interface as well as the result email:
This can have different reasons, for example, a problem with the authentication against the external system, a missing setting in ADvendio, or you are trying something that is generally not allowed (like changing the start date of an already running position). Following we are looking at the most common error messages returned from our Google AdManager integration, what they mean, and how to prevent them.
What are the most common error cases in GAM?
With the below information, you'll be equipped with a clear understanding of GAM error messages, the reasons behind them, and the necessary steps to troubleshoot and overcome integration challenges you may encounter:
Error Message: You'll see a list of different error messages, each with its own type and wording.
Reason: We provide explanations to help you understand what caused the error message. This will give you insights into why the issue occurred.
Solution: For each error message, we offer troubleshooting steps to resolve the problem. These steps guide you toward finding a solution and getting past the error.
GAM Error Message | Reason | Solution |
---|---|---|
[UniqueError.NOT_UNIQUE @ [0].name; trigger:'...'] | There is already an order with the same name existing in GAM. | Change the Media Campaign Name (or AdServer Name of the Media Campaign) in ADvendio. |
No Salesperson "XXXX" was found. | The Salesperson you are trying to set for your Order doesn't match to a Google user. ADvendio, as a default, uses the Salesforce user as a Salesperson in Google and if you have no configuration done in ADvendio for this, the warning will be shown. This message is a warning and doesn't affect the results of the submit, your orders and items are still created. | Please read here to set your salesperson or teams. 3.5.10 Manage Teams, Ad Manager, and Trafficker. |
[UniqueError.NOT_UNIQUE @ lineItem[0].name; trigger:'ADvendio_Sport_Leaderboard' | There is already a line item with the same name existing at this Order in GAM | Change the Campaign Item Name in ADvendio or add a unique 7.3.12 Adserver Name for Campaign items. |
[ProposalLineItemProgrammaticError.ZERO_COST_PER_UNIT_NOT_SUPPORTED @ [0].costPerUnit] | Depending on the AdServer Price field selected in GAM connection settings, ADvendio will try to submit that field as price to GAM. If the selected field is empty, then the error message will be displayed when you try to submit a proposal to GAM. | To change which price gets submitted to GAM, see: 7.3.1.2 Submit Prices to the AdServerUNDEFINED |
ReservationDetailsError.COST_TYPE_NOT_ALLOWED @ costType; trigger:'CPD' | CostType (BillingCategory) CPD is only available for LineItemType (AdType), Sponsorship and Network. | Change BillingCategory or the field AdType of the object AdType. |
ReservationDetailsError.LINE_ITEM_TYPE_NOT_ALLOWED @ | Forecasts are only available for LineItemTypes Sponsorship and Standard | Change AdType.AdType or CampaignItem.AdType |
LineItemOperationError.NOT_ALLOWED | The operation is not allowed due to a lack of permissions in GAM. | Give more permissions to the GAM user. |
Ad server error, fault message: [ForecastingError.EXCEEDED_QUOTA @ ] | The number of requests made per second is too high and has exceeded the allowable limit. The recommended approach to handle this error is to wait about 5 seconds and then retry the request. Note that this does not guarantee the request will succeed. If it fails again, try increasing the wait time. Another way to mitigate this error is to limit requests to 2 per second. Once again this does not guarantee that every request will succeed, but may help reduce the number of times you receive this error. | try again |
[InventoryTargetingError.INVENTORY_UNIT_CANNOT_BE_TARGETED | A child inventory unit cannot be targeted if its ancestor inventory unit is also targeted. | Remove the children Ad Server IDs of selected Ad Units from the Ad Spec. (Or remove selected content) |
Could not upload Creative (CN-0) slot can not be parsed | The selected Slot Size at the Creative does not match with Slot Sizes of the AdServer. | Please make sure the slot sizes you've defined in your system follow this format "300x250" |
RequiredNumberError.TOO_SMALL_WITH_DETAILS @ lineItem[0].primaryGoal.units; trigger:'0'] | The primary goal (% of remaining/total impressions) set for Sponsorship, InHouse, or Network items does not fit. | Check the field Goal Percent at the Campaign Item, make sure it is not filled with 0. As default, if the field is empty 100% should be transferred to GAM. |
LineItemError.ALREADY_STARTED | When submitting to the adserver: This error happens because you have updated fields that affect delivery (i.e. targetings fields) for an Item, that is already active and delivering. There are fields like "notes" which don't affect the delivery numbers and you are be able to update those in your the line item without pausing. | To be sure not to create problems, it is safer to always pause the line item (CampaignItem > AdServer Status), make the update and then activate the line item again. |
LineItemError.ALREADY_STARTED@ LineItem[0].StartDateTime | Similar to the error above this is returned, when trying to submit changes to a Campaign Item, that has already started running. In this particular case ADvendio tries to change the starting time of the item, which is not possible. | Please check if the fields from(hour) and from(minute) match the starting time of you line item in Google AdManager. In some rare cases there can be a mismatch in those. If that is the case, please change the values in ADvendio to match the values in Google, and then the submit should work. |
Could not login to DFP: no Network Code set and more than one Network | Your GAM user name is connected to more than one network in GAM | Please enter the according network ID into the AdServer Login record in ADvendio, to make sure the correct network is used. |
Report data is only available for the last 3 years. Older Delivery Data will not be updated. (Message key: WARNING_START_DATE_TOO_LONG_AGO ) | Your Campaign Item / Line Item has a runtime longer than three years. Due to limitations in the reporting API we can only import delivery data from the last three years into ADvendio. | To ensure the reporting numbers are still correct in total, please split your Campaign Item into separate items not running longer than three years. |
Error: No key in KeyLine | There is a problem in the Keys and Values assigned to the Campaign Item (within ADvendio), resulting in incomplete information being transferred to the AdServer. This only affects the old Key Values not the new Lightning Key Value selection. | Remove all Key Values from the Campaign Item and assign them again. Try to submit the Campaign Item again. |
[NotNullError.NULL @ 0.probabilityOfClose] | Your Order is missing the probability of close. | This is only relevant for Proposal Orders/Line Items in the Ad Manager Sales module, but the field is part of the old DSM module of Google (already deprecated). DSM will be deactivated in July 2019, if you want to test our Google Ad Manager integration of proposals and programmatic guaranteed, please use a newly created test network, where the DSM functionality is already deactivated. |
Sponsorship: [FeatureError.MISSING_FEATURE @ lineItem[0].lineItemType; trigger:'LINE_ITEM_MINIMUM_QUANTITY'] Standard: [FeatureError.MISSING_FEATURE @ lineItem[0].lineItemType; trigger:'LINE_ITEM_CONTRACTED_QUANTITY'] | For both fields in GAM (Minimum Quantity and Contracted Quantity) the feature needs to be activated within GAM. If the field is set for a Sponsorship or Standard item but not activated in the network the user will receive the following error message: | For an explanation of the GAM function have a look here at contracted Units Bought (which is the API name for the two fields in GAM): GAM API Documentation |
[PrecisionError.WRONG_PRECISION @ [0].netCost; trigger:'19999929000'] | This error can appear if the amount you are pushing to GAM is either too small for the GAM calculation. Please try to submit other values within the campaign item. | If you navigate to AdServer login, under Price Information, AdServer Price field, you can choose other value e.g Adserver Price. After selecting this option, Adserver Price under Campaign item must be set. Navigate to Campaign item, under Pricing Information, Adserver Price, enter the price value.(more info follow the link). https://advendio.atlassian.net/wiki/spaces/SO/pages/101417058/7.3.1.2+Submit+Prices+to+the+AdServer |
NullPointer (a value is missing) | An ID you are using for your Item (for example as targeting criteria) is not found in Google Ad Manager and thus the item could not be submitted. Unfortunately, this error comes directly from the AdServer and leaves no indication where the problem is. | Please check the following things:
|
CrossSellError.DISTRIBUTOR_RULE_VIOLATION_WARNING | You have an agreement with Google to not submit those ads. | This warning from GAM can be suppressed if you like to avoid the cross selling warning from GAM. Mark the checkbox "skipCrossSellingRuleWarningChecks" on the line item to true to skip these warnings. These rules are applied to line items targeting inventory shared by a distributor partner for cross selling when performing any action on this line item. The default is false. |
(No Ad Server Specified or it is inactive: null) | Our Gateway can not find which AdServer it needs to communicate with. The Item you're using is maybe not connected to an AdServer. | Check two things: For your campaign item, has the connected AdType an AdServer Login entered? If that is true, is the AdServer Login in ADvendio set to active? If inactive it will be ignored from our Gateway. |
START_DATE_TIME_IS_IN_PAST @ lineItem[0].startDateTime] |
| Check two things:
|
Error: [FeatureError.MISSING_FEATURE @ [0]; trigger:'PROPOSALS_LITE'] | In our Media Campaign, the field “AdServer Order Type” has an invalid option | We need to select the correct option according to our current setup |
Error: [UniqueError.NOT_UNIQUE @ [0].name; trigger: | Media Campaign name already submitted to the adserver | We need to change to a new name our Media Campaign |
CommonError.NOT_FOUND @ lineItem[0].targeting.customTargeting | One or more Targeting Criteria you’ve selected was not found in Google AdManager, thus the push of the Line Item failed, because the intended targeting could not be set. The message also states which type of targeting failed, e.g. geo, device, audience customTargeting = Key Values | Please review the targeting criteria set in ADvendio It could be that the ID saved in ADvendio is invalid for GAM, which might mean you need to delete the related Connection ID record and import targeting of the type again. Please also consider if your User does have sufficient permissions to access targeting in GAM |
Relation between Billing Categories and Line Item Types (AdTypes)
Billing Category | Allowed AdTypes |
---|---|
CPA |
|
CPC |
|
CPD |
|
CPM |
|
Google Ad Manager Info:
These types are defined in the field AdType of the AdType referenced in your line item. For further reference read 3.1.5 Ad Type.
For most common error cases have a look here at 7.8 Troubleshooting Error Messages: Resolving Common Issues and Solutions