SA5 | Sygnal Attributes | Designed for Webflow
Buy Us a Beer!Community ForumMicro-Consulting
  • ➡️Github Repo
  • 👫Sygnal Attributes Community
  • 📘Overview
    • Sygnal Attributes v5
    • How to Add Custom Code
    • What is Sygnal Attributes?
    • Sponsor a Feature ✨
    • What's New?
    • Library Modules
    • Technical Notes & Goals
      • CSS Media Queries
      • Callback Handlers
      • Custom Attributes
    • Documentation
    • Configuration Blocks
      • Configuration Block Specification
    • Preloaders
    • Breakpoints
    • Component Support 🧪
    • Sygnal Attributes ( SA5 ) Support
    • Dev Team Notes
    • GDPR
    • SA6
    • Triggers, Events & Actions
      • Triggers
        • Click Triggers
        • Scroll Into View Trigger
        • Hover Trigger
        • Timer Trigger
        • Form Triggers 🧪
          • Form Submit Trigger 🧪
        • Exit Intent Trigger 🧪
        • ECommerce Triggers 🧪
        • Inactivity Trigger 🧪
        • Gated Trigger 🧪
        • Link Triggers 🧪
        • Reactiv Triggers 🧪
        • Interaction Trigger 🧪
      • Events
        • Namespacing
        • Event Data
        • Link-Based Triggers 🧪
        • Breakpoints 🧪
        • Persistent Events 🧪
        • Gated Events 🧪
      • Actions
        • Click Actions
        • Alert Action
        • Visibility Actions
        • Video Actions 🧪
        • Audio Action 🧪
        • Class Adder Actions 🧪
        • Tab Element Actions 🧪
        • Interaction Actions 🧪
        • Form Actions 🧪
        • Script Actions 🧪
    • SA5 Core
      • Handlers
      • Controllers
      • Core Processing
      • Core Technical Notes
        • Element Tracking
  • 📘sa5-cache
    • 🔍About SA5's Cache Lib
    • Data Caching ❺
      • Cache Setup v4
  • 📘sa5-socialshare
    • 🔍About SA5's Social Share Lib
    • 🚀Quick Start | SA5 Social Share
    • Email Social Share ❺
  • 📘sa5-detect 🧪
    • 🔍About SA5's Detect Lib
    • 🚀Quick Start | SA5 Detect
    • Page
    • User Agent Detection
    • Geolocation Detection 🧪
      • Cache Setup v4
    • Detect Incognito Mode
  • 📘sa5-analytics
    • 🔍About SA5's Analytics Lib
    • 🚀Quick Start | SA5 Analytics
    • A/B and Multivariate Testing
    • UTM Tracking
    • Rel Attributes
    • GA Events
    • GTM Events ❺🧪
      • Important dataLayer Notes
      • Facebook
      • Google Analytics ( GA4 )
      • Future
  • 📘sa5-data
    • 🔍About SA5's Data Lib
    • 🚀Quick Start | SA5 Data & Data-Binding
    • Usage Notes
    • Concepts & Terminology
      • Data Paths
      • Complex Data Sources
      • Developing Concepts 📝
    • Data Sources ( Simple )
      • URL Querystring Data Source
      • URL Part Data Source
      • User Info Data Source
      • Cookies & Web Storage Data Sources 📝
      • Global Data Source 🧪
    • Data Sources ( Complex )
      • RichText Data Source 🧪
      • Defining Custom Data Sources
      • Collection List Data Source 📝
        • Developing Concepts | Collection List Data Sources
    • Data Binding
      • Conditional Visibility
      • Form Elements 📝
      • Templates & Macro Expansion 📝
      • Developing Concepts on Data-Binding 📝
      • Macro Expansion
        • Macro Expansion
        • Count Items
      • Preloaders
    • SA5 Data ( HSON ) ❺🧪
      • SA5 Data BETA Kit
      • JSON Data Variants
    • Advanced Use
    • SA5 Data JS API
    • Future 📝
      • External Data
      • One-Way v. 2-way Bindings
      • Reactive Bindings
      • Data Sources ( External ) 🧪
        • Google Sheets Data Source ⛔
        • GitHub Data Data Source ⛔
  • 📘sa5-forms
    • 🔍About SA5's Forms Lib
      • SA5 Forms Roadmap
    • 🚀Quick Start | SA5 Forms
      • SA5 Forms Future
    • Data-binding Form INPUTs & SELECTs ❺
    • Smart Form Webhook Handler ❺
      • Form Webhook Handler JS API Events
      • n8n Handler
      • ▶️Basin Handler
        • File Uploads
        • Future
      • ▶️Make ( Integromat ) Handler
      • Future
    • Form Data Validation
      • Invalid Field Indicators (Real-Time) 🧪
      • Invalid Field Indicators on Submit Attempt 🧪
      • Email validation
    • Remove Unchecked Checkboxes ✨
    • Preserve Line Breaks
    • Form IP Info ❺
    • File Uploads 📝
    • Custom Form Submit Button
    • File Downloads
    • Form Select Element
    • SA5 Forms API
    • Dynamic Forms
    • Form Success Redirect 🧪
    • Show / Hide Password 🧪
  • 📘sa5-html
    • 🔍About SA5's HTML Lib
      • Webflow Interactions
    • 🚀Quick Start | SA5 HTML
    • Advanced Element Sorting ❺
    • Advanced Element Filtering ❺
      • Useful Filtering Examples
    • Dynamic URLs 🧪
      • Future
    • Dynamic Attributes
      • Future
        • Smart Attributes 🧪
        • Prefix, Postfix, and Formatted Attributes 🧪
    • Scroll to Section
    • Breakpoints ❺
    • Limit Items by Breakpoint ❺
      • Designer CSS Embed
    • Limit Items to Multiple-of ❺
    • Numeric Sequencing ❺
    • Truncate Text w/ Ellipsis ❺
    • Encoded Email
    • Hide Section w/ Empty Collection Lists ❺
    • Decode HTML ❺
    • Markdown ❺
      • Themes
    • Transform ❺🧪
    • Code Formatting ❺🧪
    • CMS Code Injection ❺🧪
    • Responsive Tables ❺🧪
    • Text Formatting ❺🧪
    • Components ❺🧪
      • Component Object Positioning
    • Auto-Size IFRAMEs 🧪
    • Switch Case
    • Lazy Load
    • Gallery 🧪
    • Scroll Anchor
  • 📘sa5-layout
    • 🔍About SA5's Layout Lib
      • Future
    • 🚀Quick Start | SA5 Layout Lib
    • Layout ❺
      • Tabs Layout Handler
      • Slider Layout Handler 🧪
      • Future
    • Element Groups ❺🧪
    • Equal Height Rows ❺🧪
  • 📘sa5-logic 🧪
    • 🔍About SA5's Logic Lib
      • Future
    • 🚀Quick Start | SA5 Logic Lib
    • If ❺🧪
    • Switch ❺🧪
  • 📘sa5-booking
    • 🔍About SA5's Booking Lib
    • 🚀Quick Start | SA5 Booking Lib
    • GetTimely ❺🧪
    • SimplyBook ❺🧪
  • 📘sa5-richtext
    • 🔍About SA5's Rich Text Lib
      • Future
    • 🚀Quick Start | SA5 Rich Text
    • Nested Lists ❺
      • Legacy Feature Notes
    • GitHub Gists ❺
      • ▶️Video Tutorials
      • Why Gist?
      • Technical Notes
      • Future
    • Code Blocks 🧪
      • Wrapping Code Blocks
      • Copy Code to Clipboard
    • Excalidraw ( SVG Embeds )
    • URL Expanders 🧪
    • Annotations 🧪
    • Text SPAN Formatting 🧪
    • Lightboxes 🧪
      • Future
    • Embeddables
    • Richtext ❺🧪
      • CSS Isolation
    • Blockquotes
    • Call-Outs
    • Responsive Inline Images
  • 📘sa5-table
    • HTML Tables
  • 📘sa5-kiosk 🧪
    • 🔍About SA5's Kiosk Lib
    • 🚀Quick Start | SA5 Kiosk
    • Usage Notes
    • Kiosk Hardware & Browser Setup
    • Kiosk Base 🧪
    • Inactivity Timer 🧪
    • Display Mode
    • Technical Notes
    • Future
      • Smart Watch Notes
    • ToDo
  • 📘sa5-hotkeys
    • 🔍About SA5's Hotkeys Lib
    • 🚀Quick Start | SA5 Hotkeys
    • Hotkeys ❺
      • Future
  • 📘sa5-commerce
    • Payment Providers
    • Price in Local Currency 🧪
  • 📘sa5-demo
    • Webflow Preview Link
  • 📘sa5-ui
    • 🔍About SA5's UI Lib
    • 🚀Quick Start | SA5 UI
    • 5-Star Ratings Component ❺
  • 📘sa5-cro
    • 🔍About SA5's CRO Lib
    • 🚀Quick Start | SA5 CRO
    • Conversion Tracking Event
  • 📘sa5-url
    • 🔍About SA5's Url Lib
    • 🚀Quick Start | SA5 Url
    • Query Param Passthrough
      • Future
    • External Link Targeting
    • Relative Link Fixups ⛔
  • 📘sa5-video
    • 🔍About SA5's Webflow Video Lib
    • 🚀Quick Start | SA5 Video
    • Background Video Poster
    • Events
    • YouTube Hide Related Videos [BETA]
      • Styling Options
      • Future
    • Media Pop-Ups 🧪
    • Video Player ( Direct )
    • Video Controller File Format
    • Media Controller
    • Video Player Controller
      • Video Playback Spec 🧪
      • YouTube Video Data 🧪
      • Loom Video Data 🧪
  • 📘sa5-elements
    • 🔍About SA5's Elements Lib
      • Elements Lib Future Plans
    • 🚀Quick Start | SA5 Elements
    • Element Actions 🧪
    • Tabs Element
      • Tabs Future Plans
      • Tabs API
    • Slider Element
      • Slider JS API
      • Slider JS API Events
      • Advanced Slider Use
      • Future
    • Deck Controller Element ⛔
    • Button Element
    • Dropdown Element
      • Future
    • Lightbox Element
      • CMS Lightbox + Groups
      • CMS Lightbox + Captions
        • Popular Lightbox Setups
      • Lightbox JS API
      • SA5 Lightbox Future
    • Radio Button Element 🧪
    • Autocomplete Element
      • Styling
      • Future
    • Accordion Element
      • Accordion Future Plans
      • Accordion API
    • Lottie Element ❺🧪
    • Locale Switcher Element ❺🧪
      • Technical Notes
      • JavaScript API
  • 📘sa5-format
    • 🔍About SA5's Format Lib
    • 🚀Quick Start | SA5 Format
    • Format Numbers & Currencies ❺
    • Format Dates ❺
      • Use Cases
        • Custom Format a Date
        • Localize a Date
        • From and To Relative Timespans
        • Age
      • Future - Date formatting
      • Setup Your Date Field for Good Parsing
  • 📘sa5-user-accounts
    • 🔍About SA5's Webflow User Accounts Lib
    • 🚀Quick Start | SA5 User Accounts
    • Logged-In User Info ❺
      • Custom User Fields
      • Webflow's UserID
      • Access Groups
        • Using Access Groups for Conditional Visibility
        • Using Access Groups for Routing ❺🧪
      • The User object
        • The User Object Lifecycle
      • Tips & Best Practices
      • User Info FAQs
      • Troubleshooting
      • ⏩Future Plans & Ideas
      • BETA testing
      • Technical Notes - Interfaces
      • Future Development
    • Advanced Log-In & Sign-Up Flow ❺
    • Conditional Element Display ❺
    • Expand Login Button ❺
  • 📘sa5-track
    • 🔍About SA5's Tracking Lib
    • 🚀Quick Start | SA5 Tracking
    • Webflow Cookies & Storage Tracking ❺
      • Conditional Element Visibility
      • Tracking Page Visits
      • Tracking Button Clicks
      • Track Query String Params
      • Track Checkbox State
      • Cloneable Demo
    • SA5 Referer Tracking ❺🧪
    • Future Plans
      • Likes & Favorites Tracking ❺🧪
      • Recently Viewed Tracking ❺🧪
  • 📘sa5-modals
    • 🔍About SA5's Webflow Modals & Popups Lib
    • 🚀Quick Start | SA5 Modals & Popups
    • Webflow Popups & Modals
      • Triggers
      • Gating Modals
      • Modal Design & Styling Notes
      • Simple Modals v. Custom Modals
      • Modal JS API
      • Page-Specific Modal Control
      • Common Configurations
      • Pro-Tips
      • SA5 Modals Roadmap & Future
        • Future Attributes
        • Future Triggers
    • Dismissible Elements
    • Webflow Modals & Popups Auto-Open and Auto-Close
    • Side Panels 🧪
  • 📘sa5-selectcustom
    • 🔍About SA5's Custom Form Select Lib
    • 🚀Quick Start | SA5 Custom Form Select
    • Custom Form Select ❺🧪
  • 📘sa5-gallery
    • 🔍About SA5's Gallery Lib
    • 🚀Quick Start | SA5 Gallery
    • Gallery ❺🧪
      • Simple Collage Layout Engine
  • 📘sa5-effects
    • 🔍About SA5's Effects Lib
    • 🚀Quick Start | SA5 Effects
    • Depthmap (Fake 3D) Image ❺🧪
    • Image Zoom
  • 📘sa5-fixup
    • Viewport META
    • Webflow Fixups ❺
  • 📘sa5-countup
    • CountUp Animated Numbers
  • 📘sa5-seo
    • 🔍About SA5's SEO Lib
    • 🚀Quick Start | SA5 SEO
    • Noindex ❺🧪
    • Nofollow ❺🧪
    • JSON-LD ❺🧪
      • JSON-LD Article ❺🧪
      • JSON-LD Video ❺🧪
      • JSON-LD Course Info ❺🧪
      • JSON-LD WebPage
      • JSON-LD Sitelinks Searchbox ❺🧪
  • 📘sa5-core
    • SA5 Core ❺
    • Webflow Designer Support ❺
  • 📘sa5-embeds
    • 🔍About SA5's Embeds Lib
    • 🚀Quick Start | SA5 Embeds
    • Table Embeds ❺
      • Google Doc Table Embeds
        • Styling Table Embeds
      • Google Sheets Table Embeds
      • Future
  • 📘sa5-state
    • 🔍About SA5's State Lib
    • 🚀Quick Start | SA5 State
    • State ❺🧪
      • State Handlers
        • SA5 State Handler
        • MobX
        • Redux
  • 📘sa5-localization
    • 🔍About SA5's Localization Lib
    • 🚀Quick Start | SA5 Localization
    • Localization Functions
    • Locale URLs
    • Sort locales in the order you choose
  • 📘sa5-404
    • 🔍About SA5's 404 Lib
    • 🚀Quick Start | SA5 404
    • 404 Smart Search ❺
  • 📘sa5-calc
    • 🔍About SA5's Calc Lib
      • Future
    • 🚀Quick Start | SA5 Calc
    • Count & Sum Items ❺
      • Source Types
      • Calc Use Cases
  • 📘sa5-trigger ⛔
    • 🔍About SA5's Trigger Lib
    • 🚀Quick Start | SA5 Trigger
    • IX Triggers ( Legacy ) ❺
  • 📘Deprecated Features
    • Repeater ⛔
    • Lipsum Generator ⛔
    • JSON Formatter ⛔
