Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Programming the ExactTarget
Marketing Cloud
Dale McCrory, ExactTarget, Principal Product Manager, Fuel Platform
google.com...
Safe harbor
Safe harbor statement under the Private Securities Litigation Reform Act of 1995:
This presentation may contai...
ExactTarget Marketing Cloud
As a customer, you can automate entire marketing campaigns,
customize the ExactTarget applicat...
ExactTarget Fuel as part of Salesforce1
• Send email, SMS and push messages.
• Personalize messages using data and content...
The Marketing and
Development Mindmeld
Customer touchpoints for developers
Principle #1
Every email, every message, and every notification should be
thought of a...
Customer touchpoints for developers
Principle #2
Highly-targeted, relevant communication is as much a technology
problem a...
Data drives relevancy
Customer events improve relevancy
Customer events improve relevancy
Permission, permission, permission
Customer touchpoint innovation
Key Fuel system objects for email sending
Marketing Cloud Fuel Objects mapped to Force.com
Marketing Cloud Fuel

Force.com

Lists

CRM Campaigns or Reports

Data Ex...
A “Super” Example
Free pizza for guessing the coin toss
Free pizza for guessing the coin toss
Visualization of saving a subscriber and a data extension

Enroll

RewardsMember

De...
Enrolling a new Rewards Members
SubscriberKey EmailAddress

First Name

Last Name

RegisteredDate

$subscriber = new ET_Su...
Enrolling a new Rewards Members
SubscriberKey EmailAddress

First Name

Last Name

RegisteredDate

$subscriber = new ET_Su...
Enrolling a new Rewards Members
SubscriberKey EmailAddress

First Name

Last Name

RegisteredDate

$subscriber = new ET_Su...
Enrolling a new Rewards Members
SubscriberKey EmailAddress

First Name

Last Name

RegisteredDate

12332432

John

Smith

...
Storing the Rewards Member Vote event
memberId

tossVote

$postDRRow = new ET_DataExtension_Row();
$postDRRow->authStub = ...
Storing the Rewards Member Vote event
memberId

tossVote

$postDRRow = new ET_DataExtension_Row();
$postDRRow->authStub = ...
Storing the Rewards Member Vote event
memberId

tossVote

$postDRRow = new ET_DataExtension_Row();
$postDRRow->authStub = ...
Storing the Rewards Member Vote event
memberId

tossVote

12332432

heads

$postDRRow = new ET_DataExtension_Row();
$postD...
Email code to myself

Event

TriggeredSend

Email

API Call

CodeRequest

CoinToss

Send-Time Data in
a Data Extension or
...
Email code to myself: Triggered send event
Event: Trigger an email send and add personalization data
ET_TriggeredSend ts =...
Email code to myself: Triggered send event
Event: Trigger an email send and add personalization data
ET_TriggeredSend ts =...
Email code to myself: Triggered send event
Event: Trigger an email send and add personalization data
ET_TriggeredSend ts =...
Email code to myself: Email personalization
Substitution String and AMPScript
in an Email Template

Rendered Email

Dear %...
Email code to myself: Email personalization
Substitution String and AMPScript
in an Email Template

Rendered Email

Dear %...
Email code to myself: Email personalization
Substitution String and AMPScript
in an Email Template

Rendered Email

Dear %...
Email code to myself: Email personalization
Substitution String and AMPScript
in an Email Template

Rendered Email

Dear %...
Email code to myself: Email personalization
Substitution String and AMPScript
in an Email Template

Rendered Email

