Hello Phu, I have good news! One of our user list experts found a way to do what you want. I'll explain with both a bit of ASCII art and SOAP XML. In this example, we're saying you want people who visited example.com/yes, but not example.com/no.
LogicalUserList l l l l UserListLogicalRule UserListLogicalRule (operator: ALL) Operator: NONE | | | | ExpressionRuleUserList ExpressionRuleUserList Rule: url__ CONTAINS example.com/yes <https://www.google.com/url?q=http://example.com/yes&sa=D&usg=AFQjCNGpjpQg8ezL28SqSe9RRHLIC9Zu5w> Rule: url__ CONTAINS example.com/no <https://www.google.com/url?q=http://example.com/no&sa=D&usg=AFQjCNEmtg0e5j5JuW4HpF0wgVbQE873UA> You'll want a LogicalUserList. In the LogicalUserList, you need one UserListLogicalRule to have an operator ALL and the other UserListLogicalRule to have an operator NONE. In the ALL UserListLogicalRule, you need to create an ExpressionRuleUserList with all the URLs that you want the user to visit. In the NONE UserListLogicalRule, you want an ExpressionRuleUserList with all the URLs that should NOT have been visited. The key to both these ExpressionRuleUserList rules will be *url__* and the operator will be *CONTAINS.* This is going to be a two-step process because the ExpressionRuleUserLists have to exist before the adding the LogicalUserList. *Step 1:* Create the ExpressionRuleUserLists. Here's the SOAP XML request for that. <mutate xmlns="https://adwords.google.com/api/adwords/rm/v201601" ><operations><operator xmlns= "https://adwords.google.com/api/adwords/cm/v201601">ADD</operator><operand xsi:type="ExpressionRuleUserList" ><name>Visited</name><description>Visitors have visited this page. </description><rule><groups><items><StringRuleItem><key><name>url__ </name></key><op>CONTAINS</op><value>http://example.com/yes </value></StringRuleItem></items></groups></rule></operand></operations><operations><operator xmlns="https://adwords.google.com/api/adwords/cm/v201601">ADD </operator><operand xsi:type="ExpressionRuleUserList" ><name>Not visited </name><description>Visitors have not visited this page. </description><rule><groups><items><StringRuleItem><key><name>url__ </name></key><op>CONTAINS</op><value>http://example.com/no </value></StringRuleItem></items></groups></rule></operand></operations></mutate> *Step 2:* Create the LogicalUserList with the two ExpressionUserLists that you created earlier. Here's the request: <mutate xmlns="https://adwords.google.com/api/adwords/rm/v201601" ><operations><operator xmlns= "https://adwords.google.com/api/adwords/cm/v201601">ADD</operator><operand xsi:type="LogicalUserList" ><name>Visited one site, but not another site. </name><description>Visitors to one site, but not another site. </description><rules><operator>ALL</operator><ruleOperands><UserList xsi:type="ExpressionRuleUserList" ><id>101794822 </id><rule><groups><items><StringRuleItem><key><name>url__</name></key><op> CONTAINS</op><value>http://example.com/yes </value></StringRuleItem></items></groups></rule></UserList></ruleOperands></rules><rules><operator> NONE</operator><ruleOperands><UserList xsi:type="ExpressionRuleUserList" ><id>101794942</id><rule><groups><items><StringRuleItem><key><name>url__ </name></key><op>CONTAINS</op><value>http://example.com/no </value></StringRuleItem></items></groups></rule></UserList></ruleOperands></rules></operand></operations></mutate> And here's the response. Note that the response has the entire tree of lists in it: <ns2:mutateResponse xmlns="https://adwords.google.com/api/adwords/cm/v201601 " xmlns:ns2="https://adwords.google.com/api/adwords/rm/v201601" ><ns2:rval><ListReturnValue.Type>UserListReturnValue </ListReturnValue.Type><ns2:value xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance <https://www.google.com/url?q=http://www.w3.org/2001/XMLSchema-instance&sa=D&usg=AFQjCNFsclzLqabE3vsjL8lude_KsXKzAw> " xsi:type="ns2:LogicalUserList"><ns2:id>101795182</ns2:id><ns2:isReadOnly> false</ns2:isReadOnly><ns2:name>Visited one site, but not another site. </ns2:name><ns2:description>Visitors to one site, but not another site. </ns2:description><ns2:status>OPEN </ns2:status><ns2:integrationCode></ns2:integrationCode><ns2:accessReason> OWNED</ns2:accessReason><ns2:accountUserListStatus>ACTIVE </ns2:accountUserListStatus><ns2:membershipLifeSpan>30 </ns2:membershipLifeSpan><ns2:listType>LOGICAL </ns2:listType><ns2:isEligibleForSearch>true </ns2:isEligibleForSearch><ns2:UserList.Type>LogicalUserList </ns2:UserList.Type><ns2:rules><ns2:operator>ALL </ns2:operator><ns2:ruleOperands><ns2:UserList xsi:type= "ns2:ExpressionRuleUserList"><ns2:id>101794822</ns2:id><ns2:isReadOnly>true </ns2:isReadOnly><ns2:name>Visited</ns2:name><ns2:listType>RULE_BASED </ns2:listType><ns2:UserList.Type>ExpressionRuleUserList </ns2:UserList.Type><ns2:rule><ns2:groups><ns2:items><ns2:StringRuleItem><ns2:key><ns2:name> url__</ns2:name></ns2:key><ns2:op>CONTAINS</ns2:op><ns2:value> http://example.com/yes <https://www.google.com/url?q=http://example.com/yes&sa=D&usg=AFQjCNGpjpQg8ezL28SqSe9RRHLIC9Zu5w> </ns2:value></ns2:StringRuleItem></ns2:items></ns2:groups></ns2:rule></ns2:UserList></ns2:ruleOperands><ns2:ruleOperands><ns2:UserList xsi:type="ns2:ExpressionRuleUserList"><ns2:id>101794942 </ns2:id><ns2:isReadOnly>true</ns2:isReadOnly><ns2:name>Not visited </ns2:name><ns2:listType>RULE_BASED</ns2:listType><ns2:UserList.Type> ExpressionRuleUserList </ns2:UserList.Type><ns2:rule><ns2:groups><ns2:items><ns2:StringRuleItem><ns2:key><ns2:name> url__</ns2:name></ns2:key><ns2:op>NOT_CONTAIN</ns2:op><ns2:value> http://example.com/no <https://www.google.com/url?q=http://example.com/no&sa=D&usg=AFQjCNEmtg0e5j5JuW4HpF0wgVbQE873UA> </ns2:value></ns2:StringRuleItem></ns2:items></ns2:groups></ns2:rule></ns2:UserList></ns2:ruleOperands></ns2:rules></ns2:value></ns2:rval></ns2:mutateResponse> In the user interface, it will look like a combination of user lists, but it will have the same behavior that you need. Cheers, Nadine, AdWords API Team On Tuesday, December 29, 2015 at 8:08:39 PM UTC-5, take wrote: > > Dear Nadine, > > I have also tried to use LogicalUserList to combine more than > one ExpressionRuleUserList but I think it is used for option "Custom > Combination". > > I'm looking forward to hearing from you soon. > > Thanks & Best regards, > Phu. > > On Wednesday, December 30, 2015 at 1:50:17 AM UTC+7, Nadine Sundquist > (AdWords API Team) wrote: >> >> Hi Phu, >> >> It turns out that this one is a bit more difficult than I originally >> thought. I've tried a few combinations of LogicalUserList and >> ExpressionRuleUserList to see if I could get this to work, but I've been >> unsuccessful so far. I've sent this over to some of my teammates to see if >> they've done this before. I'll get back to you as soon as I hear back from >> them. Sometimes there isn't a one to one correlation between the user >> interface and the API, which is why I'm double-checking with a few people >> here who have worked more with remarketing. >> >> Best, >> Nadine, AdWords API Team >> >> On Tuesday, December 29, 2015 at 9:01:24 AM UTC-5, Phu Le Tan wrote: >>> >>> Dear Nadine and Adwords API Team, >>> >>> Thank you for your instructions. I have already read Using built-in >>> remarketing tag parameters. but it doesn't work >>> >>> The rule based remarketing list with StringRuleItem , RuleItemGroup and >>> ExpressionRuleUserList just help to create rule for option Visitors of a >>> page >>> >>> In API guides, I don't know any object to distinct between "Visitors of >>> a page" and "Visitors of a page who did not visit another page" >>> >>> Please give me next suggestion >>> >>> Thanks & Best regards, >>> Phu. >>> >>> >>> >>> On Tuesday, December 29, 2015 at 1:58:37 AM UTC+7, Nadine Sundquist >>> (AdWords API Team) wrote: >>>> >>>> Hello Phu, >>>> >>>> You're starting to get into more advanced usage, so you'll want to >>>> check out our guide on rule based ramarketing lists. The section you'll >>>> want to focus on is Using built-in remarketing tag parameters >>>> <https://developers.google.com/adwords/api/docs/guides/rule-based-remarketing#using_built-in_remarketing_tag_parameters>. >>>> >>>> In that section, it shows a piece of code where there's a rule saying that >>>> the URL *CONTAINS *a string. In your case, you would want to also add >>>> a *NOT_CONTAINS *rule for specific URLs. The *op* field in >>>> StringRuleItem >>>> <https://developers.google.com/adwords/api/docs/reference/v201509/AdwordsUserListService.StringRuleItem> >>>> shows >>>> the kinds of operators allowed in rules. >>>> >>>> Regards, >>>> Nadine, AdWords API Team >>>> >>>> On Monday, December 28, 2015 at 12:03:30 AM UTC-5, take wrote: >>>>> >>>>> Dear AdWords API Team, >>>>> >>>>> Based on your guides, >>>>> https://developers.google.com/adwords/api/docs/guides/remarketing#remarketing-to-visitors-of-your-website, >>>>> >>>>> we have implemented option "Visitors of a page" >>>>> >>>>> But with option "Visitors of a page who did not visit another page", >>>>> we don't see explanation or sample codes in guides. >>>>> >>>>> >>>>> Maybe we do not understand clearly. Please help me >>>>> >>>>> >>>>> Thanks & Best regards, >>>>> >>>>> Phu. >>>>> >>>> -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and Google+: https://googleadsdeveloper.blogspot.com/ https://plus.google.com/+GoogleAdsDevelopers/posts =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups "AdWords API Forum" group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups "AdWords API Forum" group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. Visit this group at https://groups.google.com/group/adwords-api. To view this discussion on the web visit https://groups.google.com/d/msgid/adwords-api/2cddc838-6ee4-4965-bb94-129f0fe8b000%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.