var $DealerInspire_FacebookEvents = {}; jQuery(document).ready(function($) { $DealerInspire_FacebookEvents = { facebookPixel: null, customEvent: false, pixelFired: false, events: { EPrice: { name: "EPrice", type: "click", value: ".results_table .primary-cta .button-form, #details-page-ctabox .maincta-row .button-form, .cta-box .vdp-primary.button-form, #cta-mobile-button" }, DILeads: { name: "DILeads", type: "advanced", value: "none" }, SRP: { // Old SRP / VRP name: "SRP", type: "element", value: $(".page-vehicle-results-page") }, LSRP: { // Lightning SRP/VRP name: "LSRP", type: "element", value: $(".page-template-page-lightning") }, VDP: { name: "VDP", type: "element", value: $(".page-vehicle-display-page") }, Lead: { name: "Lead", type: "url", value: "thank-you" }, Parts: { name: "Parts", type: "url", value: "parts" }, Service: { name: "Service", type: "url", value:"service" } }, init: function() { this.checkCustomEvents(); }, checkCustomEvents: function() { var self = this; for(eventName in self.events) { if(!self.customEvent) { switch(self.events[eventName].type) { case "element": if( typeof self.events[eventName].value !== "undefined" && self.events[eventName].value.length > 0 ) self.customEvent = eventName; break; case "advanced": self.advancedLeadTracking() break; case "url": var url = location.href; var searchString = new RegExp(self.events[eventName].value, "g"); if(url.search(searchString) !== -1) self.customEvent = eventName; break; case "click": var clickEvent = eventName; $("body").on('click', self.events[eventName].value, {name: self.events[eventName].name}, self.fireClickEvent); break; } } } self.fireFacebookEvents(); }, advancedLeadTracking: function() { jQuery(document).bind('di_event', function(e, data) { let eventData = {} // console.log("EVENT", data) // set up consistent data that is sent regardless of event type eventData.visit_id = data.visit_id eventData.visitor_id = data.visitor_id // attach data based on event type/name switch (data.name) { case "chat": eventData.type = "chat" eventData.label = data.label eventData.chatName = data.custom_data.provider.name eventData.name = data.custom_data.provider.firstName + " " + data.custom_data.provider.lastName console.log("FB tracking Conversations", eventData) fbq('trackCustom', "Chat", eventData, {eventID: radarTracking.FacebookEventID}) break case "form_submit": eventData.type = "form_submit" eventData.form_name = data.custom_data.form.name eventData.form_type = data.custom_data.lead.entry.type console.log("FB tracking Form Submit", eventData) fbq('trackCustom', "FormSubmit", eventData, {eventID: radarTracking.FacebookEventID}) fbq('track', "Lead", eventData, {eventID: radarTracking.FacebookEventID}) break case "click": if (data.label === "Call") { eventData.type = "click_to_call" eventData.department = data.custom_data.call.department console.log("FB tracking Click To Call", eventData) fbq('trackCustom', "ClickToCall", eventData, {eventID: radarTracking.FacebookEventID}) } break } }); }, fireClickEvent: function(e) { let customData = {}; customData.leadTriggerClasses = $(e.currentTarget).attr('class'); customData.leadTriggerText = $(e.target).text(); console.log(e.target, "The above element was clicked, which sends this FB Remarketing Event: '" + e.data.name + "'"); fbq('trackCustom', e.data.name, customData, {eventID: radarTracking.FacebookEventID}); }, fireFacebookEvents: function() { var self = this; // Enqueue the `fbevents.js` script self.facebookPixels = ["1307140982961103"]; !function(f,b,e,v,n,t,s) {if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)}; if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s)}(window, document,'script', 'https://connect.facebook.net/en_US/fbevents.js'); // Create the `fqb` event for(pixel in self.facebookPixels) { fbq('dataProcessingOptions', [], {eventID: radarTracking.FacebookEventID}); fbq('init', self.facebookPixels[pixel], {eventID: radarTracking.FacebookEventID}); } // Handle any found custom events if(self.customEvent) { console.log("FB Remarketing Event: '" + self.customEvent + "'"); if(self.customEvent == "VDP" && typeof inventory_localization == "object") { var customData = inventory_localization.vehicle; console.log(customData); fbq('trackCustom', self.customEvent, customData, {eventID: radarTracking.FacebookEventID}); } else { fbq('trackCustom', self.customEvent, {eventID: radarTracking.FacebookEventID}); var vins = []; $('.vehicle-wrap').each(function (i, el) { vins.push($(this).find('div[data-vin]').data('vin')); }); if(vins.length === 0){ $('.vehicle-overview').each(function (i, el) { vins.push($(this).attr('id')); }); } if (self.customEvent == 'LSRP') { document.addEventListener('lightning-vrp-did-change', function(e) { var vins = [] $('#lvrp-results-wrapper .result-wrap').each(function(i, el) { var vehicleVin = $(el).data('vehicle-vin') vins.push(vehicleVin) }) fbq('track', 'Search', { content_type: 'vehicle', // REQUIRED: DO NOT change this, must be set to 'vehicle' content_ids: vins, }, {eventID: radarTracking.FacebookEventID}); }); } else { fbq('track', 'Search', { content_type: 'vehicle', // REQUIRED: DO NOT change this, must be set to 'vehicle' content_ids: vins, }, {eventID: radarTracking.FacebookEventID}); } } $(document).ready(function(){ jQuery(document).on('savethings-save-vehicle', function(e, data){ var info = $(data)[0]['attributes']; var id = info['data-remote-id']. value; var make = info['data-make']. value; var model = info['data-model']. value; var year = info['data-year']. value; fbq('track', 'AddToWishlist', { content_type: 'vehicle', // REQUIRED: DO NOT change this, must be set to 'vehicle' content_ids: [id], make: make, model: model, year: year, currency: 'USD' }, {eventID: radarTracking.FacebookEventID}); }); jQuery(document).on('click','.list-save', function(e){ fbq('track', 'AddToWishlist', { content_type: 'vehicle', // REQUIRED: DO NOT change this, must be set to 'vehicle' content_ids: [''], make: '', model: '', year: '', currency: 'USD' }, {eventID: radarTracking.FacebookEventID}); }); }); self.pixelFired = true; } // Send the pageview fbq('track', 'PageView', {}, {eventID: radarTracking.FacebookEventID}); } }; $DealerInspire_FacebookEvents.init(); });