Quando o usuário está no aplicativo externo, ele clica em um botão de login e é redirecionado pelo fluxo de provedor SSO do Discourse, retornando ao aplicativo externo. Esse aplicativo externo pode armazenar uma sessão com os dados do usuário. Quando o usuário faz logout no Discourse, o webhook pode deletar a sessão do aplicativo externo. Não tenho certeza, mas acho que o cabeçalho do webhook é X-Discourse-Event: user_logged_out.
Edição: o logout do site externo é feito usando a API do Discourse.
Em vez de perguntar ao Discourse se um usuário está logado, você pode consultar o aplicativo externo. No meu caso, isso serve apenas para coisas como remover o botão de login no site externo.
Posso verificar meu código mais tarde. Não o vejo há algum tempo, mas acho que ele fazia algo assim.