Dear %...
Mobile Messaging with
Push Notifications
Using push messaging as a customer touchpoint
Using push messaging as a customer touchpoint
POST https://www.exacttargetapis.com/push/v1/messageTag/OEl8ODow/send
Author...
Using push messaging as a customer touchpoint
POST https://www.exacttargetapis.com/push/v1/messageTag/OEl8ODow/send
Author...
Using push messaging as a customer touchpoint
POST https://www.exacttargetapis.com/push/v1/messageTag/OEl8ODow/send
Author...
Using push messaging as a customer touchpoint
POST https://www.exacttargetapis.com/push/v1/messageTag/OEl8ODow/send
Author...
Mobile Messaging with
SMS
Using SMS messaging as a customer touchpoint
Using SMS messaging as a customer touchpoint
POST https://www.exacttargetapis.com/sms/v1/messageContact/MzA6Nzg6MA/send
Au...
Using SMS messaging as a customer touchpoint
POST https://www.exacttargetapis.com/sms/v1/messageContact/MzA6Nzg6MA/send
Au...
Using SMS messaging as a customer touchpoint
POST https://www.exacttargetapis.com/sms/v1/messageContact/MzA6Nzg6MA/send
Au...
Using SMS messaging as a customer touchpoint
POST https://www.exacttargetapis.com/sms/v1/messageContact/MzA6Nzg6MA/send
Au...
Using SMS messaging as a customer touchpoint
POST https://www.exacttargetapis.com/sms/v1/messageContact/MzA6Nzg6MA/send
Au...
Learning More…
Developer Resources

code.exacttarget.com
Dreamforce Developer Edition

code.exacttarget.com
INNOVATE!!
!
Dale McCrory
ExactTarget
Principal Product Manager, Fuel Platform
google.com/+DaleMcCrory
Programming the ExactTarget Marketing Cloud
Programming the ExactTarget Marketing Cloud
Programming the ExactTarget Marketing Cloud
Programming the ExactTarget Marketing Cloud
Programming the ExactTarget Marketing Cloud
Programming the ExactTarget Marketing Cloud
Programming the ExactTarget Marketing Cloud
Programming the ExactTarget Marketing Cloud
Programming the ExactTarget Marketing Cloud
Programming the ExactTarget Marketing Cloud
Programming the ExactTarget Marketing Cloud
Upcoming SlideShare
Loading in …5
×

Programming the ExactTarget Marketing Cloud

4,864 views

Published on

For over a decade, ExactTarget has offered a comprehensive set of APIs that enable our customers to automate their email campaigns and seamlessly integrate their marketing, analytics, and other business software. Join us as we introduce core Marketing Cloud concepts, including the importance of permission and the value of relevancy, as well as the core technologies that make up the ExactTarget platform, including lists, data extensions, and AMPscript.

Published in: Technology, Business

