Skip to content

Instantly share code, notes, and snippets.

@ryanpraski
ryanpraski / pass_adobe_visitor_id_s_vi_cookie_cross_domain_in_query_parameter.js
Last active May 18, 2021
Pass the Adobe Analytics Visitor id s_vi cookie cross domain in a query parameter
View pass_adobe_visitor_id_s_vi_cookie_cross_domain_in_query_parameter.js
@ryanpraski
ryanpraski / zendesk_tracking_adobe_launch_gtm.js
Last active Oct 28, 2019
Zendesk chat formerly know as Zopim chat connected, chat start, chat end tracking in Adobe Launch and Google Tag Manager (GTM). See more events for the chat api here: https://api.zopim.com/files/meshim/widget/controllers/LiveChatAPI-js.html
View zendesk_tracking_adobe_launch_gtm.js
try {
$(document).ready(function() {
if (typeof zE != 'undefined') {
zE(function() {
$zopim(function() {
$zopim.livechat.setOnConnected(function() {
//console.log("zendesk chat connected");
//trigger();
_satellite.track('zendeskChatConnected');
dataLayer.push({
@ryanpraski
ryanpraski / adobe_launch_ajax_listener_trigger().js
Last active Oct 9, 2019
thanks to @StewartSchilling for helping me get this figured out
View adobe_launch_ajax_listener_trigger().js
_satellite.logger.log("CHECKING JQUERY", $, jQuery);
$(document).ready(function() {
_satellite.logger.log("INSTALLING HANDLER");
$(document).ajaxSuccess(function(event, xhr, settings) {
_satellite.logger.log("FIRING HANDLER", event, xhr, settings);
var alreadyRun = false;
console.log("already run false");
if ((settings.url.indexOf("/loadResults.jsp") > -1) && (alreadyRun = false)); {
_satellite.logger.log("HANDLER CAUGHT loadResults.jsp", event, xhr, settings);
alreadyRun = true;
@ryanpraski
ryanpraski / google_analytics_real-time_app_script.js
Last active May 18, 2021
Google Analytics Real-Time App Script Query- data is written to a Google Sheet then used in a Google Data Studio Dashboard by using the data studio data connector. See the full tutorial here: http://www.ryanpraski.com/google-analytics-real-time-data-studio-dashboard/
View google_analytics_real-time_app_script.js
// get time stamp of query run
function setTimeStamp(sheetName) {
SpreadsheetApp.getActive().getSheetByName(sheetName)
.getRange('C2').setValue(new Date())
}
// gaGet data
function gaGet(tableId, metrics, options) {
// Apply standard options
options = options || {};
@ryanpraski
ryanpraski / previous_pageName_session_storage
Created Aug 28, 2018
If you want to save the previous pageName via DTM without a Plugin (getPreviousValue), you can use Session Storage. Two Pageload Rules are needed.
View previous_pageName_session_storage
[Adobe Analytics|DTM] Previous pageName
If you want to save the previous pageName via DTM without a Plugin (getPreviousValue), you can use Session Storage. Two Pageload Rules are needed.
First PLR:
- Trigger Rule at “DOM Ready”
- Rule Condition: Path “.*” (regex enabled)
- Custom Code “None-Sequential Javascript”:
if(typeof(Storage) != "undefined") {
if (typeof(s) !== "undefined") {
@ryanpraski
ryanpraski / google_analytics_api_app_script.js
Created Aug 9, 2018 — forked from dcvogi/top5pages.js
Queries the data for the top 5 pages of the website.
View google_analytics_api_app_script.js
function main(){
// Set up the parameters and variables
var sheetName = '<name>'; // The name of the sheet (not the Spreadsheet) we want to write the data e.g Sheet1
var tableId = '<table id>'; // The id of the view to query the data from e.g ga:123456
var startDate = 'yyyy-MM-dd'; // The start date of the query with the appropriate format e.g 2018-04-01 (1 April 2018)
var endDate = 'yyyy-MM-dd'; // The end date of the query with the appropriate format e.g 2018-04-30 (30 April 2018)
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName(sheetName);
@ryanpraski
ryanpraski / drift_api_R_query.R
Last active Jan 15, 2018
drift_api_query_with_R
View drift_api_R_query.R
library(httr)
library(rjson)
url <-'https://driftapi.com/conversations/52662097/messages'
token <-'AQ14yXgTM934cMjNEGfa6epBDU6TpCIY'
query <- GET(url, add_headers('Authorization' = paste("bearer", token)))
http_status(query)
df <-fromJSON(content(query,type='text',encoding= 'UTF-8'))
@ryanpraski
ryanpraski / drift_google_tag_manager_data_layer_event_listener.js
Last active Sep 26, 2019
drift google tag manager gtm dataLayer event listeners for chat widget including playbook interactions and meeting bookings
View drift_google_tag_manager_data_layer_event_listener.js
<script>
window.drift.on('ready',function(api){
window.drift.on('message:sent',function(event){
{
dataLayer.push({
'event': 'driftInteraction',
'eventCategory': 'drift',
'eventAction': 'message sent',
'eventLabel': 'drift>message sent conversation id: ' + event.conversationId
});
@ryanpraski
ryanpraski / adobe_analytics_automatic_link_download_tracking
Created Dec 6, 2017
Adobe Analytics Automatic Link and Download Tracking Functions
View adobe_analytics_automatic_link_download_tracking
View jwplayer_google_analytics_tracking.js
<script type="text/javascript">
(function(dataLayer) {
var i = 0;
var jwpVideoIsPlaying = false;
//array of percentages at which progress notifications are pushed to the dataLayer
var markers = [10, 25, 50, 75, 90]; //adjust these values if you want different progress reports
var playersMarkers = [];
function findObjectIndexById(haystack, key, needle) {
for (var i = 0; i < haystack.length; i++) {