In X-cart 4 google analytics is not implemented using Global Site Tag. So when you do convert over (I will create a post for this later) you will need to know how to track internal searches in analytics.

Firstly you will need to add the q get variable to the admin screen option below.

This will tell google analytics if a page loads with a GET parameter q then you need to track the value of q. In xcart you will have the search tracking defined like so.

var _gaq = _gaq || [];
_gaq.push(["_setAccount", "{$config.Google_Analytics.ganalytics_code}"]);
{if $main eq "search"}
	terms='{$search_prefilled.substring|escape}';
	searchterms=terms.toLowerCase().replace(/\s/g,'+');
	_gaq.push(['_trackPageview','/search?q='+searchterms]);
{else}
	_gaq.push(['_trackPageview']);
{/if}

In xcart 4 once you have gtag.js implemented you have the following

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id={$config.Google_Analytics.ganalytics_code}"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){$ldelim}dataLayer.push(arguments);{$rdelim}
  gtag('js', new Date());

  gtag('config', '{$config.Google_Analytics.ganalytics_code}');
</script>

This would need to be amended to the following

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id={$config.Google_Analytics.ganalytics_code}"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){$ldelim}dataLayer.push(arguments);{$rdelim}
  gtag('js', new Date());
  
{if $main eq "search"}
  terms='{$search_prefilled.substring|escape}';
  searchterms=terms.toLowerCase().replace(/\s/g,'+');
  gtag('config', '{$config.Google_Analytics.ganalytics_code}', {$ldelim} 'page_path': '/search?q='+searchterms {$rdelim});
{else}
  gtag('config', '{$config.Google_Analytics.ganalytics_code}');
{/if}  
</script>