Building Apps for the ExactTarget Marketing Cloud

44
Building Apps for the ExactTarget Marketing Cloud Ian Murdock, ExactTarget, VP Platform @imurdock

Transcript of Building Apps for the ExactTarget Marketing Cloud

Page 1: Building Apps for the ExactTarget Marketing Cloud

Building Apps for the ExactTarget

Marketing Cloud

Ian Murdock, ExactTarget, VP Platform

@imurdock

Page 2: Building Apps for the ExactTarget Marketing Cloud

Safe harborSafe 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.

Page 3: Building Apps for the ExactTarget Marketing Cloud

Code@ExactTarget

http://code.exacttarget.com

Page 4: Building Apps for the ExactTarget Marketing Cloud

Dreamforce Developer Edition

http://code.exacttarget.com/hackathon-dreamforce

Page 5: Building Apps for the ExactTarget Marketing Cloud

The ExactTarget Marketing Cloud

Page 6: Building Apps for the ExactTarget Marketing Cloud

The ExactTarget Marketing Cloud

Page 7: Building Apps for the ExactTarget Marketing Cloud

Data drives relevancy

Page 8: Building Apps for the ExactTarget Marketing Cloud

Relevancy drives engagement

Page 9: Building Apps for the ExactTarget Marketing Cloud

Decade in the platform business

Page 10: Building Apps for the ExactTarget Marketing Cloud

Decade in the platform business

Integration Automation

Page 11: Building Apps for the ExactTarget Marketing Cloud

Decade in the platform business

Page 12: Building Apps for the ExactTarget Marketing Cloud

Decade in the platform business

Integration Automation Applications

Page 13: Building Apps for the ExactTarget Marketing Cloud

Marketing Cloud Apps

Page 14: Building Apps for the ExactTarget Marketing Cloud

Marketing Cloud Apps

Demo

Page 15: Building Apps for the ExactTarget Marketing Cloud

Marketing Cloud Apps

• Marketing Cloud apps are

Web apps that use

ExactTarget Fuel and

integrate with the Marketing

Cloud via an iframe

with single sign-on (SSO)

Page 16: Building Apps for the ExactTarget Marketing Cloud

Marketing Cloud Apps

• Marketing Cloud apps are

Web apps that use

ExactTarget Fuel and

integrate with the Marketing

Cloud via an iframe

with single sign-on (SSO)

Page 17: Building Apps for the ExactTarget Marketing Cloud

App Center

Page 18: Building Apps for the ExactTarget Marketing Cloud

App Center

Page 19: Building Apps for the ExactTarget Marketing Cloud

App Center

Page 20: Building Apps for the ExactTarget Marketing Cloud

App Center

Page 21: Building Apps for the ExactTarget Marketing Cloud

App Center

Page 22: Building Apps for the ExactTarget Marketing Cloud

App Center

Page 23: Building Apps for the ExactTarget Marketing Cloud

App Center

Page 24: Building Apps for the ExactTarget Marketing Cloud

App Center

Page 25: Building Apps for the ExactTarget Marketing Cloud

ExactTarget Marketing Cloud

Page 26: Building Apps for the ExactTarget Marketing Cloud

