var CONVERSION_DECREASE_THRESHOLD = 0.95; // sets conversion decrease threshold to alert you of when it goes above that var Email_ids = "youremail@example.com, anotheremail@example.com"; // Insert multiple email IDs separated by commas function main() { Logger.log("Script running started..."); // Check if any campaigns are enabled if (!areCampaignsEnabled()) { Logger.log("No enabled campaigns found. Exiting script."); return; // Exit the script if no campaigns are enabled } var timeZone = AdWordsApp.currentAccount().getTimeZone(); // Define date ranges: 1 days ago to 3 days ago and the 3 days before that var endDateRecent = getPastAdwords(1); // Gets data for yesterday var startDateRecent = getPastAdwords(3); // Gets data for 3 days ago var endDatePrevious = getPastAdwords(4); // Gets data for 4 days ago var startDatePrevious = getPastAdwords(6); /// Gets data for 6 days ago // Get data for last 3 days var recentDataQuery = getData(startDateRecent, endDateRecent); var recentReport = AdWordsApp.report(recentDataQuery); var recentRows = recentReport.rows(); while (recentRows.hasNext()) { var recentRow = recentRows.next(); var recentConversions = parseFloat(recentRow['Conversions']); var accountName = recentRow['AccountDescriptiveName']; var recentCost = parseFloat(recentRow['Cost']); var currencyCode = recentRow['CurrencyCode']; // Get data for 3 days compare period var previousDataQuery = getData(startDatePrevious, endDatePrevious); var previousReport = AdWordsApp.report(previousDataQuery); var previousRows = previousReport.rows(); var previousConversions = 0; if (previousRows.hasNext()) { var previousRow = previousRows.next(); previousConversions = parseFloat(previousRow['Conversions']); } // Compare the number of conversions between the two periods var conversionDecrease = previousConversions - recentConversions; var percentageDecrease = previousConversions ? (conversionDecrease / previousConversions) : 0; if (percentageDecrease > CONVERSION_DECREASE_THRESHOLD) { Logger.log("Conversions have decreased below threshold compared to previous period... sending email..."); sendMail(endDateRecent, startDateRecent, accountName, recentConversions, previousConversions, recentCost, currencyCode); } else { Logger.log("Conversions are above threshold compared to previous period... no email sent."); } } } // Send email notification to multiple recipients function sendMail(endDate, startDate, accountName, recentConversions, previousConversions, Cost, currencyCode) { if (!currencyCode) { currencyCode = "USD"; // Set USD as default currency if undefined } var threshold = CONVERSION_DECREASE_THRESHOLD * 100; // Convert threshold to percentage var subject = 'Conversion tracking may be broken. Conversions on ' + startDate + ' to ' + endDate + ' decreased significantly from the previous period'; var html = []; html.push( "", "
", "",
" Account Conversions Report ",
" | ",
"",
" " + accountName + "",
" | ",
"
Conversions from " + startDate + " to " + endDate + " decreased to " + recentConversions + " (previously " + previousConversions + ") | ", "