Pages

22 September, 2025

Resolution - Coveo for Sitecore - {"message":"Parameter 'viewEvent.referrer' is not a valid URI.","type":"InvalidParameter"}

In the previous blog post (Coveo for Sitecore - {"message":"Parameter 'viewEvent.referrer' is not a valid URI.","type":"InvalidParameter"}), I explained about a bad request error when Coveo Analytics requests were sent from Sitecore. 

As per Mozilla developer document, the HTTP Referer request header contains the absolute or partial address from which a resource has been requested. The Referer header allows a server to identify referring pages that people are visiting from or where requested resources are being used. This data can be used for analytics, logging, optimized caching, and morehttps://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Referer

Even though, the android-app://com.google.android.googlequicksearchbox/ referrer is a valid URI, Coveo needs a URL. All URLs are URIs, but not all URIs are URLs; a URL is a subset of the broader URI category, which also includes URNs (Uniform Resource Names). Since Coveo support mentioned that they cannot change the logic at their side to accept the URI, we are left out with an option to override it in the source. 

As this is a Coveo Hive implementation, modifying the Coveo UA library script is not possible. When the View analytics is sent using UA library in Hive implementation, there is a section where we can override this value.


Before sending the view analytics data, we checked if the referrer is having problematic referrer, then we will just override it with custom value (like www.google.com as it is from Google app). Once this change is implemented, we were able to see success response instead of bad request from Coveo. 

Even Coveo support is left with only this option as the UA library cannot be updated. 

I hope it can be helpful for the folks in Coveo/Sitecore community. 

22 August, 2025

Coveo for Sitecore - {"message":"Parameter 'viewEvent.referrer' is not a valid URI.","type":"InvalidParameter"}

Recently, one of our client reported frequent error logs from Coveo. It was mostly for the Coveo view analytics request which returns bad request with the below error. 

View Request: /coveo/rest/ua/v15/analytics/view?visitor=

{"message":"Parameter 'viewEvent.referrer' is not a valid URI.","type":"InvalidParameter"}

We enabled the Coveo for Sitecore debug logs in \App_Config\Include\Coveo\Coveo.SearchProvider.Custom.config file. 


By enabling the debug log, it spit a huge amount of data to analyze. Upon checking one of the failure, we found the request header Referrer was having the URL with the correct format. 


We also found that user agent was always Android and that too version 9 or 10 which is pretty old. Either someone is using an old phone or someone is sending malicious requests using old user agents. 

When reaching out to Coveo support, they provided an assembly which can spit the payload also in the logs. After placing the assembly, we analyzed the payload and the referrer attribute was having Google App user agent. This referrer attribute which is in Coveo payload is different from the actual request. 

"referrer":"android-app://com.google.android.googlequicksearchbox/"

This is not having a right URL format so Coveo is responding with bad request. This Coveo payload referrer is injected by Coveo JavaScript framework. 

We do have Cloudflare as our edge layer but adding a rule to transform the referrer header may not work for Coveo payload. All the data is sent to Coveo support for further analysis. Waiting for their response. 

Regarding this referrer URL, Google provides the following information.

The android-app://com.google.android.googlequicksearchbox/ referrer indicates that a user has arrived on your site from the Google Search app on an Android device.
  • This happens when a user clicks a search result link from within the Google Search app, rather than from a standard web browser.

  • The android-app:// URI scheme identifies the referrer as an Android application.

  • com.google.android.googlequicksearchbox is the unique package name for the Google Search app on Android.

  • This traffic is essentially organic search traffic, and should be classified as such in your analytics.

25 April, 2025

XM to XM Cloud Migration tool - 2.1 - Using Command Line (CLI)

XM to XM Cloud Migration tool has two ways to use. GUI and CLI. In this blog post, we will go through CLI. 

CLI uses the same appsettings.json file which was created using GUI or it can be manually created for CLI usage. 

Content Command


Executing .\XMMigration.exe content will use the existing appsettings config and migrate the content.



Similarly, CLI can be used to migrate the users. In the below section, all the available commands and sub commands are listed.

Show help and usage information

 -?, -h, --help

Users Command


Retrieve domains from source instance. 
--retrieve-domains

Migrate users by passing domains (comma separated).
--migrate-userdomains <migrate-userdomains>

Username to Sitecore CM login of source instance.
--source-username <source-username>

Password to Sitecore CM login of source instance.
--source-password <source-password>

Show help and usage information.
-?, -h, --help


As a sample, to retrieve all the users under Sitecore domain, 

.\XMMigration.exe users --migrate-userdomains sitecore

Happy Migrating!!!

blockquote { margin: 0; } blockquote p { padding: 15px; background: #eee; border-radius: 5px; } blockquote p::before { content: '\201C'; } blockquote p::after { content: '\201D'; }