2

I have the following steps to create a trigger send email:

  1. Create a new Subscriber
  2. Create Data Extension Record about this subscriber
  3. Create Email on a triggered send definition, using the data of just inserted data extension to show fields on the email.

How do I identify in the API call that I want to just send one email to the data I just inserted? Does Create function has the ability to filter like Retrieve function?

2 Answers 2

4

I have this resolved under assistance of ET Support engineer. The following are the steps it finally works, presenting using FuelSDK:

Step 1: Create Subscriber

        var client = new ET_Client();
        var sub = new ET_Subscriber();
        sub.AuthStub = client;
        sub.EmailAddress = request.ToEmailAddress;
        sub.Attributes = new FuelSDK.ET_ProfileAttribute[] 
{ new ET_ProfileAttribute() { Name = "First Name", Value = "ExactTarget Example" } };
        PostReturn postResponse = sub.Post();

Step 2: Place the newly created subscriber to the list that binds to the trigger send

        client.AddSubscribersToList(request.ToEmailAddress, new List<int>(subList));

Step 3: Send Trigger Email(Trigger Send action will add data extension for you)

        var ts = new ET_TriggeredSend();
        ts.AuthStub = client;
        ts.Subscribers = new ET_Subscriber[] { new ET_Subscriber() { EmailAddress = request.ToEmailAddress, SubscriberKey = request.ToEmailAddress,
        Attributes = new List<FuelSDK.Attribute>(){
            new FuelSDK.Attribute(){Name = "FromCustomerID", Value = Convert.ToString(request.OriginatorCustomerID)},
            new FuelSDK.Attribute(){Name = "FromName", Value = request.OriginatorName},
            new FuelSDK.Attribute(){Name = "TransferOutQuantity", Value = Convert.ToString(request.Quantity)},
            new FuelSDK.Attribute(){Name = "ToCustomerID", Value = Convert.ToString(request.ReceiverCustomerID)},
            new FuelSDK.Attribute(){Name = "ToName", Value = request.ReceiverName},
            new FuelSDK.Attribute(){Name = "EventName", Value = request.EventName},
            new FuelSDK.Attribute(){Name = "TTOPrimaryKey", Value = guid},
            new FuelSDK.Attribute(){Name = "SubscriberKey", Value = request.ToEmailAddress},
            new FuelSDK.Attribute(){Name = "EmailAddress", Value = request.ToEmailAddress},
        }.ToArray()}};
        ts.SendSourceDataExtension = new DataExtension() { CustomerKey = DataExtensionKey.TTOriginator.ToString() };
        ts.CustomerKey = TriggeredSendKey.TicketTransferOriginator.ToString();
        SendReturn sendResponse_TS = ts.Send();

In Step 3, assign the value of the parameters to Attributes list. this attribute list will add to data extension along with the trigger sending.

2

I'd recommend you do this differently. Triggered Sends are designed to be transactional, one email to one subscriber.

  1. Set up a Triggered Send in the UI. You will have to manually test that the emails sends without the trigger in place. Do not forget to start the interaction.

  2. Use the rest call, passing in the subscriber. This will create the new subscriber if this subscriber does not yet exist. It will also add this subscriber to a DE if you configure as such.

Please see https://code.exacttarget.com/apis-sdks/rest-api/v1/messaging/messageDefinitionSends.html for more info.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .