© Copyright Higher Logic, LLC / [email protected] / Privacy Policy

Image

ON-DEMAND

2026 Association Trends & Predictions



Image
Image

Association

Voices

Winning Strategies from Association Leasers

Thursday, May 15, 2025
1 PM ET / 10 AM PT

From Engagement to Non-Dues Revenue:

Monetizing Your Online Community

Wednesday, September 10, 2025
1 PM ET / 10 AM PT

This is the must-watch webinar to set your strategy for 2026. 

Join Reggie Henry (ASAE), Roberta Rosenberg (MGI), Kelly Whelan (Higher Logic) and Brendan Leehe (Higher Logic) to get ahead of the biggest shifts in membership, engagement, and revenue. 


We covered 3 main areas:

  • Membership Momentum - scaling your acquisition efforts and engagement strategies
  • Membership Expansion - reshaping your renewal strategy and growing your relationships with current members and beyond
  • Internal Infrastructure - how to build the foundation for future readiness

All backed by data and insights from reports from MGI, ASAE, Higher Logic, and more.

You’ll walk away with practical guidance, fresh benchmarks, and proven strategies to future-proof your association, all things you can use to fuel your 2026 strategy right away. If there's one webinar you don't want to miss, it's this one.

Image

LIVE WEBINAR

2026 Association Trends & Predictions

THURSDAY DEC 4, 2026

@ 12 PM ET / 9 AM PT

Reggie Henry

ASAE

Presented By

Image
Image
Image
Image

Brendan Leehe

Higher Logic

Kelly Whelan

Higher Logic

Roberta Rosenberg

MGI


