Не удается заставить MailChimp API listUpdateMember изменить адрес электронной почты пользователя

Я пытаюсь использовать API MailChimp для обновления адреса электронной почты участника, когда он меняет свой адрес электронной почты в нашем веб-приложении.

Я использую пакет Laravel MailChimp, и он отлично работает (я могу подписываться на пользователей, обновлять группировки, имя обновления и т. д.), но у меня должны быть merge_vars или что-то неправильное.

Я использую это:

$member_details = array(
    // grabbed from config and working (also API key handled by bundle)
    'id' => $id,
    // passed from function - corresponds to the old email address
    'email_address' => $mailchimp_old_email,
    'merge_vars' => array(
        // Old email again?
        'EMAIL' => $mailchimp_old_email,     
        // new email address        
        'NEW-EMAIL' => $mailchimp_new_email, 
    ),
    'replace_interests' => FALSE,
);

$response = Mailchimp::listUpdateMember($member_details);

Итак, «$response = 1», что заставило меня подумать, что это сработало, но адрес электронной почты пользователя не изменился, когда я просматриваю список подписчиков в MailChimp.

В документах API 1.3 есть listSubscribe с подробным описанием merge_vars «EMAIL» и «NEW-EMAIL», и я читал об этом на этот пост стека стека. Я попытался снова использовать listSubscribe, хотя это был существующий участник, но это не удалось с $response, говорящим, что участник уже подписан.

Любые рекомендации о том, где я могу ошибаться? Я не нашел четкого примера такого использования API listUpdateMember.


person alexleonard    schedule 26.06.2013    source источник
comment
Круто, этот вопрос только что заработал мне значок "перекати-поле"...   -  person alexleonard    schedule 03.07.2013


Ответы (2)


Оказывается, ответ очень прост.

https://twitter.com/MailChimp_API/status/351674145609748480

По-видимому, NEW-EMAIL вообще не нужен в merge_vars — только EMAIL.

Итак, рабочий код в моем случае:

$member_details = array(
    // grabbed from config and working (also API key handled by bundle)
    'id' => $id,
    // passed from function - corresponds to the old email address
    'email_address' => $mailchimp_old_email,
    'merge_vars' => array(
        // new email address        
        'EMAIL' => $mailchimp_new_email,     
    ),
    'replace_interests' => FALSE,
);

$response = Mailchimp::listUpdateMember($member_details);

Это работает прямо. Похоже, что «NEW-EMAIL» действительно не нужен (или EMAIL следует удалить и просто использовать «NEW-EMAIL», так как это несколько лучше описывает происходящее).

person alexleonard    schedule 04.07.2013

Если вы обновились, чтобы использовать MailChimp API v3, есть новый способ сделать это.

Используйте метод patch или put на конечной точке /lists/members.

email_address — это свойство «верхнего уровня» объекта, который вы отправляете (на том же уровне, что и merge_fields, который называется merge_vars в API 2) и представляет новый адрес электронной почты.

Документация по MailChimp

person stevevance    schedule 02.12.2016