nuxt-utm
Version:
A Nuxt 3 module for tracking UTM parameters.
67 lines (66 loc) • 2.3 kB
JavaScript
export const generateSessionId = () => {
return Math.random().toString(36).substring(2, 15);
};
export const readLocalData = (localStorageKey) => {
const localData = localStorage.getItem(localStorageKey);
try {
if (localData) {
return JSON.parse(localData);
}
} catch (error) {
console.error("Error parsing local storage data", error);
}
return [];
};
export const getSessionID = (sessionIdKey) => {
const sessionID = sessionStorage.getItem(sessionIdKey) || "";
if (sessionID == "") {
const newSessionID = generateSessionId();
sessionStorage.setItem(sessionIdKey, newSessionID);
return newSessionID;
}
return sessionID;
};
export const urlHasUtmParams = (query) => {
return Boolean(
query.utm_source || query.utm_medium || query.utm_campaign || query.utm_term || query.utm_content
);
};
export const getUtmParams = (query) => {
return {
utm_source: query.utm_source?.toString(),
utm_medium: query.utm_medium?.toString(),
utm_campaign: query.utm_campaign?.toString(),
utm_term: query.utm_term?.toString(),
utm_content: query.utm_content?.toString()
};
};
export const urlHasGCLID = (query) => {
return Boolean(query.gclid || query.gad_source);
};
export const getGCLID = (query) => {
return {
gclid: query.gclid?.toString(),
gad_source: query.gad_source?.toString()
};
};
export const getAdditionalInfo = () => {
return {
referrer: document.referrer,
userAgent: navigator.userAgent,
language: navigator.language,
landingPageUrl: window.location.href,
screen: {
width: screen.width,
height: screen.height
}
};
};
export const isRepeatedEntry = (data, currentEntry) => {
const lastEntry = data.value?.[0];
const lastUtm = lastEntry?.utmParams;
const newUtm = currentEntry.utmParams;
const lastGCLID = lastEntry?.gclidParams;
const newGCLID = currentEntry.gclidParams;
return lastEntry && lastUtm.utm_campaign === newUtm.utm_campaign && lastUtm.utm_content === newUtm.utm_content && lastUtm.utm_medium === newUtm.utm_medium && lastUtm.utm_source === newUtm.utm_source && lastUtm.utm_term === newUtm.utm_term && lastEntry.sessionId === currentEntry.sessionId && lastGCLID?.gad_source === newGCLID?.gad_source && lastGCLID?.gclid === newGCLID?.gclid;
};