(function () {
// Essential configuration
var campaign_uuid = ‘6197256e-5cc9-4d2b-b64c-65ef7e2c2f68’;
var baseURL = ‘https://campaigns.civiclick.com/’;
var gaTrackingCode = ”;
var googleAdsId = ”;
var googleAdsPageViewConversionLabel = ”;
// Widget setup
var iframeParams = new URLSearchParams();
iframeParams.append(“type”, “embed”);
try {
var parentParams = new URLSearchParams(window.location.search);
parentParams.forEach(function (value, key) {
if (key !== “type”) iframeParams.append(key, value);
});
} catch (e) {
console.error(“Error getting parent page parameters:”, e);
}
var iframe = document.createElement(“iframe”);
iframe.id = “civiclick-widget”;
iframe.src = baseURL + ‘/’ + campaign_uuid + (iframeParams.toString() ? “?” + iframeParams.toString() : “”);
iframe.width = “100%”;
iframe.style = “border:none; max-width:400px; min-height: 800px;”;
iframe.allow = “camera; microphone”;
iframe.loading = “eager”;
document.addEventListener(“DOMContentLoaded”, function () {
var container = document.getElementById(“civiclick-widget-container”);
container ? container.appendChild(iframe) : console.error(“Container for CiviClick widget not found.”);
});
// Initialize tracking if needed
if (gaTrackingCode || googleAdsId) {
window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments); }
gtag(‘js’, new Date());
}
// GA4 setup
if (gaTrackingCode) {
var ga4Script = document.createElement(‘script’);
ga4Script.async = true;
ga4Script.src = ‘https://www.googletagmanager.com/gtag/js?id=’ + gaTrackingCode;
document.body.appendChild(ga4Script);
gtag(‘config’, gaTrackingCode, {
cookie_flags: ‘sameSite=none; secure’,
page_path: ‘/’,
campaign_uuid
});
}
// Google Ads setup
if (googleAdsId) {
gtag(‘config’, googleAdsId);
if (googleAdsPageViewConversionLabel) {
gtag(‘event’, ‘conversion’, {
send_to: googleAdsId + ‘/’ + googleAdsPageViewConversionLabel
});
}
}
// Message handling
window.addEventListener(‘message’, function (event) {
console.log(‘Received message from iframe:’, event);
var data = event.data;
var iframe = document.getElementById(‘civiclick-widget’);
if (data.frameHeight && iframe) {
iframe.style.height = data.frameHeight + ‘px’;
}
if (data && data.type === ‘REDIRECT’) {
window.location.href = data.url;
}
if (typeof gtag === ‘function’) {
// GA4 conversion tracking
if (gaTrackingCode && data.type === ‘CONVERSION_GA4’) {
gtag(‘event’, data.payload.event, {
campaign_uuid: data.payload.campaign_uuid,
action_type: data.payload.action_type
});
}
// Google Ads conversion tracking
if (googleAdsId && data.type === ‘CONVERSION_GOOGLE_ADS’) {
gtag(‘event’, ‘conversion’, {
send_to: data.payload.send_to,
campaign_uuid: data.payload.campaign_uuid,
event_category: data.payload.event_category,
event_label: data.payload.event_label
});
}
}
});
})();