Increasing Mobile App Engagement

156 views
Skip to first unread message

cvit sandeep

unread,
Aug 11, 2015, 6:12:43 AM8/11/15
to AdWords API Forum, va...@innomindtech.in
Hello Adword Team,

When we adding mobile app install ad under the SEARCH(advertisingChannelType) and SEARCH_MOBILE_APP(advertisingChannelSubType) we getting error like this
"OperationAccessDenied.OPERATION_NOT_PERMITTED_FOR_CAMPAIGN_TYPE @ operations[0].operand.ad; trigger:'SEARCH(SEARCH_MOBILE_APP)". But it is fine adding under the 
DISPLAY (advertisingChannelType) and DISPLAY_MOBILE_APP (advertisingChannelSubType). How can we add mobile app install ad under search campaign?

This is the code we are using to ad

function addMobileEngagement($groupId, $appStoreText, $headlineText, $description1Text, $description2Text, $lookupId, $scheme, $hostPath, $devicePreference){
$adGroupAdServiceMobile = $this->GetService('AdGroupAdService', ADWORDS_VERSION);
// Create the template ad.
$appEngagementAd = new TemplateAd();
if($appStoreText == 'appstore'){
$appEngagementAd->displayUrl = "itunes.apple.com";
}
else{
$appEngagementAd->displayUrl = "play.google.com";
}

$appEngagementAd->name = $scheme;
$appEngagementAd->templateId = 453;
//$devicePreference = 30002;
if($devicePreference == 30002){
$appEngagementAd->devicePreference = 30001;
if($appStoreText == 'appstore'){
$appEngagementAd->finalAppUrls = new AppUrl();
$appEngagementAd->finalAppUrls->url = "ios-app://".$lookupId."/".$scheme."/".$hostPath."";  
$appEngagementAd->finalAppUrls->osType = "OS_TYPE_IOS";
}
else{
$appEngagementAd->finalAppUrls = new AppUrl();
$appEngagementAd->finalAppUrls->url = "android-app://".$lookupId."/".$scheme."/".$hostPath."";  
$appEngagementAd->finalAppUrls->osType = "OS_TYPE_ANDROID";  
}  

// Create the template elements for the ad. You can refer to
// for the list of available template fields.
$headline = new TemplateElementField();
$headline->name = "headline";
$headline->fieldText = $headlineText;
$headline->type = "TEXT";

$description1 = new TemplateElementField();
$description1->name = "description1";
$description1->fieldText = $description1Text;
$description1->type = "TEXT";
$description2 = new TemplateElementField();
$description2->name = "description2";
$description2->fieldText = $description2Text;
$description2->type = "TEXT";

$appId = new TemplateElementField();
$appId->name = "appId";
$appId->fieldText = $lookupId;
$appId->type = "TEXT";

$appStore = new TemplateElementField();
$appStore->name = "appStore";
if($appStoreText == 'appstore'){
$appStore->fieldText = "1";
}
else{
$appStore->fieldText = "2";
}
$appStore->type = "ENUM";

$adData = new TemplateElement();
$adData->uniqueName = "adData";
$adData->fields = array($headline, $description1, $description2, $appId,
$appStore);

$appEngagementAd->templateElements = array($adData);
// Create ad group ad.
$adGroupAd = new AdGroupAd();
$adGroupAd->adGroupId = $groupId;
$adGroupAd->ad = $appEngagementAd;

// Set additional settings (optional).
$adGroupAd->status = 'ENABLED';

// Create operation.
$operation = new AdGroupAdOperation();
$operation->operand = $adGroupAd;
$operation->operator = 'ADD';
$operations = array($operation);
// Make the mutate request.
$result = $adGroupAdServiceMobile->mutate($operations);
return $result;
}
Correspong xml request and respose will be given below
[Jul 23 2015 06:45:18.000000 - ERROR] POST /api/adwords/cm/v201409/AdGroupAdService HTTP/1.1
Connection: Keep-Alive
User-Agent: PHP-SOAP/5.5.12, gzip
Accept-Encoding: gzip, deflate
Content-Encoding: gzip
Content-Type: text/xml; charset=utf-8
SOAPAction: ""
Content-Length: 738
Authorization: Bearer ya29.uQGJh3jWkV8VdOZnFlRqbxGY9he-FJMnGQ3B4cXwdu4Mu1w5ms5voQwOU_3X6YzWkD73

<?xml version="1.0" encoding="UTF-8"?>
  <SOAP-ENV:Header>
    <ns1:RequestHeader>
      <ns1:clientCustomerId></ns1:clientCustomerId>
      <ns1:developerToken></ns1:developerToken>
      <ns1:userAgent>(AwApi-PHP/5.7.1, Common-PHP/5.7.1, PHP/5.5.12)</ns1:userAgent>
    </ns1:RequestHeader>
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
    <ns1:mutate>
      <ns1:operations>
        <ns1:operator>ADD</ns1:operator>
        <ns1:operand>
          <ns1:adGroupId>22094150829</ns1:adGroupId>
          <ns1:ad xsi:type="ns1:TemplateAd">
            <ns1:displayUrl>play.google.com</ns1:displayUrl>
            <ns1:finalAppUrls>
              <ns1:url>android-app://com.example.demogame/loadlevel?level=mars</ns1:url>
              <ns1:osType>OS_TYPE_ANDROID</ns1:osType>
            </ns1:finalAppUrls>
            <ns1:templateId>453</ns1:templateId>
            <ns1:templateElements>
              <ns1:uniqueName>adData</ns1:uniqueName>
              <ns1:fields>
                <ns1:name>headline</ns1:name>
                <ns1:type>TEXT</ns1:type>
                <ns1:fieldText>varun</ns1:fieldText>
              </ns1:fields>
              <ns1:fields>
                <ns1:name>description1</ns1:name>
                <ns1:type>TEXT</ns1:type>
                <ns1:fieldText>varun against players online</ns1:fieldText>
              </ns1:fields>
              <ns1:fields>
                <ns1:name>description2</ns1:name>
                <ns1:type>TEXT</ns1:type>
                <ns1:fieldText>cvit is against you</ns1:fieldText>
              </ns1:fields>
              <ns1:fields>
                <ns1:name>appId</ns1:name>
                <ns1:type>TEXT</ns1:type>
                <ns1:fieldText>com.example.demogame</ns1:fieldText>
              </ns1:fields>
              <ns1:fields>
                <ns1:name>appStore</ns1:name>
                <ns1:type>ENUM</ns1:type>
                <ns1:fieldText>2</ns1:fieldText>
              </ns1:fields>
            </ns1:templateElements>
            <ns1:name>Ad for demo game</ns1:name>
          </ns1:ad>
          <ns1:status>ENABLED</ns1:status>
        </ns1:operand>
      </ns1:operations>
    </ns1:mutate>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

HTTP/1.1 500 Internal Server Error
Content-Type: text/xml; charset=UTF-8
Content-Encoding: gzip
Date: Thu, 23 Jul 2015 04:45:24 GMT
Expires: Thu, 23 Jul 2015 04:45:24 GMT
Cache-Control: private, max-age=0
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Content-Length: 559
Server: GSE

<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
      <requestId>00051b838e3430a00a4c53452f041628</requestId>
      <serviceName>AdGroupAdService</serviceName>
      <methodName>mutate</methodName>
      <operations>1</operations>
      <responseTime>129</responseTime>
    </ResponseHeader>
  </soap:Header>
  <soap:Body>
    <soap:Fault>
      <faultcode>soap:Server</faultcode>
      <faultstring>[OperationAccessDenied.OPERATION_NOT_PERMITTED_FOR_CAMPAIGN_TYPE @ operations[0].operand.ad; trigger:'SEARCH(SEARCH_MOBILE_APP)']</faultstring>
      <detail>
        <ApiExceptionFault xmlns="https://adwords.google.com/api/adwords/cm/v201409">
          <message>[OperationAccessDenied.OPERATION_NOT_PERMITTED_FOR_CAMPAIGN_TYPE @ operations[0].operand.ad; trigger:'SEARCH(SEARCH_MOBILE_APP)']</message>
          <ApplicationException.Type>ApiException</ApplicationException.Type>
          <errors xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="OperationAccessDenied">
            <fieldPath>operations[0].operand.ad</fieldPath>
            <trigger>SEARCH(SEARCH_MOBILE_APP)</trigger>
            <errorString>OperationAccessDenied.OPERATION_NOT_PERMITTED_FOR_CAMPAIGN_TYPE</errorString>
            <ApiError.Type>OperationAccessDenied</ApiError.Type>
            <reason>OPERATION_NOT_PERMITTED_FOR_CAMPAIGN_TYPE</reason>
          </errors>
        </ApiExceptionFault>
      </detail>
    </soap:Fault>
  </soap:Body>
</soap:Envelope>

Thanks and Regards 
Sandeep cv

Umesh Dengale

unread,
Aug 11, 2015, 5:00:16 PM8/11/15
to AdWords API Forum, va...@innomindtech.in
Hi Sandeep,

From 07/01/2015, only the App install Ads are allowed with Search Network Only(SEARCH) and subtype mobile app install campaign (SEARCH_MOBILE_APP). You got OperationAccessDenied.OPERATION_NOT_PERMITTED_FOR_CAMPAIGN_TYPE error because you created the App reengagement ad with the Search Network Only and subtype mobile app install campaign. Check out updates for mobile app install ads on the search network on our blog.

Regards,
Umesh, AdWords API Team.
Reply all
Reply to author
Forward
0 new messages