Powered by GitBook
On this page
  • How SA5's Access Groups Feature Works
  • Setting Up Access Groups
  • STEP 1 - Setup the SA5 Access Group Folder & Pages
  • STEP 2 - Configure SA5 Memberships
  • STEP 3 - Update the Library to BETA & Check Your Work

Was this helpful?

  1. sa5-user-accounts
  2. Logged-In User Info ❺

Access Groups

Get the Access Groups of the Currently Logged-In User

SA5's new Access Groups feature adds access group information into the User Info object, and makes it available to you in the callback.

From there, you write any custom code you like to hide elements, show elements, redirect users away from pages you do not want them on, and so on.

As a best practice, you can use the user.user_data_loaded.access_groups to determine if access group loading has completed. It will be true once that portion of the user object is loaded, and then you can check the user.access_groups array to see which groups they are a member of.

Later, depending on the use cases shared in the forum, we plan to add attributes-based features like access-group-based conditional visibility, and possibly access-group-based routing.

In a similar fashion to the Custom User Fields, SA5'S Access Groups feature requires a specific setup approach in order to work. Make certain to follow the setup precisely.

How SA5's Access Groups Feature Works

Webflow does not provide Access Groups information in the /user-account page so we use a different approach to discern the Access Groups that the current user is a member of.

