Como configurar o User Id do GTAG em arquivo JS externo pegando variável PHP?

Como uso PHP no backend, para configurar o user id inline basta dar um echo da variável $ userId, por ex:

<script>    if (isset($  userId)) {         $  gacode = "ga('create', 'xxx', 'auto', {'userId': $  userId});";         echo sprintf($  gacode, $  userId);         }         else {         $  gacode = "ga('create', 'xxx', 'auto');";         echo sprintf($  gacode);         } </script> 

Porém como quero usar o código de acompanhamento num arquivo .js externo (chamado no final do HTML da página .php), ao invés de utilizar inline, isso não funciona.

O código de acompanhamento é basicamente este:

window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'XXXXXXX', { 'user_id': 'USER_ID' }); 

Este código está no arquivo que criei gtag_user.js, que coloquei abaixo da lib do tagmanager (no final da página onde a variável $ userId está declarada).

<script async src="https://www.googletagmanager.com/gtag/js?id=UA-XXXXX"></script> <script src="https://www.site.com/view/js/gtag_user.js"></script> 

Onde USER_ID precisa ser igual a variável $ userId do PHP. Fiz algumas tentativas com ajax mas não deu certo também. Isso é possível? Como?