tag on your * website or Marketo landing page template(s) where you want to use the * UTM tracking functionality. * ***************************************************************************/ /************************** CONFIGURATION OPTIONS **************************/ /* MARKETO UTM FIELDS: * Input field names for your Marketo instance in the right column below. * If you're not sure what to put here, export all fields from within your * Marketo instance under Admin > Field Management > Export Field Names * (requires admin access) and use your UTM fields' SOAP API Name from the * downloaded Fields.xls file. This is case sensitive! */ var dpi_marketoUtmFields = { 'utm_source' : 'utm_source__c' ,'utm_medium' : 'utm_medium__c' ,'utm_campaign' : 'utm_campaign__c' ,'utm_term' : 'utm_term__c' ,'utm_content' : 'utm_content__c' }; /* DOMAIN NAME (optional): * Optionally, set your primary domain name so that the cookie can be read on * your main website and across all subdomains. Will auto-detect current * domain if unchanged. */ var dpi_cookieDomain = 'higherlogic.com'; /*********************** DO NOT EDIT BELOW THIS LINE ************************/ /*! * JavaScript Cookie v2.1.3 * https://github.com/js-cookie/js-cookie * * Copyright 2006, 2015 Klaus Hartl & Fagner Brack * Released under the MIT license */ ;(function (factory) { var registeredInModuleLoader = false; if (typeof define === 'function' && define.amd) { define(factory); registeredInModuleLoader = true; } if (typeof exports === 'object') { module.exports = factory(); registeredInModuleLoader = true; } if (!registeredInModuleLoader) { var OldCookies = window.Cookies; var api = window.Cookies = factory(); api.noConflict = function () { window.Cookies = OldCookies; return api; }; } }(function () { function extend () { var i = 0; var result = {}; for (; i < arguments.length; i++) { var attributes = arguments[ i ]; for (var key in attributes) { result[key] = attributes[key]; } } return result; } function init (converter) { function api (key, value, attributes) { var result; if (typeof document === 'undefined') { return; } // Write if (arguments.length > 1) { attributes = extend({ path: '/' }, api.defaults, attributes); if (typeof attributes.expires === 'number') { var expires = new Date(); expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5); attributes.expires = expires; } try { result = JSON.stringify(value); if (/^[\{\[]/.test(result)) { value = result; } } catch (e) {} if (!converter.write) { value = encodeURIComponent(String(value)) .replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent); } else { value = converter.write(value, key); } key = encodeURIComponent(String(key)); key = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent); key = key.replace(/[\(\)]/g, escape); return (document.cookie = [ key, '=', value, attributes.expires ? '; expires=' + attributes.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE attributes.path ? '; path=' + attributes.path : '', attributes.domain ? '; domain=' + attributes.domain : '', attributes.secure ? '; secure' : '' ].join('')); } // Read if (!key) { result = {}; } // To prevent the for loop in the first place assign an empty array // in case there are no cookies at all. Also prevents odd result when // calling "get()" var cookies = document.cookie ? document.cookie.split('; ') : []; var rdecode = /(%[0-9A-Z]{2})+/g; var i = 0; for (; i < cookies.length; i++) { var parts = cookies[i].split('='); var cookie = parts.slice(1).join('='); if (cookie.charAt(0) === '"') { cookie = cookie.slice(1, -1); } try { var name = parts[0].replace(rdecode, decodeURIComponent); cookie = converter.read ? converter.read(cookie, name) : converter(cookie, name) || cookie.replace(rdecode, decodeURIComponent); if (this.json) { try { cookie = JSON.parse(cookie); } catch (e) {} } if (key === name) { result = cookie; break; } if (!key) { result[name] = cookie; } } catch (e) {} } return result; } api.set = api; api.get = function (key) { return api.call(api, key); }; api.getJSON = function () { return api.apply({ json: true }, [].slice.call(arguments)); }; api.defaults = {}; api.remove = function (key, attributes) { api(key, '', extend(attributes, { expires: -1 })); }; api.withConverter = init; return api; } return init(function () {}); })); /***************************** CUSTOM FUNCTIONS *****************************/ // Retrieve a named value from query string function dpi_getQueryStringValue(key) { key = key.replace(/[*+?^$.\[\]{}()|\\\/]/g, "\\$&"); // escape RegEx meta chars var match = location.search.match(new RegExp("[?&]"+key+"=([^&]+)(&|$)")); return match && decodeURIComponent(match[1].replace(/\+/g, " ")); } // Get domain name function dpi_getDomain() { var regex = /[\w-]+.(com|net|org|co.uk|co|us)/ig; var url = location.hostname; return url.match(regex)[0]; } /************************ MARKETO UTM TRACKING LOGIC ************************/ // Create empty objects for UTM parameters var dpi_queryStringUtmVals = {}; var dpi_cookieUtmVals = {}; // Set cookie domain from current domain if default is not changed if(dpi_cookieDomain == 'example.com') { dpi_cookieDomain = dpi_getDomain(); } // Retrieve all UTM query string params and values, store to object for( property in dpi_marketoUtmFields ) { if(dpi_getQueryStringValue(property) && dpi_getQueryStringValue(property).length > 0) { dpi_queryStringUtmVals[dpi_marketoUtmFields[property]] = dpi_getQueryStringValue(property); } } // If we have any UTM query string values... if(Object.keys(dpi_queryStringUtmVals).length > 0) { // Then create or update the cookie with whatever query string variables are available Cookies.set('dpi_utmVals', dpi_queryStringUtmVals , { expires: 3652, domain: '.'+dpi_cookieDomain }); } function populateUTMFields(e){ var ubForm = e.target.forms[0], utmFieldsObj = Cookies.getJSON('dpi_utmVals'); for(let propName in utmFieldsObj){ var inputEl = ubForm.querySelector("[name='" + propName + "']"); if(inputEl){ inputEl.value = utmFieldsObj[propName]; } } } // Is there a cookie set with UTM values? if( typeof Cookies.getJSON('dpi_utmVals') != "undefined" ) { // Yes, the cookie is set if (document.readyState == "loading") { document.addEventListener("DOMContentLoaded", populateUTMFields); } else { populateUTMFields({ target: document }); } window.ub.hooks.afterFormSubmit.push(function(){ Cookies.remove('dpi_utmVals', { domain: '.'+dpi_cookieDomain } ); }); }