The underlying strategy is to setup and query a set of known pages that each have specific paths and access rights settings. If the user has access, we know they are a member of that Access Group.

By default these known pages are setup under a special subdirectory named /sa5-ag. You will need one ( empty ) page for each of your Access Groups, and each of those pages;

  • MUST have the same exact slug as the Access Group's slug, e.g. premium

  • MUST be configured for access ONLY by members of that Access Group

Setting Up Access Groups

For example, if you have 4 access groups, and their slugs are free, basic, pro and premium, then you would;

STEP 1 - Setup the SA5 Access Group Folder & Pages

  • Create your Access Groups in Webflow, and write down an exact list of the slugs for each. Keep them short and sweet, and life will be simpler.

  • Create a folder at the root of your site with the slug sa5-ag.

  • Inside the folder, create 4 pages, with the following slugs.

    • free, which you restrict only to the Free access group members

    • basic, which you restrict only to the Basic access group members

    • pro, which you restrict only to the Pro access group members

    • premium, which you restrict only to the Premium access group members

In these pages, the name of the folder and the names and contents of the pages do not matter. Leave the pages blank. However the slugs MUST be precisely set according to the instructions above.

STEP 2 - Configure SA5 Memberships

In your SITE-wide before-HEAD custom code, where you load the library, configure SA5 Memberships with the list of Access Groups it should check for. This is done with the new getMembershipConfig Memberships configuration block.

