you did the right thing by creating a Global variable (Global.UserId) with "external sources can set values" and a “Set context variables” topic (which doesn’t need to be invoked). The missing link is: Copilot Studio will not auto-populate Global.UserId unless you explicitly push it into the bot’s conversation payload when the session starts.
Global.UserId
That’s why you’re only seeing System.Activity.ChannelData (technical session info like widget/session IDs, locale, channel, etc.) that data comes directly from Omnichannel/ACS, not from your custom injection.
What’s Happening Global variable is defined correctly External sources can set values But no value is ever assigned at runtime because Omnichannel chat widget (or ACS Web Chat) hasn’t been told to push UserId into the bot session. Result: Bot sees it as null/empty until agent handoff, because only at escalation does Omnichannel enrich the transcript with CRM session context.
Under review
Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.
As AI tools become more common, we’re introducing a Responsible AI Use…
We are honored to recognize Andrés Arias as our Community Spotlight honoree for…
These are the community rock stars!
Stay up to date on forum activity by subscribing.
Daniyal Khaleel 67
Tom_Gioielli 28 Super User 2025 Season 2
Gerardo Rentería Ga... 17 Most Valuable Professional