1

Why I see the count of completed/queued/errored on Triggered Sends to 0, despite the return message of API call is "Triggered Has Been Send queued"?

REVIEW: I tried the sames scripts on another ORG and there everything works! Apparently the problem is our ORG. Is there any version of ORG where the send via TriggeredEmail is not permitted?

Hello, I tried to send an email "Triggered Email" via API using the following script:

public static void Run(PartnerAPIStub ps, 
        String iTriggeredSendCustomerKey, 
        String iEmailAddress, 
        String iFirstName, 
        String iLastName ) {
    try {           
        TriggeredSend ts = TriggeredSend.Factory.newInstance();            
        TriggeredSendDefinition tsd = TriggeredSendDefinition.Factory.newInstance();
        tsd.setCustomerKey(iTriggeredSendCustomerKey);
        ts.setTriggeredSendDefinition(tsd);
        Subscriber sub = Subscriber.Factory.newInstance();
        sub.setEmailAddress("michele.trotta@tengroup.it");
        sub.setSubscriberKey("michele.trottaSK");
        Attribute firstName = Attribute.Factory.newInstance();
        firstName.setName("First Name");
        firstName.setValue(iFirstName);            
        Attribute lastName = Attribute.Factory.newInstance();
        lastName.setName("Last Name");
        lastName.setValue(iLastName);
        sub.setAttributesArray(new Attribute[]{firstName, lastName});            
        ts.setSubscribersArray(new Subscriber[]{sub});            
        CreateRequestDocument createRequestDocument = CreateRequestDocument.Factory.newInstance();
        CreateRequestDocument.CreateRequest createRequest = CreateRequestDocument.CreateRequest.Factory.newInstance();
        createRequest.setObjectsArray(new APIObject[]{ts});
        CreateOptions createOptions = CreateOptions.Factory.newInstance();            
        createRequest.setOptions(createOptions);            
        createRequestDocument.setCreateRequest(createRequest);            
        CreateResponseDocument responseDoc = ps.create(createRequestDocument);            
        CreateResponse cr = responseDoc.getCreateResponse();
        System.out.println("Status: " + cr.getOverallStatus());
        System.out.println("Request ID: " + cr.getRequestID());         
        for(CreateResult createResult : cr.getResultsArray())
        {
            System.out.println("Triggered Send Status Code: " + createResult.getStatusCode());
            System.out.println("Triggered Send Status Message: " + createResult.getStatusMessage());
        }
    }
    catch (Exception e) {
        e.printStackTrace();
    }                   
} 

the result of the execution:

CreateTriggeredSend.Run(ps,"TSD_TriggeredSendTest","michele.trotta@tengroup.it","MicheleHS", "TrottaHS");

is:

Status: OK
Request ID: 41db8678-d73d-479b-b130-71d51544ba99
Triggered Send Status Code: OK
Triggered Send Status Message: Triggered Send has been queued

but when i see the count of "completed/queued/errored" on Triggered Sends "TSD_TriggeredSendTest" is ALL 0. What I'm missing??

Below you can find the images of "TSD_TriggeredSendTest":

enter image description here

and the images of "email content" TriggeredSendTest:

enter image description here

I tried to send an email "Triggered Email" also via Fuel Java SDK and the SOAP envelope is:

