{"product_id":"n8n-weekly-discord-role-vs-google-sheets-roster-drift-report","title":"n8n Weekly Discord Role vs Google Sheets Roster Drift Report","description":"\u003ch3\u003eWeekly Discord Role vs Google Sheets Roster Drift Report (n8n Workflow)\u003c\/h3\u003e\n\u003cp\u003eThis n8n workflow automatically compares your Google Sheets roster against real Discord member roles every week—then logs a row-by-row “role drift” report back to Google Sheets and posts a concise summary to Discord. No more guessing who gained (or lost) entitlement!\u003c\/p\u003e\n\n\u003ch3\u003eWhat this workflow does\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eRuns on a schedule\u003c\/strong\u003e: executes every Monday at \u003cstrong\u003e08:00\u003c\/strong\u003e.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eLoads reconciliation settings\u003c\/strong\u003e: Discord server\/channel IDs, Google Sheets spreadsheet + tab names, gated role names, status rules, and a grace period.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eFetches live Discord data\u003c\/strong\u003e: pulls the server’s roles via the Discord API.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eReads your roster from Google Sheets\u003c\/strong\u003e: validates and normalizes roster rows (e.g., maps entitled role names to live Discord role IDs).\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eRetrieves Discord members\u003c\/strong\u003e: loads all non-bot members (excluding ignored user IDs) and their current role IDs.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eReconciles entitlements vs actual roles\u003c\/strong\u003e: buckets mismatches such as missing roles, unexpected gated roles, missing roster rows, grace-period joiners, and configuration\/roster issues.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eWrites results back\u003c\/strong\u003e: appends all drift rows to the drift report tab in Google Sheets.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eCommunicates in Discord\u003c\/strong\u003e: posts a formatted summary message to your configured Discord channel.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eUse cases\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eManaged communities that grant roles based on membership status stored in \u003cstrong\u003eGoogle Sheets\u003c\/strong\u003e.\u003c\/li\u003e\n  \u003cli\u003eSaaS ops and automation engineers who need weekly \u003cstrong\u003eDiscord role compliance reporting\u003c\/strong\u003e.\u003c\/li\u003e\n  \u003cli\u003eTeams that want audit-friendly visibility into roster drift, grace-period exceptions, and configuration problems.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eTechnical details\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003en8n nodes \/ integrations\u003c\/strong\u003e: set, code, discord, sticky note, http request, and Google Sheets.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eDiscord setup\u003c\/strong\u003e: create\/invite a Discord bot, enable \u003cem\u003eServer Members Intent\u003c\/em\u003e, and add the Discord Bot credential in n8n.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eGoogle Sheets setup\u003c\/strong\u003e: add Google Sheets OAuth credentials and provide roster + report spreadsheet URLs and tab names.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eExpected roster columns\u003c\/strong\u003e: includes fields like \u003ccode\u003ediscord_user_id\u003c\/code\u003e, \u003ccode\u003edisplay_name\u003c\/code\u003e, and \u003ccode\u003eentitled_role\u003c\/code\u003e.\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"N8N Commerce","offers":[{"title":"Default Title","offer_id":45741406093491,"sku":"N8N-17616","price":25.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0749\/6279\/6723\/files\/39Ud2R6Tjx_vk1a4xsqgn_8ZYRazWI.png?v=1785315809","url":"https:\/\/buyflowscripts.com\/products\/n8n-weekly-discord-role-vs-google-sheets-roster-drift-report","provider":"N8N Commerce","version":"1.0","type":"link"}