Visual Analysis of performance of Marketo Programs and Assets using Adobe Analytics
Why use Adobe Analytics when Adobe Marketo has built-in Analytics capabilities?
Many people after seeing the title of this article will have this question, so I thought of answering this question first and justifying why did we turn to Adobe Analytics for getting the Performance Insights of programs and assets even though we have in house analytics capabilities in Marketo. Marketo natively provides support for getting powerful performance insights through reports like:
Engagement Stream Performance Report
If you want to learn more about these marketo report, head over here 😉
Marketo does not disappoint us when it comes to the number of reports, but when it comes to visualising these reports in the form of graphs marketo turns out as a little disappointment. Marketo analytics provides just the plain counts (e.g. # page views, # emails delivered, # form fills etc.) in its reports, whereas for the stakeholders/clients it would be more easy to visualise through some beautiful graphs to see performance of their programs and assets than gazing through the numbers. What better Adobe tool can one think of than Adobe Analytics when it comes to graphical visualisations?
Since now we are clear to why did I prefer using the Adobe Analytics for reporting, lets quickly move on to how did I accomplish exporting Marketo performance metrics into Adobe Analytics? 😉
Marketo has a rich set of APIs (few people might have got the hint to where I am heading :P), learn more about Marketo APIs here. I used 4 Marketo Rest APIs in a successive manner to develop a pipeline to export the required metrics and metadata from marketo:
Calculating the metrics from Export Activity Response
The Export Activities API returns a JSON response for all the activities mentioned in the API call (using the id of each activity). Each JSON record will have the activity metadata associated to it, for example, consider the activity "Views on Webpage" (activity type ID: 1) will have details like Webpage ID, Webpage name, Client IP Address, Personalized URL, Query Parameters, Referrer URL, Search EngineSearch Query, User-Agent, Webpage URL etc. It requires quite a bit of JSON parsing to be done to extract the relevant information from the response, also we need to combine the records from the responses that correspond to the same assets (use asset id as primary key) For JSON parsing I would recommend using the org.json JAR. You can generate the required metrics using the count of activities that were recorded on each asset.
Pass metrics to analytics
Map each metric (such as page views, form fills, email clicks, opens etc.) and the metadata (such as asset name, asset id, program id etc.) to the success events and conversion variables respectively in the adobe analytics. The data may take up to an hour to reflect into analytics once the endpoint upon the hit returns a successful response code of 200. Once the data is reflected in analytics you can now go ahead and create the custom graphical visualisations using this data.
Few Report Snapshots from Adobe Analytics
And that's not all!
This was just a brief overview where we discussed the simple use-cases and that's just the tip of the ice-berg :P, you can also create your custom activities in marketo using the create activities type API, import those in analytics using the same manner as above and visualise them with beautiful graphical representations. Happy Visualising!
@Darshil_Shah1 I am very interested in pursuing this further, but I am wondering what you are referring to when you say "...develop a pipeline to export the required metrics and metadata from marketo". Are you following the steps involved here in the architecture diagram provided and running this on a manual frequency, if so how often? Or did you develop an application that can do this on a running basis?
@fishmatt33 As of now the process of running the application is not automated, but certainly a cron job can be setup for the same to automate the exporting the data out of marketo and importing in to Analytics without much effort. Also the application can be run based on the requirement and volume of data generated; in case of a busy and high end instance that essentially produces huge amount of data on a per day basis we can run application as often as daily to transfer the data, thereby avoiding the case of consuming a lot of API calls In-case we transfer huge amounts of data in single go!