Google Ads API is returning to beta status. Please read our blog post for more details.

Creating the User List

For expression_rule_user_list, there's an additional distinction to make. By default, Google Ads will AND together all rule items in a rule item group. This means that every rule item in at least one rule item group must match in order for the rule to add a visitor to the list. This is called "disjunctive normal form", or OR_OF_ANDS.

Alternatively, you could set up your list to only add a visitor to the list if at least one rule item in each rule item group matches. This is called "conjunctive normal form", or AND_OF_ORS, and is available for expression_rule_user_list by using the rule_type field. Trying to use AND_OF_ORS for a date_specific_rule_user_list will result in an error.

All that's left is to combine the rule item groups above into a new user list. In this case, we'll leave the default OR_OF_ANDS functionality in place, since that's what we built these rules for.

ExpressionRuleUserListInfo expressionRuleUserListInfo =
    ExpressionRuleUserListInfo.newBuilder()
        .setRule(
            UserListRuleInfo.newBuilder()
                .addAllRuleItemGroups(
                    ImmutableList.of(checkoutAndCartSizeRuleGroup, checkoutDateRuleGroup)))
        .build();

Limit by site visit date range

The expression_rule_user_list above meets your needs, but what if you only want to capture the users who satisfy the rule in that list and visit your site between October 1st and December 31st? Use date_specific_rule_user_list.

Creating a date_specific_rule_user_list follows the same process you'd follow for an expression_rule_user_list. Instead of setting the expression_rule_user_list field of your RuleBasedUserListInfo object, set the date_specific_rule_user_list field with a DateSpecificRuleUserListInfo object. This object will contain fields for start_date and end_date.

DateSpecificRuleUserListInfo dateSpecificRuleUserListInfo =
    DateSpecificRuleUserListInfo.newBuilder()
        .setRule(
            UserListRuleInfo.newBuilder()
                .addAllRuleItemGroups(
                    ImmutableList.of(checkoutAndCartSizeRuleGroup, checkoutDateRuleGroup)))
        .setStartDate(StringValue.of("2019-10-01"))
        .setEndDate(StringValue.of("2019-12-31"))
        .build();

The new list will contain all users who meet the same rules as the previous list, but only if they visit your site between start_date (inclusive) and end_date (inclusive).

Include past users in the list

You can also include past users in a rule-based user list by setting the prepopulation_status of the user list to REQUESTED, and monitor the progress of the asynchronous prepopulation process by periodically checking the status of this field.

This will only add past users from within the last 30 days, depending on the list's membership duration and the date when the remarketing tag is added. The status will be updated to FINISHED once request is processed, or FAILED if the request fails.