Header Navigation

Mobile Navigation

About us - banner

About us

About us

CCW supports thousands of customers with complaints they have been unable to resolve directly with their water company.

In addition, we carry out research on a wide range of water issues and publish our findings to influence the future direction of the industry in a way that benefits consumers. Our Committees in England and Wales and team of Consumer Advocates represent consumer interests to a wide range of stakeholders, including Government, regulators and water companies.

Our history

  • A non-departmental public body (NDPB) in England and a statutory body in Wales, sponsored by Defra and Welsh Government respectively.
  • Established on 1 October 2005 under the Water Industry Act 1991 as amended by the Water Act 2003, to represent consumers of water and sewerage services in England and Wales.
  • Replaced the WaterVoice committees, which were part of the industry economic regulator, Ofwat, to become an independent statutory consumer

Values and behaviours

Colleagues at CCW are:

  • Positive Energy
  • Respect for all
  • Innovative spirit
  • Deliver Our Promises
  • Work together as one

Our vision and values

As we look ahead to the coming years, we have a clear vision of what we aim to achieve on behalf of water consumers in England and Wales. This mission is supported by strategic ambitions and delivered through a series of key campaigns.

In addition, colleagues across CCW embrace a set of corporate values that embody the way we do business. Through our focus on personal development, diversity and inclusion, we want to make sure that CCW is a fun, energetic place to work where every colleague feels that their individual contribution is making a difference.

Equality and diversity

At CCW, we define our diversity as having people with a wide range of traits, backgrounds and experiences. Being inclusive means we all feel comfortable sharing our ideas and perspectives because our differences are respected and valued. Every member of the organisation feels safe, accepted and appreciated with an equal opportunity to grow and succeed at work.

CTA footer

Interested?

Footer

