I have created an API call for triggering a TriggeredSend in my account. The account has the triggered send in Running status. The trigger is working when I make my API call. The problem is not that it is not working, but that the API response says that it is status OK when the email address does not match the associated subscriber key. I would like to see an ERROR for the status in the response if the id doesn't match the user in the XML request.

As you will see in the account, there is no subscriber matching these values: mmcnally2@fulcrumtech.net 10195236

Here is my XML request:

POST /Service.asmx HTTP/1.1
Host: webservice.exacttarget.com
Connection: Keep-Alive
User-Agent: PHP-SOAP/5.3.28
Content-Type: text/xml; charset=utf-8
SOAPAction: "Create"
Content-Length: 1264

<?xml version="1.0" encoding="UTF-8"?>
<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:Body><ns1:CreateRequest><ns1:Options/><ns1:Objects xsi:type="ns1:TriggeredSend"><ns1:TriggeredSendDefinition><ns1:CustomerKey>16928</ns1:CustomerKey></ns1:TriggeredSendDefinition><ns1:Subscribers><ns1:EmailAddress>mmcnally2@fulcrumtech.net</ns1:EmailAddress><ns1:SubscriberKey>10195236</ns1:SubscriberKey></ns1:Subscribers></ns1:Objects></ns1:CreateRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>

HTTP/1.1 200 OK
Cache-Control: private, max-age=0
Content-Length: 1354
Content-Type: text/xml; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Wed, 16 Jul 2014 16:46:39 GMT
Connection: close

<?xml version="1.0" encoding="utf-8"?><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:b674d5e9-2a48-4d08-98e4-4f310a078e29</wsa:MessageID><wsa:RelatesTo>urn:uuid:c1731c44-b2bf-4024-ae31-a1c41a296abd</wsa:RelatesTo><wsa:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:To><wsse:Security><wsu:Timestamp wsu:Id="Timestamp-09bafc67-0919-4f51-a739-bac6ec0c4f25"><wsu:Created>2014-07-16T16:46:40Z</wsu:Created><wsu:Expires>2014-07-16T16:51:40Z</wsu:Expires></wsu:Timestamp></wsse:Security></soap:Header><soap:Body><CreateResponse xmlns="http://exacttarget.com/wsdl/partnerAPI"><Results xsi:type="TriggeredSendCreateResult"><StatusCode>OK</StatusCode><StatusMessage>Created TriggeredSend</StatusMessage><OrdinalID>0</OrdinalID><NewID>0</NewID></Results><RequestID>21bbb84c-cc59-49b4-96ce-0892eb906dd9</RequestID><OverallStatus>OK</OverallStatus></CreateResponse></soap:Body></soap:Envelope>

ET uses a 1:many relationship on email:subscriberkey, even though its usually treated as 1:1. The use case is that many families share email addresses, and so accommodation was made for multiple subscribers on one email address.

So, what is happening in your case is that the email address is being added to the All Subscribers under a new key, and doing the send. If you query there now. you will see both.

Hope this helps.


Axiom, what you're looking for is not the behaviour you would get from a TriggeredSend. If the SubscriberKey does not exist there already, a new All Subscribers record will be created with the SubscriberKey and EmailAddress provided in the TriggeredSend API call. The email will be sent to that email address. The behaviour of a TriggeredSend for a SubscriberKey that's already been sent to/already exists in All Subscribers is that the email is sent to the email address contained in your API call. There's no validation intended to ensure that the email address in your API call matches anything at all. That's probably the responsibility of your app, but...

If what you require is to check that the email address you have matches All Subscribers, either do it in your application that's calling the API to check what email's in All Subscribers for that SubscriberKey (preferable) or do one of two things:

  1. Use an Exclusion Script with the Triggered Send Definition to test whether the email address matches All Subs - this is a line of AMPScript that returns a boolean. No error will be returned to your App, but the email will not be sent.
  2. Use AMPScript to error the send using the RaiseError function. This would raise an error for your App to handle if you're making a Synchronous API Call.

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.