In your script, it will look something like this;

<script>
window.sa5 = window.sa5 || [];
window.sa5.push(['getMembershipConfig', 
  (config) => {
    config.accessGroupsFolder = '/sa5-ag';
    config.accessGroups = [
      'free', 'basic', 'pro', 'premium'
    ];
    return config;
  }]); 
</script>

Make certain you have only one getMembershipConfig block to avoid confusing your configuration.

There are two options you can configure;

  • config.accessGroupsFolder defaults to /sa5-ag. If you want a different folder slug, you can override that. Make certain the folder you create matches that path.

  • config.accessGroups is an array of your Access Group slugs. You can have 1 or 20, it doesn't matter. Make sure it's a valid JavaScript string array, with comma delimiters.

STEP 3 - Update the Library to BETA & Check Your Work

IMPORTANT BETA LIBRARY VERSION You will need to update your Webflow Memberships library version overall to use this. Do not install multiple copies or versions of the library on the same site. The entire BETA-library plus sample config and custom code would look like this;

<!-- Sygnal Attributes 5 | Memberships BETA -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/sygnaltech/webflow-util@5.3.4/dist/css/webflow-membership.css"> 
<script defer src="https://cdn.jsdelivr.net/gh/sygnaltech/webflow-util@5.3.4/dist/nocode/webflow-membership.js"></script>
<script>
window.sa5 = window.sa5 || [];
window.sa5.push(['getMembershipConfig', 
  (config) => {
    config.accessGroupsFolder = '/sa5-ag';
    config.accessGroups = [
      'free', 'basic', 'pro', 'premium'
    ];
    return config;
  }]); 
window.sa5.push(['userInfoChanged', 
  (user) => {
    console.log("USER INFO CHANGED", user); 
  }]);   
</script>

Last updated 9 months ago

Was this helpful?

Note that this is not the same configuration block as we use for . This callback handler is keyed getMembershipConfig, while routing uses getMembershipRoutingConfig. They are unrelated and have different configuration options. You can use both, if you are using both features concurrently.

📘
Advanced Membership Routing