حصل خطأ عند معالجة القالب.
The following has evaluated to null or missing:
==> propsUtil.get(ucmLocaleKey)  [in template "64056#64102#365043" at line 28, column 19]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign locale = propsUtil.get(ucmLoc...  [in template "64056#64102#365043" at line 28, column 1]
----
1<div id="outer-footer" class="updatedFooter" style="padding-left: 0px; width: 1640px;"> 
2	 <div id="inner-footer-expert" class=""> 
3					<div id="footerLogo"> 
4					<#--<#if FooterLogo.getData()?? && FooterLogo.getData() != ""> 
5					<#assign footerLogoHTML = "${FooterLogo.getData()}"/> 
6					<#if (footerLogoHTML?length > 0)> 
7					${footerLogoHTML} 
8					<#else> 
9						<img src="https://www/hays.co.uk/cs/HaysMicroSites/assets/img/hayslogo.gif" id="defaultLogo" alt="Hays  
10							footer logo"> 
11					</#if> 
12					</#if>--> 
13					<#assign haysLogo = propsUtil.get("HAYS_LOGO")/> 
14					<img src="${haysLogo}" id="defaultLogo" alt="Hays  
15							footer logo"> 
16					</div> 
17					<div id="footerLogo-Links"> 
18					<#if Link.getSiblings()?has_content> 
19							<#list Link.getSiblings() as cur_Link> 
20							<#if cur_Link.getData()?? && cur_Link.getData() != ""> 
21									<#assign linkData = "${cur_Link.getData()}"/> 
22												${linkData} 
23							</#if> 
24							</#list> 
25						</#if> 
26					</div> 
27					<#assign ucmLocaleKey = themeDisplay.getLocale()+"."+siteType+"."+"ucmLocale"> 
28<#assign locale = propsUtil.get(ucmLocaleKey)/> 
29<#assign apiUrl = propsUtil.get("WEB72_API_DOMAIN")/> 
30 
31<#assign lr74CutoverCountryCode = propsUtil.get("LR74_CUTOVER_COUNTRY_CODE")/> 
32<#if lr74CutoverCountryCode??> 
33<#list lr74CutoverCountryCode?split(",") as countryCode> 
34 <#if countryCode = themeDisplay.getLocale()?keep_after_last("_") > 
35    <#assign apiUrl = propsUtil.get("API_DOMAIN")/> 
36 </#if> 
37</#list> 
38</#if> 
39 
40<#attempt> 
41 
42<#if httpUtil.URLtoString(apiUrl+"/o/HaysContentStructure/getcontentstructure/expertFooter/"+locale)??> 
43<#assign response = httpUtil.URLtoString(apiUrl+"/o/HaysContentStructure/getcontentstructure/expertFooter/"+locale)> 
44<#assign responseObj = jsonFactoryUtil.createJSONObject(response)> 
45<#assign getResponseResultArray = responseObj.getJSONArray("results")> 
46<div id="footer-bottom"> 
47 <#if getResponseResultArray.length() gt 0> 
48 <#assign siteUrl = getResponseResultArray.get(0).siteUrl> 
49  
50 <#if getResponseResultArray.get(0).getJSONArray("GroupHeading")?? && getResponseResultArray.get(0).getJSONArray("GroupHeading").length()?? && getResponseResultArray.get(0).getJSONArray("GroupHeading").length() gt 1> 
51  
52 <#assign groupHeadingArr = getResponseResultArray.get(0).getJSONArray("GroupHeading")> 
53 	<div class="row single-col gpHeading"> 
54	 <div class="col col-12">   
55		 <nav> 
56			<ul> 
57			<#list 0 ..< groupHeadingArr.length()?number as i> 
58			    <#if groupHeadingArr.get(i).Link?starts_with("/")> 
59			     <#assign linkUrl = siteUrl + groupHeadingArr.get(i).Link> 
60					<li> 
61						<a href="${linkUrl}" target="">${groupHeadingArr.get(i).GroupHeading}</a> 
62					</li> 
63				<#else> 
64				    <li> 
65						<a href="${groupHeadingArr.get(i).Link}" target="">${groupHeadingArr.get(i).GroupHeading}</a> 
66					</li> 
67				</#if> 
68			</#list> 
69			</ul> 
70		  </nav> 
71		 </div> 
72	  </div> 
73	 <#elseif getResponseResultArray.get(0).getJSONArray("FooterLink")??> 
74	 <#assign FooterLinkArr = getResponseResultArray.get(0).getJSONArray("FooterLink")> 
75	 <div class="row single-col"> 
76		<div class="col col-12">   
77		 <nav> 
78			<ul> 
79			<#list 0 ..< FooterLinkArr.length()?number as i> 
80			     <#assign linkUrl = FooterLinkArr.get(i).FooterLink?replace("href=\"/", "href=\""+siteUrl+"/" ) > 
81					<li> 
82						${linkUrl} 
83					</li> 
84			</#list> 
85			</ul> 
86		  </nav> 
87		 </div> 
88	  </div> 
89	  
90	 </#if> 
91		<div class="row single-col"> 
92			<div class="col col-12"> 
93	    	<p class="last">${getResponseResultArray.get(0).CopyrightHTML}</p> 
94			</div> 
95		</div> 
96	</#if> 
97</div> 
98</#if> 
99<#recover> 
100 
101</#attempt> 
102 
103					<div id="copyright-text"> 
104						 <#if CopyrightText?? && CopyrightText.getData()?? && CopyrightText.getData() != ""> 
105				${CopyrightText.getData()} 
106				</#if> 
107					</div> 
108	</div> 
109</div> 
110<script> 
111$(document).ready(function(){ 
112    if((Liferay.ThemeDisplay.getLanguageId() != "en_GB") && (location.href.indexOf("/web/") != -1)) { 
113	console.log("link update required on the site"); 
114	$('a').each(function(index) { 
115		var layoutRelativeUrl = Liferay.ThemeDisplay.getLayoutRelativeURL(); 
116        var getSiteUrl = layoutRelativeUrl.substring(0, layoutRelativeUrl.lastIndexOf("/")); 
117		var linkVal = $(this).attr("href"); 
118		if((typeof linkVal !== "undefined") && linkVal.indexOf("https") == -1 && linkVal.indexOf("/")!= -1 && (linkVal.indexOf("/") === linkVal.lastIndexOf("/"))){ 
119		var updatedLink = getSiteUrl + linkVal ; 
120		$(this).attr("href", updatedLink) 
121		console.log("link updated - " + updatedLink); 
122
123	}); 
124
125}); 
126</script>