Kevin_Tuttle1_2-1646349690431.png

Integration: Marketo Engage with Adobe Analytics

Kevin_Tuttle1
Marketo Employee
Marketo Employee

Executive summary

An overview of the current functionalities available in both Marketo Engage and Adobe Analytics to get data from the former to load into the latter in an automated fashion.

 

Data Insertion Options

Adobe Analytics offers two methods for loading large amounts of data into its database: a private FTP site for uploading delimited flat-files (up to 50 MB), and API endpoints for directly posting the data. Both sources go through the same internal pipeline once uploaded and are merely different entry points for the data.

Kevin_Tuttle1_2-1646349690431.png

Adobe Analytics API

As with Marketo Engage, Adobe Analytics has both synchronous options for inserting real-time data, and asynchronous bulk import options for loading large quantities of data in a flat-file format.

 

Data Insertion API

  • Allows for both HTTP GET and POST commands
    • GET commands use less bandwidth but do not return a response. All data is provided via the query string in cleartext.
    • POST commands can also use the HTTPS protocol – where supported
  • Uses a SOAP interface that requires all commands be wrapped in compliant XML
  • Endpoints vary and can be assigned and designated by Adobe ClientCare
  • Note that while this server-side method does provide additional flexibility beyond the client-side JavaScript system, there are data points that can only be collected by the latter.
  • Sample Code (Python)
    import httplib
    
    xml='<?xml version="1.0" encoding="UTF-8"?>
    <request> <scXmlVer>1.0</scXmlVer>
    <reportSuiteID>Corp1_rs</reportSuiteID>
    <timestamp>2010-03-20T10:33:22-07</timestamp> <visitorID>169</visitorID> <ipAddress>10.0.0.1</ipAddress> <pageName>Test Page</pageName></request>'
    
    conn = httplib.HTTPConnection("namespace.sc.omtrdc.net:80")
    conn.request("POST", "/b/ss//6",xml )
    response = conn.getresponse()
    print(response.status, response.reason)
    print(response.read())
    
  • Sample GET query
    GET /b/ss/[rsid]/0?g=apps.sillystring.com%2Fsummary.do&r=http%3A%2F%2Fapps.sillystring.com%
    2Fsummary.do&ip=192.168.10.1&gn=summary&v2=14911&c10=Brazil&vid=1286556420966514130&ts=2009-03-05T01%3A00%3A01-05 HTTP/1.1
    Host: [namespace].sc.omtrdc.net
    Keep-Alive: timeout=15
    Connection: Keep-Alive
    X-Forwarded-For: 192.168.10.1

     

     

     

Data Sources

The best solution for asynchronously loading large amounts of data is to setup a Data Source that will allow for the upload of flat files. This API support calls in both REST ( JSON) and SOAP (XML). As with the Data Insertion API, the endpoint will be unique and can be created by Adobe ClientCare.

 

There are three kinds of Data Sources that can be created: Traffic, WebLog, and Generic. While they use different endpoints, the creation process is the same for all three.

 

  1. Call one of the Data Source setup methods (DataSource.SetupTraffic, DataSource.SetupWebLog, DataSource.SetupGeneric) to create the type of data source you need.
  2. Call DataSource.GetIDs or DataSource.GetInfo to get the Data Source ID of the new Data Source.
  3. Call DataSource.BeginDataBlock and, if necessary, DataSource.AppendDataBlock to add data to the new data source and submit the data source to the Processing Queue.
  4. Call DataSource.GetFileIDs or DataSource.GetFileInfo to get the File ID of the Data Source file in the Processing Queue.
  5. Call DataSource.GetFileStatus to monitor the status of the data source file. When data source processing completes, the data sent through the data source is available in Analytics.
  6. Call DataSource.Deactivate to manage the data source as needed.

Data imported for the current day should be available about 2 hours later; data for the previous day takes about 3 hours.

 

References

2093
0