1

I am trying to figure out how to use the SOAP API to update an existing Marketing Cloud subscriber's email address. I've tried different permutations of the below request (with Create and Update action) and although the response is successful, it does not update the record.

In the example below, my All Subscribers list as the id 52.

Please can someone check?

<SOAP-ENV:Envelope
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:ns1="http://exacttarget.com/wsdl/partnerAPI"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <SOAP-ENV:Header>
        <fueloauth
            xmlns="http://exacttarget.com">77fMQroSJGVTIvmiOCxCuNWF
        </fueloauth>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <ns1:UpdateRequest>
            <Options>
                <SaveOptions>
                    <SaveOption>
                        <PropertyName>*</PropertyName>
                        <SaveAction>UpdateAdd</SaveAction>
                    </SaveOption>
                </SaveOptions>
            </Options>
            <ns1:Objects xsi:type="ns1:Subscriber">
                <ns1:Attributes>
                    <ns1:Name>EmailAddress</ns1:Name>
                    <ns1:Value>simon@sausage.com</ns1:Value>
                </ns1:Attributes>
                <ns1:SubscriberKey>1234</ns1:SubscriberKey>
                <ns1:Lists>
                    <PartnerKey xsi:nil="true"/>
                    <ObjectID xsi:nil="true"/>
                    <ns1:ID>52</ns1:ID>
                </ns1:Lists>
            </ns1:Objects>
        </ns1:UpdateRequest>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
2

I was able to get it to work with this SOAP envelope -- without specifying the Lists:

<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope>
   <s:Header>
      <!-- REMOVED -->
   </s:Header>
   <s:Body>
      <UpdateRequest>
         <Options>
            <Client>
               <ID><!-- MID GOES HERE --></ID>
            </Client>
            <SaveOptions>
               <SaveOption>
                  <PropertyName>*</PropertyName>
                  <SaveAction>UpdateOnly</SaveAction>
               </SaveOption>
            </SaveOptions>
         </Options>
         <Objects xsi:type="Subscriber">
            <Client>
               <ID><!-- MID GOES HERE --></ID>
            </Client>
            <PartnerKey xsi:nil="true" />
            <ObjectID xsi:nil="true" />
            <EmailAddress>spriggsa@digitalev.com</EmailAddress>
            <Attributes>
               <Name>Email Address</Name>
               <Value>spriggsa@digitalev.com</Value>
            </Attributes>
            <SubscriberKey>aspriggs@degdigital.com</SubscriberKey>
         </Objects>
      </UpdateRequest>
   </s:Body>
</s:Envelope>
  • 2
    Hi Adam, that worked, thanks. I've simplified this somewhat as it turns out you don't necessarily require an MID (even if you have multiple BUs on the account). Here's a gist with an updated method. – Eliot Harper Nov 18 '15 at 21:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.