Programming the ExactTarget Marketing Cloud

  1. 1. Programming the ExactTarget Marketing Cloud Dale McCrory, ExactTarget, Principal Product Manager, Fuel Platform google.com/+DaleMcCrory
  2. 2. Safe harbor Safe harbor statement under the Private Securities Litigation Reform Act of 1995: This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such uncertainties materialize or if any of the assumptions proves incorrect, the results of salesforce.com, inc. could differ materially from the results expressed or implied by the forward-looking statements we make. All statements other than statements of historical fact could be deemed forward-looking, including any projections of product or service availability, subscriber growth, earnings, revenues, or other financial items and any statements regarding strategies or plans of management for future operations, statements of belief, any statements concerning new, planned, or upgraded services or technology developments and customer contracts or use of our services. The risks and uncertainties referred to above include – but are not limited to – risks associated with developing and delivering new functionality for our service, new products and services, our new business model, our past operating losses, possible fluctuations in our operating results and rate of growth, interruptions or delays in our Web hosting, breach of our security measures, the outcome of any litigation, risks associated with completed and any possible mergers and acquisitions, the immature market in which we operate, our relatively limited operating history, our ability to expand, retain, and motivate our employees and manage our growth, new releases of our service and successful customer deployment, our limited history reselling non-salesforce.com products, and utilization and selling to larger enterprise customers. Further information on potential factors that could affect the financial results of salesforce.com, inc. is included in our annual report on Form 10-K for the most recent fiscal year and in our quarterly report on Form 10-Q for the most recent fiscal quarter. These documents and others containing important disclosures are available on the SEC Filings section of the Investor Information section of our Web site. Any unreleased services or features referenced in this or other presentations, press releases or public statements are not currently available and may not be delivered on time or at all. Customers who purchase our services should make the purchase decisions based upon features that are currently available. Salesforce.com, inc. assumes no obligation and does not intend to update these forward-looking statements.
  3. 3. ExactTarget Marketing Cloud As a customer, you can automate entire marketing campaigns, customize the ExactTarget application to your specific needs, or integrate ExactTarget with a variety of CRM, analytics, and other business software. As a partner, you can build or extend marketing applications and take those applications to market with ExactTarget via one of our platform-related partner programs. As a developer, the possibilities are endless.
  4. 4. ExactTarget Fuel as part of Salesforce1 • Send email, SMS and push messages. • Personalize messages using data and content scripting. • Measure interaction and engagement (email opens & clicks, etc.). • Build apps that extend the Marketing Cloud.
  5. 5. The Marketing and Development Mindmeld
  6. 6. Customer touchpoints for developers Principle #1 Every email, every message, and every notification should be thought of as a customer touchpoint -- an opportunity to influence your customers and prospects.
  7. 7. Customer touchpoints for developers Principle #2 Highly-targeted, relevant communication is as much a technology problem as it is a marketer's dilemma.
  8. 8. Data drives relevancy
  9. 9. Customer events improve relevancy
  10. 10. Customer events improve relevancy
  11. 11. Permission, permission, permission
  12. 12. Customer touchpoint innovation
  13. 13. Key Fuel system objects for email sending
  14. 14. Marketing Cloud Fuel Objects mapped to Force.com Marketing Cloud Fuel Force.com Lists CRM Campaigns or Reports Data Extensions Objects Contacts (Subscribers) CRM Contacts List Subscription CRM CampaignMembers Data Extension Fields / Subscriber Attributes Data Extension Keys Object Fields Marketing Events CRM Contact Activities Relationships
  15. 15. A “Super” Example
  16. 16. Free pizza for guessing the coin toss
  17. 17. Free pizza for guessing the coin toss Visualization of saving a subscriber and a data extension Enroll RewardsMember Demographic Data • Rewards Member ID • First Name • Last Name • Zip Code Marketing List Vote CoinToss Data Extension Event Data • Rewards Member ID • TossVote
  18. 18. Enrolling a new Rewards Members SubscriberKey EmailAddress First Name Last Name RegisteredDate $subscriber = new ET_Subscriber(); $subscriber->authStub = $myclient; $subscriber->props = array("SubscriberKey" => "12332432", "EmailAddress" => "myemail@mycompany.com", "Lists" => array("ID" => $listID)); $subscriber->props['Attributes'] = array( array('Name' => 'First Name', 'Value' => 'John'), array('Name' => 'Last Name', 'Value' => 'Smith'), array('Name' => 'RegisteredDate', 'Value' => '12/01/2013 1:00pm’)); $postResponse = $subscriber->post();
  19. 19. Enrolling a new Rewards Members SubscriberKey EmailAddress First Name Last Name RegisteredDate $subscriber = new ET_Subscriber(); $subscriber->authStub = $myclient; $subscriber->props = array("SubscriberKey" => "12332432", "EmailAddress" => "myemail@mycompany.com", "Lists" => array("ID" => $listID)); $subscriber->props['Attributes'] = array( array('Name' => 'First Name', 'Value' => 'John'), array('Name' => 'Last Name', 'Value' => 'Smith'), array('Name' => 'RegisteredDate', 'Value' => '12/01/2013 1:00pm’)); $postResponse = $subscriber->post();
  20. 20. Enrolling a new Rewards Members SubscriberKey EmailAddress First Name Last Name RegisteredDate $subscriber = new ET_Subscriber(); $subscriber->authStub = $myclient; $subscriber->props = array("SubscriberKey" => "12332432", "EmailAddress" => "myemail@mycompany.com", "Lists" => array("ID" => $listID)); $subscriber->props['Attributes'] = array( array('Name' => 'First Name', 'Value' => 'John'), array('Name' => 'Last Name', 'Value' => 'Smith'), array('Name' => 'RegisteredDate', 'Value' => '12/01/2013 1:00pm’)); $postResponse = $subscriber->post();
  21. 21. Enrolling a new Rewards Members SubscriberKey EmailAddress First Name Last Name RegisteredDate 12332432 John Smith 12/01/2013 1:00pm myemail@mycompany.com $subscriber = new ET_Subscriber(); $subscriber->authStub = $myclient; $subscriber->props = array("SubscriberKey" => "12332432", "EmailAddress" => "myemail@mycompany.com", "Lists" => array("ID" => $listID)); $subscriber->props['Attributes'] = array( array('Name' => 'First Name', 'Value' => 'John'), array('Name' => 'Last Name', 'Value' => 'Smith'), array('Name' => 'RegisteredDate', 'Value' => '12/01/2013 1:00pm’)); $postResponse = $subscriber->post();
  22. 22. Storing the Rewards Member Vote event memberId tossVote $postDRRow = new ET_DataExtension_Row(); $postDRRow->authStub = $myclient; $postDRRow->Name = "CoinToss"; $postDRRow->props = array( ”memberId" => "12332432", "tossVote" => "heads” ); $postResponse = $postDRRow->post(); print_r($postResponse);
  23. 23. Storing the Rewards Member Vote event memberId tossVote $postDRRow = new ET_DataExtension_Row(); $postDRRow->authStub = $myclient; $postDRRow->Name = "CoinToss"; $postDRRow->props = array( ”memberId" => "12332432", "tossVote" => "heads” ); $postResponse = $postDRRow->post(); print_r($postResponse);
  24. 24. Storing the Rewards Member Vote event memberId tossVote $postDRRow = new ET_DataExtension_Row(); $postDRRow->authStub = $myclient; $postDRRow->Name = "CoinToss"; $postDRRow->props = array( ”memberId" => "12332432", "tossVote" => "heads” ); $postResponse = $postDRRow->post(); print_r($postResponse);
  25. 25. Storing the Rewards Member Vote event memberId tossVote 12332432 heads $postDRRow = new ET_DataExtension_Row(); $postDRRow->authStub = $myclient; $postDRRow->Name = "CoinToss"; $postDRRow->props = array( ”memberId" => "12332432", "tossVote" => "heads” ); $postResponse = $postDRRow->post(); print_r($postResponse); SubscriberKey memberId
  26. 26. Email code to myself Event TriggeredSend Email API Call CodeRequest CoinToss Send-Time Data in a Data Extension or Subscriber Attribute Data Extension RewardsMember Subscriber Attributes
  27. 27. Email code to myself: Triggered send event Event: Trigger an email send and add personalization data ET_TriggeredSend ts = new ET_TriggeredSend(); ts.AuthStub = $myclient; ts.CustomerKey = "PromoCode"; ts.Subscribers = new ET_Subscriber[] { new ET_Subscriber() { emailAddress = "myemail@mycompany.com", subscriberKey = "12332432”, promoCode = "f02020ddE" } }; SendReturn results = ts.Send();
  28. 28. Email code to myself: Triggered send event Event: Trigger an email send and add personalization data ET_TriggeredSend ts = new ET_TriggeredSend(); ts.AuthStub = $myclient; ts.CustomerKey = "PromoCode"; ts.Subscribers = new ET_Subscriber[] { new ET_Subscriber() { emailAddress = "myemail@mycompany.com", subscriberKey = "12332432”, promoCode = "f02020ddE" } }; SendReturn results = ts.Send();
  29. 29. Email code to myself: Triggered send event Event: Trigger an email send and add personalization data ET_TriggeredSend ts = new ET_TriggeredSend(); ts.AuthStub = $myclient; ts.CustomerKey = "PromoCode"; ts.Subscribers = new ET_Subscriber[] { new ET_Subscriber() { emailAddress = "myemail@mycompany.com", subscriberKey = "12332432”, promoCode = "f02020ddE" } }; SendReturn results = ts.Send();
  30. 30. Email code to myself: Email personalization Substitution String and AMPScript in an Email Template Rendered Email Dear %%First Name%% %%Last Name%%, Dear John Smith, Your promo code for free pizza is: %%PromoCode%% Your promo code for free pizza is: f02020ddE Thanks for voting: %%=Lookup(“CoinToss”,”tossVote”,“memberId”,_subscriberKey)=%% Thanks for voting: Heads
  31. 31. Email code to myself: Email personalization Substitution String and AMPScript in an Email Template Rendered Email Dear %%First Name%% %%Last Name%%, Dear John Smith, Your promo code for free pizza is: %%PromoCode%% Your promo code for free pizza is: f02020ddE Thanks for voting: %%=Lookup(“CoinToss”,”tossVote”,“memberId”,_subscriberKey)=%% Thanks for voting: Heads
  32. 32. Email code to myself: Email personalization Substitution String and AMPScript in an Email Template Rendered Email Dear %%First Name%% %%Last Name%%, Dear John Smith, Your promo code for free pizza is: %%PromoCode%% Your promo code for free pizza is: f02020ddE Thanks for voting: %%=Lookup(“CoinToss”,”tossVote”,“memberId”,_subscriberKey)=%% Thanks for voting: Heads Data Source #1: Marketing List by Subscriber Key
  33. 33. Email code to myself: Email personalization Substitution String and AMPScript in an Email Template Rendered Email Dear %%First Name%% %%Last Name%%, Dear John Smith, Your promo code for free pizza is: %%PromoCode%% Your promo code for free pizza is: f02020ddE Thanks for voting: %%=Lookup(“CoinToss”,”tossVote”,“memberId”,_subscriberKey)=%% Thanks for voting: Heads Data Source #1: Marketing List by Subscriber Key Data Source #2: Transactional Send Data
  34. 34. Email code to myself: Email personalization Substitution String and AMPScript in an Email Template Rendered Email Dear %%First Name%% %%Last Name%%, Dear John Smith, Your promo code for free pizza is: %%PromoCode%% Your promo code for free pizza is: f02020ddE Thanks for voting: %%=Lookup(“CoinToss”,”tossVote”,“memberId”,_subscriberKey)=%% Thanks for voting: Heads Data Source #1: Marketing List by Subscriber Key Data Source #2: Transactional Send Data Data Source #3: Voting Data by SubscriberKey
  35. 35. Mobile Messaging with Push Notifications
  36. 36. Using push messaging as a customer touchpoint
  37. 37. Using push messaging as a customer touchpoint POST https://www.exacttargetapis.com/push/v1/messageTag/OEl8ODow/send Authorization: Bearer exampletoken1 Content-Type: application/json { "InclusionTags": [ "Salesforce", "ExactTarget" ], "ExclusionTags": [ "Competitors" ], "Override": true, "MessageText": "Cloudy with a Chance of Customers - Now playing!", "Sound": "lightning.caf", "Badge": "+1", "OpenDirect": "OD01", "CustomPayload": "{ "availableSeats": "2 billion" }" }
  38. 38. Using push messaging as a customer touchpoint POST https://www.exacttargetapis.com/push/v1/messageTag/OEl8ODow/send Authorization: Bearer exampletoken1 Content-Type: application/json { "InclusionTags": [ "Salesforce", "ExactTarget" ], "ExclusionTags": [ "Competitors" ], "Override": true, "MessageText": "Cloudy with a Chance of Customers - Now playing!", "Sound": "lightning.caf", "Badge": "+1", "OpenDirect": "OD01", "CustomPayload": "{ "availableSeats": "2 billion" }" }
  39. 39. Using push messaging as a customer touchpoint POST https://www.exacttargetapis.com/push/v1/messageTag/OEl8ODow/send Authorization: Bearer exampletoken1 Content-Type: application/json { "InclusionTags": [ "Salesforce", "ExactTarget" ], "ExclusionTags": [ "Competitors" ], "Override": true, "MessageText": "Cloudy with a Chance of Customers - Now playing!", "Sound": "lightning.caf", "Badge": "+1", "OpenDirect": "OD01", "CustomPayload": "{ "availableSeats": "2 billion" }" }
  40. 40. Using push messaging as a customer touchpoint POST https://www.exacttargetapis.com/push/v1/messageTag/OEl8ODow/send Authorization: Bearer exampletoken1 Content-Type: application/json { "InclusionTags": [ "Salesforce", "ExactTarget" ], "ExclusionTags": [ "Competitors" ], "Override": true, "MessageText": "Cloudy with a Chance of Customers - Now playing!", "Sound": "lightning.caf", "Badge": "+1", "OpenDirect": "OD01", "CustomPayload": "{ "availableSeats": "2 billion" }" }
  41. 41. Mobile Messaging with SMS
  42. 42. Using SMS messaging as a customer touchpoint
  43. 43. Using SMS messaging as a customer touchpoint POST https://www.exacttargetapis.com/sms/v1/messageContact/MzA6Nzg6MA/send Authorization: Bearer exampletoken1 Content-Type: application/json { "mobileNumbers": [ "13175551212" ], "Subscribe": true, "keyword": "ALERTS", "messageText": "Text ALERTS to 12345 to receive new movie notifications via SMS.", "BlackoutWindow": { "UtcOffset": "-0500", "WindowStart": "1500", "WindowEnd": "2200" }, "SendTime": "2012-10-05 20:01" }
  44. 44. Using SMS messaging as a customer touchpoint POST https://www.exacttargetapis.com/sms/v1/messageContact/MzA6Nzg6MA/send Authorization: Bearer exampletoken1 Content-Type: application/json { "mobileNumbers": [ "13175551212" ], "Subscribe": true, "keyword": "ALERTS", "messageText": "Text ALERTS to 12345 to receive new movie notifications via SMS.", "BlackoutWindow": { "UtcOffset": "-0500", "WindowStart": "1500", "WindowEnd": "2200" }, "SendTime": "2012-10-05 20:01" }
  45. 45. Using SMS messaging as a customer touchpoint POST https://www.exacttargetapis.com/sms/v1/messageContact/MzA6Nzg6MA/send Authorization: Bearer exampletoken1 Content-Type: application/json { "mobileNumbers": [ "13175551212" ], "Subscribe": true, "keyword": "ALERTS", "messageText": "Text ALERTS to 12345 to receive new movie notifications via SMS.", "BlackoutWindow": { "UtcOffset": "-0500", "WindowStart": "1500", "WindowEnd": "2200" }, "SendTime": "2012-10-05 20:01" }
  46. 46. Using SMS messaging as a customer touchpoint POST https://www.exacttargetapis.com/sms/v1/messageContact/MzA6Nzg6MA/send Authorization: Bearer exampletoken1 Content-Type: application/json { "mobileNumbers": [ "13175551212" ], "Subscribe": true, "keyword": "ALERTS", "messageText": "Text ALERTS to 12345 to receive new movie notifications via SMS.", "BlackoutWindow": { "UtcOffset": "-0500", "WindowStart": "1500", "WindowEnd": "2200" }, "SendTime": "2012-10-05 20:01" }
  47. 47. Using SMS messaging as a customer touchpoint POST https://www.exacttargetapis.com/sms/v1/messageContact/MzA6Nzg6MA/send Authorization: Bearer exampletoken1 Content-Type: application/json { "mobileNumbers": [ "13175551212" ], "Subscribe": true, "keyword": "ALERTS", "messageText": "Text ALERTS to 12345 to receive new movie notifications via SMS.", "BlackoutWindow": { "UtcOffset": "-0500", "WindowStart": "1500", "WindowEnd": "2200" }, "SendTime": "2012-10-05 20:01" }
  48. 48. Learning More…
  49. 49. Developer Resources code.exacttarget.com
  50. 50. Dreamforce Developer Edition code.exacttarget.com
  51. 51. INNOVATE!! !
  52. 52. Dale McCrory ExactTarget Principal Product Manager, Fuel Platform google.com/+DaleMcCrory

×