function registerListener() {
const METASITE_APP_DEF_ID = '22bef345-3c5b-4c18-b782-74d4085112ff';
const getXSRFTokenFromCookie = () => {
const match = new RegExp('XSRF-TOKEN=(.+?);').exec(document.cookie);
return match ? match[1] : '';
};
const eventNames = {
Purchase: 'Purchase',
Lead: 'Lead',
};
const eventNameToConversionActionCategory = {
[eventNames.Purchase]: 'PURCHASE',
[eventNames.Lead]: 'SUBMIT_LEAD_FORM',
};
const channelParams = {
price: 'price',
id: 'id',
currency: 'currency',
name: 'name',
category: 'category',
brand: 'brand',
variant: 'variant',
list: 'list_name',
quantity: 'quantity',
step: 'checkout_step',
option: 'checkout_option',
position: 'list_position',
coupon: 'coupon',
affiliation: 'affiliation',
revenue: 'value',
tax: 'tax',
sku: 'sku',
shipping: 'shipping',
};
const mapContents = ({ contents = [] }) =>
contents.map(({ currency, ...product }) =>
paramsMapper(product, channelParams),
);
const paramsMapper = (params, mapper) => {
const mappedParams = Object.keys(params);
if (mappedParams.length === 0) {
return params;
}
return mappedParams.reduce((mappedObject, currentKey) => {
const newKey = mapper[currentKey];
if (newKey && (params[currentKey] || params[currentKey] === 0)) {
mappedObject[newKey] = params[currentKey];
}
return mappedObject;
}, {});
};
const loadGtag = () => {
const gtagInitScript = document.createElement('script');
gtagInitScript.type = 'text/javascript';
gtagInitScript.innerHTML = `
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date())
`;
document.head.appendChild(gtagInitScript);
const gtagScript = document.createElement('script');
gtagScript.type = 'text/javascript';
gtagScript.setAttribute('async', 'true');
gtagScript.setAttribute('src', 'https://www.googletagmanager.com/gtag/js');
document.head.appendChild(gtagScript);
};
const XSRFToken = getXSRFTokenFromCookie();
let conversionActions;
const reportEvent = (eventName, eventParams) => {
if (typeof gtag !== 'function') {
loadGtag();
}
const category = eventNameToConversionActionCategory[eventName];
const conversionAction = conversionActions.find(
(currentConversionAction) =>
currentConversionAction.category.category === category,
);
if (conversionAction) {
gtag('config', conversionAction.conversionId);
let conversionData = {
send_to: `${conversionAction.conversionId}/${conversionAction.conversionLabel}`,
};
switch (category) {
case 'PURCHASE': {
const { revenue, id, currency, coupon, ...params } = eventParams;
conversionData = {
...conversionData,
...paramsMapper({ revenue, id, currency, coupon }, channelParams),
transactionId: eventParams.id,
items: mapContents(params),
};
break;
}
default:
break;
}
gtag('event', 'conversion', conversionData);
}
};
// @ts-expect-error wixDevelopersAnalytics
window.wixDevelopersAnalytics.register(
'd6708a0e-5b2a-458e-8cfe-bdca240aa2ce',
(eventName, eventParams) => {
console.log('registering ga event reporter');
if (conversionActions) {
reportEvent(eventName, eventParams);
} else {
const headers = {
'Content-Type': 'application/json',
'X-XSRF-TOKEN': XSRFToken,
};
const getAppToken = window.wixEmbedsAPI?.getAppToken;
if (getAppToken) {
console.log('ASSIGNING AUTHORIZATION HEADER');
headers.authorization = getAppToken(METASITE_APP_DEF_ID);
}
const metaSiteId = window.wixEmbedsAPI?.getMetaSiteId();
console.log({ metaSiteId });
fetch(
`${window.location.origin}/_serverless/pa-google/v1/accounts/current-site/conversion-actions?metaSiteId=${metaSiteId}`,
{
method: 'GET',
headers,
},
)
.then((response) => response.json())
.then((data) => {
conversionActions = data.conversionActions;
reportEvent(eventName, eventParams);
});
}
},
);
}
console.log('ga event report embedded');
// @ts-expect-error wixDevelopersAnalytics
window.wixDevelopersAnalytics
? registerListener()
: window.addEventListener('wixDevelopersAnalyticsReady', registerListener);
top of page
Curriculum Classes
Whether it's your first step to becoming a pro, or you're just looking to have some fun, we can get you there! All CSz classes are taught by one of our improv professionals - instructors who, themselves, have years of training. CSz classes are a fun, supportive way to learn improvisational thinking, gain self-confidence, develop business soft-skills and meet people.
Level 1
Intro to Improv
SESSION I
$250 | 8 Weeks | Oct. 7th - Nov. 25th |
12:00pm - 2:00pm | Saturday Afternoon
SESSION II
$250 | 8 Weeks | Oct. 8th - Nov. 26th |
4:00pm - 6:00pm | Sunday Evening
Learn the basics of improv through this eight-week class that focuses on characters, storytelling, teamwork, and more. Improve your confidence and, at the same time, learn how to play like a kid again.
This fun, interactive and informative class will have you involved from day one. It is the perfect class for anyone who wants to meet some new people, speak up at work more, hone their performance skills, or just have some fun!
No previous improv experience necessary.
Level 2
Improvised Scenes
$250 | 8 Weeks | Oct. 2nd - Nov. 20th |
6pm - 8pm | Monday Evening
In level 2, you get to stretch your improv muscles by concentrating on the Who, Where, What of improv, and learning the tools and formats that make a successful scene.
You will use the improv skills you learned in Level 1 as the foundation for performing your own improv scenes throughout the 8 weeks.
Prerequisite: Level 1, OR equivalent experience.
Level 3
Advanced Improv Games and Theory
$250 | 8 Weeks | Oct. 2nd - Nov. 20th |
6pm - 8pm | Monday Evening
In Level 3, you will take the solid groundwork you've cultivated in Level 2 and put it to the test with fast-paced, short form improv games.
You will be introduced to improv games pulled straight from our ComedySportz catalog and, at the end of your 8 weeks, you will get to strut your stuff with a Graduation Performance (free to family and friends)!
Prerequisite: Level 2, OR equivalent experience.
bottom of page