Thanks to @charlietfl I'm able to add/remove parameters to URL according to the checkboxes choices.
Now I want to have multiple values for a specific URL parameter if multiple checkboxes are checked.
I adapted this previous answer snippet to reflect where I'm stuck.
When selecting multiple checkboxes the parameter and value are added whereas I need to only add the value.
How can I get http://example.com/?param=foo,bar instead of http://example.com/?param=foo¶m=bar when I Check foo and bar?
const url = 'http://example.com' // demo version
// const url = location.href - live version
const urlObj = new URL(url);
const params = urlObj.searchParams
const $checks = $(':checkbox')
// on page load check the ones that exist un url
params.forEach((val, key) => $checks.filter('[name="' + key + '"]').prop('checked', true));        
$checks.change(function(){
    // append when checkbox gets checked and delete when unchecked
    if(this.checked){
                //here I check if there is already the parameter in url
    if (url.indexOf(this.value) > -1) {
        //and try to append only this name with a comma as separator from previous one
        params.append(',',this.name )
    } else {
      params.append(this.value,this.name )
    }
    }else{
        params.delete(this.name);       
    }
    // do your page load with location.href = urlObj.href
     console.clear()
     console.log(urlObj.href);
})<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label>Foo <input type="checkbox" name="foo" value="param"/></label> 
<label>Bar <input type="checkbox" name="bar" value="param"/></label>
<label>Zzz <input type="checkbox" name="zzz" value="param"/></label> 
    