---------------------------
ID: 1
Address: https://webservice.s7.exacttarget.com/Service.asmx
Encoding: UTF-8
Http-Method: POST
Content-Type: text/xml
Headers: {Accept=[*/*], SOAPAction=["Create"]}
Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <fueloauth>removed</fueloauth>
  </soap:Header>
  <soap:Body>
    <ns3:CreateRequest xmlns:ns2="urn:fault.partner.exacttarget.com" xmlns:ns3="http://exacttarget.com/wsdl/partnerAPI">
      <ns3:Options/>
      <ns3:Objects xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns3:TriggeredSend">
        <ns3:PartnerKey xsi:nil="true"/>
        <ns3:ModifiedDate xsi:nil="true"/>
        <ns3:ObjectID xsi:nil="true"/>
        <ns3:TriggeredSendDefinition>
          <ns3:PartnerKey xsi:nil="true"/>
          <ns3:ModifiedDate xsi:nil="true"/>
          <ns3:ObjectID xsi:nil="true"/>
          <ns3:CustomerKey>5028</ns3:CustomerKey>
        </ns3:TriggeredSendDefinition>
        <ns3:Subscribers>
          <ns3:PartnerKey xsi:nil="true"/>
          <ns3:ModifiedDate xsi:nil="true"/>
          <ns3:ObjectID xsi:nil="true"/>
          <ns3:EmailAddress>michele.trotta@tengroup.it</ns3:EmailAddress>
          <ns3:SubscriberKey>michele.trotta@tengroup.it</ns3:SubscriberKey>
        </ns3:Subscribers>
      </ns3:Objects>
    </ns3:CreateRequest>
  </soap:Body>
</soap:Envelope>

--------------------------------------
2016-02-02 23:04:04 INFO  Soap:253 - Inbound Message
----------------------------
ID: 1
Response-Code: 200
Encoding: UTF-8
Content-Type: text/xml; charset=utf-8
Headers: {Cache-Control=[private, max-age=0], connection=[close], Content-Length=[1326], content-type=[text/xml; charset=utf-8], Date=[Tue, 02 Feb 2016 22:04:20 GMT], Server=[Microsoft-IIS/7.5], X-AspNet-Version=[4.0.30319], X-Powered-By=[ASP.NET]}
Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
  <soap:Header>
    <wsa:Action>CreateResponse</wsa:Action>
    <wsa:MessageID>urn:uuid:f46428a9-cee0-4bde-a36f-969026b8ec15</wsa:MessageID>
    <wsa:RelatesTo>urn:uuid:dddcd05e-496a-47c5-9f22-6c1dec8fec66</wsa:RelatesTo>
    <wsa:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:To>
    <wsse:Security>
      <wsu:Timestamp wsu:Id="Timestamp-82ffabd9-1d18-45ff-a47e-e40906977c94">
        <wsu:Created>2016-02-02T22:04:21Z</wsu:Created>
        <wsu:Expires>2016-02-02T22:09:21Z</wsu:Expires>
      </wsu:Timestamp>
    </wsse:Security>
  </soap:Header>
  <soap:Body>
    <CreateResponse xmlns="http://exacttarget.com/wsdl/partnerAPI">
      <Results>
        <StatusCode>OK</StatusCode>
        <StatusMessage>Triggered Send has been queued</StatusMessage>
        <OrdinalID>0</OrdinalID>
        <NewID>0</NewID>
      </Results>
      <RequestID>95577754-32eb-4d6d-8026-f390e2124b7b</RequestID>
      <OverallStatus>OK</OverallStatus>
    </CreateResponse>
  </soap:Body>
</soap:Envelope>

--------------------------------------
3
  • Are you using a triggered send data extension? If not, add one and give it another shot. – David Jackman Feb 1 '16 at 15:37
  • yes, now in the field "Selected Active Data Extensions" I have the name of triggered send data extension (TriggeredSendDataExtension - 20160121), but the issue is not solved – Michele Feb 1 '16 at 16:26
  • REVIEW: I tried the sames scripts on another ORG and there everything works! Apparently the problem is our ORG. Is there any version of ORG where the send via TriggeredEmail is not permitted? – Michele Feb 10 '16 at 11:09
0

Where is the %%Salesforce First Name%% set in your API call?

You can't reference a personalization string in your email if you're not setting it in your API call (with exceptions being the ones like %%profile_center_url%% that are always present).

I recommend not using the raw personalization strings in your email AMPScript.

It's best to wrap them in the AttributeValue() function like this:

%%[
var @lastName
set @lastName = AttributeValue("lastName")
set @lastName = iif(empty(@lastName),"Valued Customer",@lastName)

]%%
Dear %%=v(@LastName)=%%,

This will lessen the possibility of a runtime error in your email that causes it to not be sent.

5
  • - I tried modifying the API call with this change: Attribute firstName = Attribute.Factory.newInstance(); firstName.setName("Salesforce First Name"); firstName.setValue(iFirstName); Attribute lastName = Attribute.Factory.newInstance(); lastName.setName("Salesforce Last Name"); lastName.setValue(iLastName); without any change on the result – Michele Feb 2 '16 at 10:05
  • - I tried modifying the body of mail template deleting all personalization except "profile center": Dear, <table cellpadding="2" cellspacing="0" width="600" ID="Table5" Border=0><tr><td><font face="verdana" size="1" color="#444444">This email was sent by: <b>%%Member_Busname%%</b><br>%%Member_Addr%% %%Member_City%%, %%Member_State%%, %%Member_PostalCode%%, %%Member_Country%%<br><br></font></td></tr></table><br> <a href="%%profile_center_url%%" alias="Update Profile">Update Profile</a> <custom name="opencounter" type="tracking"> without any change on the result – Michele Feb 2 '16 at 10:09
  • In Past Sends of email Template used for triggered email I see this: General Information Job ID : 284367 Status : Complete Email Name : email_test_mt Email Subject : prova subject From Name : Ten Tecnologie & Networking From Email : mo.ro@te***up.*t Send Date/Time : 02 February 2016 11:41 (GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna * Send Target Data Extension: TriggeredSendDataExtension - 20160121 - Mirko (3 subscribers) (Using TestMikList) despite the mail was not sent and the count of queued/completed/errored didn't change – Michele Feb 2 '16 at 10:48
  • Can you update your question with the SOAP envelope for your API request? – Adam Spriggs Feb 2 '16 at 14:25
  • I add in question the SOAP envelope for Fuel Java SDK call – Michele Feb 2 '16 at 22:59
0

You are sending using a Commercial send classification. This means it will honor Opt-out status on the sends so if the subscriber record was unsubscribed then it wouldn't be sent but wouldn't be errored or queued.

Also, if the subscriber record was in a held status then that could also cause the send to not go to completed/queued/error.

2
  • I tried to change the "Send Classification" to "Default Transactional" without any change on the result The User that I'm trying to send mail is not in status Unsubscribed – Michele Feb 2 '16 at 10:18
  • I have used your project on this url: github.com/MichaelAllenClark/exacttarget-soap-java to test the API connection & related objects (TriggeredSend, DE, etc..). Thanks, many thanks MAC but apparently I'm still missing something – Michele Feb 2 '16 at 15:00
0

Does your AppCenter app have sufficient privileges on emails, lists, and other required records? I've found triggered sends fail without errors if they're too restrictive. I don't know exactly which permissions are required, it might be best to create an app with all permissions enabled to see if that's causing your problem.

Also, not sure about for the Java SDK, but with the REST API TriggeredSends are asynchronous by default. This means the response only informs you that the triggered send was received correctly, not that it was sent. You could force the request to be synchronous by adding the following line after the line where you define createOptions:

CreateOptions createOptions = CreateOptions.Factory.newInstance(); // Your existing line    
createOptions.setRequestType(RequestType.Synchronous); // Line to add
5
  • we have all privileges on email, Contacts - List And Subscribers, Data - Data Extensions. I added the following line on request: createOptions.setRequestType(RequestType.SYNCHRONOUS); without any change on the result and on feedback from java request. The response is always: Triggered Send Status Code: OK Triggered Send Status Message: Triggered Send has been queued – Michele Feb 3 '16 at 9:35
  • Ok, good to cross those off! Other reasons I've seen for it failing are: 1) having required attributes in the all subscribers list and/or selected data extension; 2) not starting/restarting the triggered send definition after publishing changes; 3) not passing validation tests on the email; 4) possible problems with the email content itself - testable by removing all personalisation from the email. – Alex McDonald Feb 3 '16 at 10:07
  • 1) in the email i have deleted all attributes except the ones being like %%profile_center_url%% 2) I have started and paused one hundred times... :-) 3) only validated and published mail are accepted in triggered email... 4) see first answer – Michele Feb 4 '16 at 13:37
  • To clarify Point 1: I wasn't referring to the email content. If your AllSubscribers List, OR the List you selected in your Send Definition, OR your selected Data Extension have any Required Attributes/Fields in their List/DE Definitions, then you need to include those fields in your API call. – Alex McDonald Feb 4 '16 at 22:17
  • BTW - are you seeing the subscriber being added to the Data Extension and Lists? And, are you using the same subscriber key for every send? That shouldn't make a difference but running out of ideas! – Alex McDonald Feb 4 '16 at 22:24
0

After an update of Org from Mc Global Support, the issue was solved. The reply of Mc Global Support was:

I have received a response from an internal contact that believes there is an additional enablement that needs to be updated on your account. I am going to have our database team update your account and I will follow up with you once this is complete.

Next round, Michele Trotta

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.