Single sign-on (SSO){

"exp": 1366605874,

"iss": "https://imh.exacttarget.com",

"request":

{

"claimsVersion": 1,

"user":

{

"id": 10083350,

"oauthToken": "w35ch4cxkrb2kqd33ujq2dde",

"internalOauthToken": "0bUh1dFrbTcU1MXj7VvrAbc3w1365Hecw6qSgL0caJzOjHepT9XHSEllucoDBAdNW",

"refreshToken": "2e33rrhev847jg97zt2zx333",

"expiresIn": 3600,

"email": "[email protected]",

"culture": "en-US",

"timezone”:

Page 27: Building Apps for the ExactTarget Marketing Cloud

ExactTarget Fuel

Page 28: Building Apps for the ExactTarget Marketing Cloud

APIs

Page 29: Building Apps for the ExactTarget Marketing Cloud

APIs

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

<soap:Header>

<oAuth xmlns="http://exacttarget.com">

<oAuthToken>

ekg8tv73ypw58fsexhg57dvu

</oAuthToken>

</oAuth>

</soap:Header>

<soap:Body>

<RetrieveRequestMsg xmlns="http://exacttarget.com/wsdl/partnerAPI" xmlns:ns2=

<RetrieveRequest>

<ObjectType>List</ObjectType>

<Properties>ListName</Properties>

<Properties>Description</Properties>

<Properties>Category</Properties>

<Properties>ListClassification</Properties>

Page 30: Building Apps for the ExactTarget Marketing Cloud

APIs

POST https://www.exacttargetapis.com/address/v1/validateEmail?

access_token=ekg8tv73ypw58fsexhg57dvu

{

"email": "[email protected]",

"validators": [

"SyntaxValidator",

"GlobalUnsubValidator",

"ListDetectiveValidator"

]

}

HTTP/1.1 200 OK

{

"email": "[email protected]",

"valid": false,

"failedValidation": "ListDetectiveValidator"

}

Page 31: Building Apps for the ExactTarget Marketing Cloud

ExactTarget Fuel objects mapped to Force.com

objects

ExactTarget Fuel Force.com

Lists CRM Campaigns or Reports

Data Extensions Custom Objects

Contacts (Subscribers) CRM Contacts

List Subscription CRM CampaignMembers

Data Extension Fields /

Subscriber Attributes

Object Fields

Data Extension Keys Relationships

Marketing Events CRM Contact Activities

Page 32: Building Apps for the ExactTarget Marketing Cloud

SDKs

public class PrintAllLists {

public static void main(String[] args)

throws ETSdkException

{

ETClient client = new ETClient(CREDENTIALS);

List<ETList> lists = client.getLists();

for (ETList list : lists) {

System.out.println(list.getName());

}

}

}

Page 33: Building Apps for the ExactTarget Marketing Cloud

SDKs vs. APIs

public class PrintAllLists {

public static void main(String args[]) {

PartnerAPI service = new PartnerAPI();

soap = service.getSoap();

Client client = ClientProxy.getClient(soap);

Endpoint endpoint = client.getEndpoint();

Map<String, Object> outProperties = new HashMap<String, Object>();

outProperties.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);

outProperties.put(WSHandlerConstants.USER, username);

PasswordCallbackHandler callback = new PasswordCallbackHandler();

callback.setPassword(password);

outProperties.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);

outProperties.put(WSHandlerConstants.PW_CALLBACK_REF, callback);

WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProperties);

endpoint.getOutInterceptors().add(wssOut);

endpoint.getOutInterceptors().add(new SAAJOutInterceptor());

endpoint.getInInterceptors().add(new LoggingInInterceptor());

endpoint.getOutInterceptors().add(new LoggingOutInterceptor());

RetrieveRequest retrieveRequest = new RetrieveRequest();

retrieveRequest.setObjectType("List");

retrieveRequest.getProperties().add("ListName");

RetrieveRequestMsg retrieveRequestMsg = new RetrieveRequestMsg();

retrieveRequestMsg.setRetrieveRequest(retrieveRequest);

RetrieveResponseMsg retrieveResponseMsg = soap.retrieve(retrieveRequestMsg);

for (APIObject apiObject : retrieveResponseMsg.getResults()) {

List l = (List) apiObject;

System.out.println(l.getListName());

}

}

}

Page 34: Building Apps for the ExactTarget Marketing Cloud

Fuel UX

Page 35: Building Apps for the ExactTarget Marketing Cloud

Fuel UX: Controls

Page 36: Building Apps for the ExactTarget Marketing Cloud

Fuel UX: Controls

Page 37: Building Apps for the ExactTarget Marketing Cloud

Fuel UX: Components

Page 38: Building Apps for the ExactTarget Marketing Cloud

Fuel UX

<!DOCTYPE html>

<html class="fuelux">

<head>

<link href="http://fuelcdn.com/fuelux/2.4.0/css/fuelux.css" rel="stylesheet" ty

<link href="http:///fuelcdn.com/fuelux/2.4.0/css/fuelux-responsive.css" rel="st

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" t

<script src="http://fuelcdn.com/fuelux/2.4.0/loader.min.js" type="text/javascri

</head>

<body style="padding: 20px;">

<div id="MySearch" class="input-append search">

<input type="text" class="input-medium" placeholder="Search">

<button class="btn">

<i class="icon-search"></i>

</button>

</div>

</body>

</html>

Page 39: Building Apps for the ExactTarget Marketing Cloud

Fuel UX: Declarative

<!DOCTYPE html>

<html class="fuelux">

<head>

<link href="http://fuelcdn.com/fuelux/2.4.0/css/fuelux.css" rel="stylesheet" ty

<link href="http:///fuelcdn.com/fuelux/2.4.0/css/fuelux-responsive.css" rel="st

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" t

<script src="http://fuelcdn.com/fuelux/2.4.0/loader.min.js" type="text/javascri

</head>

<body style="padding: 20px;">

<div id="MySearch" class="input-append search">

<input type="text" class="input-medium" placeholder="Search">

<button class="btn">

<i class="icon-search"></i>

</button>

</div>

</body>

</html>

Page 40: Building Apps for the ExactTarget Marketing Cloud

Fuel UX: Programmatic

<!DOCTYPE html>

<html class="fuelux">

<head>

[...]

<script>

$(function () {

$('#MySearch').on('searched', function (e, searchText) {

processSearch(searchText);

}).on('cleared', function () {

clearSearchResults();

});

});

</script>

</head>

<body style="padding: 20px;">

<div id="MySearch" class="input-append search">

<input type="text" class="input-medium" placeholder="Search">

<button class="btn">

<i class="icon-search"></i>

Page 41: Building Apps for the ExactTarget Marketing Cloud

HubExchange

Page 42: Building Apps for the ExactTarget Marketing Cloud

Learn more…

Page 43: Building Apps for the ExactTarget Marketing Cloud

Ian Murdock

VP Platform,

@imurdock

Page 44: Building Apps for the ExactTarget Marketing Cloud