Unsubscribed emails

Anonymous
Not applicable

Hi,

I want to take a custom report using api, wherein I want the date, email id and the mail through which the user has unsubscribed from the mailers.

I have checked the marketo API docs but could not find relevant information. Any ideas?

Thanks and Regards,

Bharani 

5 REPLIES 5
Alok_Ramsisaria
Level 10

You can try the "getLeadActivity" function with parameter "activityFilter->includeAttributes->activityType" having the value "UnsubscribeEmail".

Hope this will help you.

Anonymous
Not applicable

Thanks for the responce!

I have already tried that, but the Offset is 0.

Here is the snippet for reference, Let me know if there is any issue in this code.

MktMktowsApiService service = new MktMktowsApiService(marketoSoapEndPoint, serviceName);

            MktowsPort port = service.getMktowsApiSoapPort();

           

        DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");

            String text = df.format(new Date());

            String requestTimestamp = text.substring(0, 22) + ":" + text.substring(22);         

            String encryptString = requestTimestamp + marketoUserId ;

           

            SecretKeySpec secretKey = new SecretKeySpec(marketoSecretKey.getBytes(), "HmacSHA1");

            Mac mac = Mac.getInstance("HmacSHA1");

            mac.init(secretKey);

            byte[] rawHmac = mac.doFinal(encryptString.getBytes());

            char[] hexChars = Hex.encodeHex(rawHmac);

            String signature = new String(hexChars);

           

  

            AuthenticationHeader header = new AuthenticationHeader();

            header.setMktowsUserId(marketoUserId);

            header.setRequestTimestamp(requestTimestamp);

            header.setRequestSignature(signature);

           

   

            ParamsGetLeadActivity request = new ParamsGetLeadActivity();

            LeadKey key = new LeadKey();

            key.setKeyType(LeadKeyRef.EMAIL);

            key.setKeyValue("t@t.com");

            request.setLeadKey(key);

            ObjectFactory objectFactory = new ObjectFactory();

            JAXBElement<Integer> batchSize = objectFactory.createParamsGetLeadActivityBatchSize(10);

            request.setBatchSize(batchSize);

           

            ActivityTypeFilter atv = new ActivityTypeFilter();

            ArrayOfActivityType aatt = new ArrayOfActivityType();

           

          

            aatt.getActivityTypes().add(ActivityType.UNSUBSCRIBE_EMAIL);

           

            atv.setIncludeTypes(aatt);

            JAXBElement<ActivityTypeFilter> typeFilter = objectFactory.createParamsGetLeadActivityActivityFilter(atv);

            request.setActivityFilter(typeFilter);

           

            SuccessGetLeadActivity result = port.getLeadActivity(request, header);

            JAXBContext context = JAXBContext.newInstance(SuccessGetLeadActivity.class);

            Marshaller m = context.createMarshaller();

            m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

            m.marshal(result, System.out);

Alok_Ramsisaria
Level 10

As per the WSDL file, Activity type should be "UnsubscribeEmail" not "UNSUBSCRIBE_EMAIL".

Can you try this?

Alok_Ramsisaria
Level 10

Here is the working code for reference

$apiObj = new mktSampleMktowsClient($this->accessKey, $this->secretKey, $this->soapEndPoint);   

$getdata = $apiObj->getLeadActivity('EMAIL', $email, 'UnsubscribeEmail');

function getLeadActivity($keyType, $keyValue, $activityTypeFilter='') {

    $retLeadActivity = null;

    $leadKey = new LeadKey();

    $leadKey->keyType = $keyType;

    $leadKey->keyValue = $keyValue;

    $activityFilter = new ActivityTypeFilter();

    $activityType = new ArrayOfActivityType();

    $activityType->activityType = $activityTypeFilter;

   

    $activityFilter->includeTypes = $activityType;

    $params = new paramsGetLeadActivity();

    $params->leadKey = $leadKey;

    $params->activityFilter = $activityFilter;

    $params->batchSize = 1;

   

    $options = array();

    $authHdr = $this->_getAuthenticationHeader();

    $retLeadActivity = $this->soapClient->__soapCall('getLeadActivity', array($params), $options, $authHdr);

     

    return $retLeadActivity;

  }

In response, I am getting all the details like Mailer Name, Date of Activity, Device Used, Campaign name etc.

Anonymous
Not applicable

Thanks for the reference Alok!

Will try this and let you know soon.