Zero list members after submitting 10,00 gmails using OfflineUserDataJobType.CUSTOMER_MATCH_WITH_ATTRIBUTES

2021-12-22 Thread Kurt Bo
I'm importing users into a CustomerMatch UserList and I took the Java 
example at:
https://developers.google.com/google-ads/api/docs/remarketing/audience-types/customer-match

And I modified it to loop over an input file of 10,000 email addresses 
instead of having just a few hard-coded user identifiers.

And set membership term to the max (1) instead of 30 days
.setMembershipLifeSpan(1)


When I run the example which has the job type set to:  
CUSTOMER_MATCH_USER_LIST,  I get a 99% match rate after about an hour after 
the job was processed. And then 4-6 hours later I see 6300+ members in the 
list.

But when I change the program to use a job type of:
OfflineUserDataJobType.CUSTOMER_MATCH_WITH_ATTRIBUTES

And changed the code that adds the opeations to include LTV attributes like 
so:

UserAttribute.Builder userAttributeBuilder = 
UserAttribute.newBuilder();
userAttributeBuilder.setLifetimeValueMicros((long) 100.12);
userAttributeBuilder.setLastPurchaseDateTime("2021-07-01 
12:32:45-00:00");

  operations.add(
  OfflineUserDataJobOperation.newBuilder().setCreate(
   UserData.newBuilder()
   .addUserIdentifiers(
   UserIdentifier.newBuilder()
  
 .setHashedEmail(normalizeAndHash(sha256Digest, line))
   )
   .setUserAttribute(userAttributeBuilder.build())
   .build() 
  ).build()
  );


The job submits successfully, and I see it RUNNING, and eventually ending 
with a SUCCESS status. But the member count and match count is always 0 
when I include LTV attributes and the job type is:  
CUSTOMER_MATCH_WITH_ATTRIBUTES

It has been DAYS since the jobs have been processed.


Am I doing something wrong in the way I'm submitting the attributes?

Do I need to adjust an account setting somewhere?

Any help is greatly appreciated, I feel like I'm going crazy!

-- 
-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
Also find us on our blog:
https://googleadsdeveloper.blogspot.com/
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~

You received this message because you are subscribed to the Google
Groups "AdWords API and Google Ads 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 and Google Ads API Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to adwords-api+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/adwords-api/9f28d831-48a2-4baf-b6de-7d0ea6fcce6fn%40googlegroups.com.


Re: How to use customer match CUSTOMER_MATCH_WITH_ATTRIBUTES?

2021-12-23 Thread Kurt Bo
Did you ever figure out what the issue was with this?
I'm having a similar issue where if I submit LTV attributes, my UserList 
has zero members;  but if I do NOT pass LTV and use Job Type:  
 CUSTOMER_MATCH_USER_LIST,  my UserList DOES get populated properly.

I created a post here the other day:
https://groups.google.com/g/adwords-api/c/_1SI98bsP2o/m/_GY2RiRWDAAJ


Thanks for any insight you can provide,

- Kurt
On Thursday, September 30, 2021 at 10:37:18 AM UTC-5 adsapi wrote:

> Hi Chong,
>
> Would you mind responding privately with your complete request and 
> response logs for your upload attempt with attributes? This will help us 
> take a closer look at the issue.
>
> Thanks,
>
> Matt
> Google Ads API Team
>
> [image: Google Logo] 
> Matt 
> Google Ads API Team 
>   
>
> ref:_00D1U1174p._5004Q2OV3KA:ref
>

-- 
-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
Also find us on our blog:
https://googleadsdeveloper.blogspot.com/
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~

You received this message because you are subscribed to the Google
Groups "AdWords API and Google Ads 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 and Google Ads API Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to adwords-api+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/adwords-api/8c952c9a-316a-4038-8520-ae9628c3cbb1n%40googlegroups.com.


Re: Zero list members after submitting 10,00 gmails using OfflineUserDataJobType.CUSTOMER_MATCH_WITH_ATTRIBUTES

2022-01-14 Thread Kurt Bo
I've officially been dumped by the Google Ads Product Team:
===

Hi Kurt,

Hope you are doing well!

Thank you for patiently waiting while I checked this internally. On 
checking with my concerned team, we have determined that since the customer 
match list is uploaded by API,  it is beyond the scope of Google Ads 
Display and Remarketing team. It would be best if you can contact Google Ad 
API team through the Google Ads and AdWords API forum 
<https://protect-us.mimecast.com/s/H1hxCERp3YFkZOpTNJI6F?domain=groups.google.com>
 or 
their email alias *googleadsapi-supp...@google.com 
*. 

As per our expertise, we would only be able to help if the customer match 
list is being uploaded via Google Ads Interface. I wish I could have helped 
you, however, it is not our area of support where we could help regarding 
uploads done via API. 

I hope this information is helpful. Let me know if you have any further 
questions regarding Display campaigns and we will be glad to assist you 
further. 

Regards,
Akshay 

*NB: If you need to reference this support ticket in the future, the ID 
number is **2-380231...*


API Team, please help!

On Friday, January 14, 2022 at 12:14:19 PM UTC-6 Kurt Bo wrote:

> As a follow up for anybody coming across this post in the future, I still 
> do *NOT *have resolution to this issue.
>
> I added logging and submit logs privately to adwords support. If you need 
> to see how to do that in java, go here:  
> https://developers.google.com/google-ads/api/docs/client-libs/java/logging  
>   At very  least it can help you verify your code IS sending the data you 
> expect it to to Google.
>
> After reviewing my logs of two runs (one submitting LTV and last purchase 
> date which resulted in zero matches and zero list size, and another not 
> sending ANY attributes and different list type resulting in 6200 matches), 
> the veridct from adwords support was:
>
> *Upon checking the attached logs, there appears to be no errors 
> encountered in both uploads. That said, the issue may not be API related.*
>
> I was told to contact::   
> https://support.google.com/google-ads/gethelpthat the Google Ads 
> Product Support team should be able to provide further guidance on how 
> adding attributes affects the match rates of uploaded audiences
>
> I have reached out to the Ads Product support team and so far that have 
> not been able to help. They keep trying to say they can't help if you're 
> using the API. And that I should reach out to the API team. But the API 
> team tells me to contact Ads Product support. Attached is a screenshot of 
> some of the less than helpful correspondence.
>
> The API support team also mentioned:
>
> *You may see how the user_identifiers collection under the create element 
> only hashed email along with users' spent data. As a result, Google Ads 
> will use both the hashed email and the spent information in the matching 
> process.*
>
> However, I'm not quite sure how that affects USER LIST *POPULATION*. I'm 
> waiting for some more clarifications around that.
>
> I've been assuming that by uploading my data to Google containing LTV and 
> last purchase date, that Google would use this information to prioritize 
> which Customers are the best to target. If I upload 10,000 customers, I 
> would expect the list to contain all 10,000 customers regardless of whether 
> I specified LTV or not  (assuming all 10,000 matched actual active Google 
> accounts). If I wanted to just target customers that purchased >= $5,000 in 
> the last 180 days, I could simply ONLY upload those users to my UserList 
> and have multiple user lists for different segments. So I really don't know 
> why attributes would affect the population/list size. If anybody has 
> insight into this, please, I'd love to hear it, I'm all ears.
>
>
> Overall, it seems like nobody at Google seems to know the real details 
> about UserList Attributes, WTF  This is silly, somebody please figure 
> out what's going on and advise.
> On Thursday, December 23, 2021 at 11:58:49 PM UTC-6 adsapi wrote:
>
>> Hi Kurt,
>>
>> Thank you for posting your concern.
>>
>> So that I can investigate the issue, could you provide the complete 
>> request 
>> <https://developers.google.com/google-ads/api/docs/concepts/field-service#request>
>>  and response 
>> <https://developers.google.com/google-ads/api/docs/concepts/field-service#response>
>>  logs 
>> with request ID 
>> <https://developers.google.com/google-ads/api/docs/concepts/call-structure#request-id>
>>  and request header 
>> <https://developers.google.

Re: Zero list members after submitting 10,00 gmails using OfflineUserDataJobType.CUSTOMER_MATCH_WITH_ATTRIBUTES

2022-01-19 Thread Kurt Bo
Nadine,

THANK YOU so much for that information. I had a sneaking suspicion some 
account setting was at play here!

So from what you've described it sounds like the adjustments I'll be making 
(assuming we get allowlisted) will be:

   - Still upload my contacts to a user list so that I identify the users 
   that I want Google to be able to target in an automated fashion
  - But ONLY upload the emails/phones in this job, no attributes
  - Use a job type of:CUSTOMER_MATCH_USER_LIST
  
  - Then in a SEPARATE JOB than the contact upload,
  - Upload the attributes for the contacts in the previous job
  - Do NOT specify a user list in the upload job
  - Use a job type of:CUSTOMER_MATCH_WITH_ATTRIBUTES 
   
Does that sound like a good approach?


I believe I read that to REMOVE attributes from a user I can just set the 
LTV attribute to $0 and I assume I could set an EMPTY/BLANK  "last purcahse 
date" value to wipe out that field.
Does that sound correct to you?  (I plan on recording in a database on my 
side the data I've submit to Google, so if I ever need, I could REMOVE the 
attributes for all contacts I've previously submit attributes for.)

I guess I'll NEVER get any feedback on the ATTRIBUTE UPLOAD JOB other than 
the job's partial failure object because there's simply NO LIST that the 
data is being submit to. It sounds like that data is stored in a separate 
area so as not to duplicate it. Makes sense. At least when I submit to a 
customer list I can see its SIZE. But the attributes, I just have to HOPE 
everything worked. Is there any way to verify that the attributes exist? Is 
there anything I can do myself to be able to VERIFY the attributes got 
uploaded? Maybe create a segment based on attributse and see that the size 
is > 0?  (I'm a developer, not a marketer, so pleaes forgive my 
unfamiliarity with how campaigns, are setup...)

Thank You, and I'm very much looking forward to the updated documentation!

- Kurt


On Tuesday, January 18, 2022 at 7:28:45 PM UTC-6 adsapi wrote:

> Hello Kurt,
>
> I've been working on this API for many years, so I'm jumping in here to 
> help out. First, I'll explain the Customer Match attributes flow and how it 
> is used. Then, I'll cover my observations in your particular case followed 
> by the next steps.
>
> *Customer Match attributes flow*
>
> This is what I know about the feature when it was first introduced in, I 
> believe, 2020. Customer Match attributes are not tied to a specific user 
> list. 
>
>1. API developers upload Customer Match attributes through an offline 
>data job not tied to a user list. 
>2. Then, those Customer Match attributes sit in a pool on the Google 
>Ads account. 
>3. Finally, rule-based user lists are created using that pool of 
>Customer Match attributes. 
>
> Even though the feature is similarly named to Customer Match, it is not 
> tied to Customer Match lists. I realize that this can be confusing, but as 
> a fellow engineer, I'm sure you know how difficult naming can be. I'm 
> planning on updating the guide on this. You're probably wondering why it 
> appears almost no one knows anything about this feature. This is because 
> this feature has historically been allowlisted with very, very few people 
> on that allowlist who qualify to be on it. That's why the documentation for 
> this feature is sparse. I'm sure you're also wondering why it isn't working 
> for you, so I'll get to that now.
>
> *Observations*
>
> I took a deep-dive through our source code, back-end database, and logs. 
> This is what I found: 
>
>- This feature is still allowlisted, and your Google Ads account is 
>not on the allowlist.  
>- When you uploaded data through the offline data job, you set the 
>user list in the customer match metadata. When uploading Customer Match 
>attributes, that field should not be set. By setting that user list field, 
>it appears that our validator for the Customer Match attributes feature 
> may 
>not have triggered, which allowed the job to proceed. 
>- When you uploaded the data, the job attempted to process the data. I 
>see that the data uploaded and processed. However, because your account is 
>not on the allowlist for the feature, the account was not able to do 
>anything with that feature. Also, it's expected that Customer Match 
>attributes are not tied to any user list, so it's expected that the user 
>list you have would be empty. 
>
> *Next steps*
>
> So, here's what we can do next.   
>
>1. I'll update the documentation to make it more clear on how the 
>Customer Match attributes feature works, and I'll make it more clear that 
>there is allowlisting associated with that feature.  
>2. I'll follow up with one of my fellow engineers to verify that it is 
>indeed the validator logic for the allowlist not being triggered for this 
>edge case. If that is indeed the ca