{"id":28941,"date":"2026-08-31T10:48:33","date_gmt":"2026-08-31T10:48:33","guid":{"rendered":"https:\/\/refiner.io\/docs\/?post_type=knowledgebase&#038;p=28941"},"modified":"2026-08-31T10:53:38","modified_gmt":"2026-08-31T10:53:38","slug":"user-consent","status":"publish","type":"knowledgebase","link":"https:\/\/refiner.io\/docs\/kb\/javascript-client\/user-consent\/","title":{"rendered":"User Consent"},"content":{"rendered":"\n\n\n<p>Depending on how you use Refiner and which privacy regulations apply to you, you may need to obtain user consent before Refiner stores information in the browser or communicates with our servers.<\/p>\n\n\n\n<p>The Refiner JavaScript SDK needs to store certain information in the browser, including a user identifier and timestamps, to be fully operational. This information is used for functions such as recognizing returning users and managing survey delivery.<\/p>\n\n\n\n<p>For more details about what is stored and which browser storage methods are used, see our <a href=\"https:\/\/refiner.io\/docs\/kb\/javascript-client\/web-storage-cookies\/\">Local Storage<\/a> documentation.<\/p>\n\n\n\n<p>The Refiner JavaScript SDK includes consent controls that let you keep Refiner inactive until the required consent has been obtained. <\/p>\n\n\n\n<p>For implementation details and method references, see our <a href=\"https:\/\/refiner.io\/docs\/kb\/javascript-client\/reference\/#compliance\">JavaScript Client Reference<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">When consent is required<\/h2>\n\n\n\n<p>In most cases, <strong>you do not need an additional consent mechanism when surveying logged-in users inside your application<\/strong>.<\/p>\n\n\n\n<p>Users of a web application have typically already agreed to your Terms of Service and Privacy Policy when creating an account or signing up for your service. These documents usually explain how personal data is processed and which third-party service providers are involved. <\/p>\n\n\n\n<p>Make sure Refiner is listed as a service provider or data processor in the relevant legal documents, where required.<\/p>\n\n\n\n<p>Additional consent requirements are more common when using Refiner on a <strong>publicly accessible website<\/strong>, particularly when surveying anonymous visitors.<\/p>\n\n\n\n<p>For example, websites operating in the European Union may need to obtain consent before <a href=\"https:\/\/refiner.io\/docs\/kb\/javascript-client\/web-storage-cookies\/\">storing certain information in the browser<\/a> or communicating with third-party services. In these situations, you are likely already using a Consent Management Platform (CMP) or cookie banner for analytics, advertising, or similar services.<\/p>\n\n\n\n<p>Refiner can be integrated into the same consent flow.<\/p>\n\n\n\n<p>The exact consent requirements applicable to your organization depend on your implementation and applicable privacy regulations. Refiner does not provide legal advice.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How consent management works<\/h2>\n\n\n\n<p>If your setup requires explicit consent, you can use the <code><a href=\"https:\/\/refiner.io\/docs\/kb\/javascript-client\/reference\/#require-consent\">requireUserConsent<\/a><\/code> method to keep the Refiner JavaScript SDK inactive until consent has been given.<\/p>\n\n\n\n<p>While Refiner is waiting for consent:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>No information is stored in Local Storage, Session Storage, or cookies.<\/li>\n\n\n\n<li>No requests are sent to Refiner&#8217;s backend servers.<\/li>\n\n\n\n<li>Automatic survey campaigns are not evaluated or displayed.<\/li>\n<\/ul>\n\n\n\n<p>Once your Consent Management Platform confirms that the user has given consent, you can activate Refiner using the <code><a href=\"https:\/\/refiner.io\/docs\/kb\/javascript-client\/reference\/#confirm-consent\">confirmUserConsent<\/a><\/code> method.<\/p>\n\n\n\n<p>The consent state is persisted in the browser, so users generally only need to provide consent once per browser or device.<\/p>\n\n\n\n<p>If a user later withdraws their consent, you can use <code>revokeUserConsent<\/code> to return the SDK to its inactive state.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Showing feedback surveys before consent<\/h2>\n\n\n\n<p>Manual surveys are an exception to the behavior described above.<\/p>\n\n\n\n<p>The <code><a href=\"https:\/\/refiner.io\/docs\/kb\/javascript-client\/reference\/#show-survey\">showForm<\/a><\/code> method continues to work while Refiner is waiting for consent. This allows you to provide an always-available, ad-hoc feedback survey without first activating the full Refiner SDK.<\/p>\n\n\n\n<p>When a survey is shown this way before consent is confirmed, Refiner does not store personal data in client-side storage.<\/p>\n\n\n\n<p>Automatic survey campaigns remain disabled until consent has been given.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Limiting browser storage<\/h2>\n\n\n\n<p>In addition to requiring consent, you can limit how long Refiner data remains in the browser.<\/p>\n\n\n\n<p>By default, the JavaScript SDK uses Local Storage, with cookies as a fallback. This allows Refiner to recognize the same browser across sessions.<\/p>\n\n\n\n<p>If your compliance requirements do not allow persistent browser storage, you can configure Refiner to use Session Storage instead using the <code><a href=\"https:\/\/refiner.io\/docs\/kb\/javascript-client\/reference\/#client-storage\">setClientStorageMethod<\/a><\/code> method.<\/p>\n\n\n\n<p>Session Storage is limited to the current browser session and is cleared when that session ends.<\/p>\n\n\n\n<p>For more details about what Refiner stores in the browser, see our <strong>Web Storage &amp; Cookies<\/strong> documentation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Alternative: Load Refiner after consent<\/h2>\n\n\n\n<p>Instead of loading Refiner immediately and keeping it inactive until consent is given, you can also defer loading the JavaScript SDK entirely until your Consent Management Platform confirms consent.<\/p>\n\n\n\n<p>Both approaches are valid. The best option depends on how your website loads third-party scripts and how your consent management solution is configured.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Depending on how you use Refiner and which privacy regulations apply to you, you may need to obtain user consent before Refiner stores information in the browser or communicates with our servers. The Refiner JavaScript SDK needs to store certain information in the browser, including a user identifier and timestamps, to be fully operational. This [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"https:\/\/refiner.io\/docs\/kb\/javascript-client\/user-consent\/\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","template":"","knowledgebase_tag":[],"class_list":["post-28941","knowledgebase","type-knowledgebase","status-publish","hentry","knowledgebase_cat-javascript-client"],"acf":[],"featured_image_urls_v2":{"full":"","thumbnail":"","medium":"","medium_large":"","large":"","1536x1536":"","2048x2048":"","ab-block-post-grid-landscape":"","ab-block-post-grid-square":"","gb-block-post-grid-landscape":"","gb-block-post-grid-square":""},"post_excerpt_stackable_v2":"<p>Depending on how you use Refiner and which privacy regulations apply to you, you may need to obtain user consent before Refiner stores information in the browser or communicates with our servers. The Refiner JavaScript SDK needs to store certain information in the browser, including a user identifier and timestamps, to be fully operational. This information is used for functions such as recognizing returning users and managing survey delivery. For more details about what is stored and which browser storage methods are used, see our Local Storage documentation. The Refiner JavaScript SDK includes consent controls that let you keep Refiner&hellip;<\/p>\n","category_list_v2":"","author_info_v2":{"name":"Moritz Dausinger","url":"https:\/\/refiner.io\/docs\/author\/user\/"},"comments_num_v2":"0 comments","yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>User Consent<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/refiner.io\/docs\/kb\/javascript-client\/user-consent\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"User Consent\" \/>\n<meta property=\"og:description\" content=\"Depending on how you use Refiner and which privacy regulations apply to you, you may need to obtain user consent before Refiner stores information in the browser or communicates with our servers. The Refiner JavaScript SDK needs to store certain information in the browser, including a user identifier and timestamps, to be fully operational. This [...]Read More...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/refiner.io\/docs\/kb\/javascript-client\/user-consent\/\" \/>\n<meta property=\"og:site_name\" content=\"Refiner Documentation\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-31T10:53:38+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/refiner.io\/docs\/kb\/javascript-client\/user-consent\/\",\"url\":\"https:\/\/refiner.io\/docs\/kb\/javascript-client\/user-consent\/\",\"name\":\"User Consent\",\"isPartOf\":{\"@id\":\"https:\/\/refiner.io\/docs\/#website\"},\"datePublished\":\"2026-08-31T10:48:33+00:00\",\"dateModified\":\"2026-08-31T10:53:38+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/refiner.io\/docs\/kb\/javascript-client\/user-consent\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/refiner.io\/docs\/kb\/javascript-client\/user-consent\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/refiner.io\/docs\/kb\/javascript-client\/user-consent\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/refiner.io\/docs\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"User Consent\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/refiner.io\/docs\/#website\",\"url\":\"https:\/\/refiner.io\/docs\/\",\"name\":\"Refiner Documentation\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/refiner.io\/docs\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/refiner.io\/docs\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/refiner.io\/docs\/#organization\",\"name\":\"Refiner Documentation\",\"url\":\"https:\/\/refiner.io\/docs\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/refiner.io\/docs\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/refiner.io\/docs\/wp-content\/uploads\/2022\/11\/cropped-Group-8.png\",\"contentUrl\":\"https:\/\/refiner.io\/docs\/wp-content\/uploads\/2022\/11\/cropped-Group-8.png\",\"width\":400,\"height\":61,\"caption\":\"Refiner Documentation\"},\"image\":{\"@id\":\"https:\/\/refiner.io\/docs\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"User Consent","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/refiner.io\/docs\/kb\/javascript-client\/user-consent\/","og_locale":"en_US","og_type":"article","og_title":"User Consent","og_description":"Depending on how you use Refiner and which privacy regulations apply to you, you may need to obtain user consent before Refiner stores information in the browser or communicates with our servers. The Refiner JavaScript SDK needs to store certain information in the browser, including a user identifier and timestamps, to be fully operational. This [...]Read More...","og_url":"https:\/\/refiner.io\/docs\/kb\/javascript-client\/user-consent\/","og_site_name":"Refiner Documentation","article_modified_time":"2026-08-31T10:53:38+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/refiner.io\/docs\/kb\/javascript-client\/user-consent\/","url":"https:\/\/refiner.io\/docs\/kb\/javascript-client\/user-consent\/","name":"User Consent","isPartOf":{"@id":"https:\/\/refiner.io\/docs\/#website"},"datePublished":"2026-08-31T10:48:33+00:00","dateModified":"2026-08-31T10:53:38+00:00","breadcrumb":{"@id":"https:\/\/refiner.io\/docs\/kb\/javascript-client\/user-consent\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/refiner.io\/docs\/kb\/javascript-client\/user-consent\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/refiner.io\/docs\/kb\/javascript-client\/user-consent\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/refiner.io\/docs\/"},{"@type":"ListItem","position":2,"name":"User Consent"}]},{"@type":"WebSite","@id":"https:\/\/refiner.io\/docs\/#website","url":"https:\/\/refiner.io\/docs\/","name":"Refiner Documentation","description":"","publisher":{"@id":"https:\/\/refiner.io\/docs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/refiner.io\/docs\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/refiner.io\/docs\/#organization","name":"Refiner Documentation","url":"https:\/\/refiner.io\/docs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/refiner.io\/docs\/#\/schema\/logo\/image\/","url":"https:\/\/refiner.io\/docs\/wp-content\/uploads\/2022\/11\/cropped-Group-8.png","contentUrl":"https:\/\/refiner.io\/docs\/wp-content\/uploads\/2022\/11\/cropped-Group-8.png","width":400,"height":61,"caption":"Refiner Documentation"},"image":{"@id":"https:\/\/refiner.io\/docs\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/refiner.io\/docs\/wp-json\/wp\/v2\/knowledgebase\/28941","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/refiner.io\/docs\/wp-json\/wp\/v2\/knowledgebase"}],"about":[{"href":"https:\/\/refiner.io\/docs\/wp-json\/wp\/v2\/types\/knowledgebase"}],"author":[{"embeddable":true,"href":"https:\/\/refiner.io\/docs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/refiner.io\/docs\/wp-json\/wp\/v2\/comments?post=28941"}],"version-history":[{"count":4,"href":"https:\/\/refiner.io\/docs\/wp-json\/wp\/v2\/knowledgebase\/28941\/revisions"}],"predecessor-version":[{"id":28948,"href":"https:\/\/refiner.io\/docs\/wp-json\/wp\/v2\/knowledgebase\/28941\/revisions\/28948"}],"wp:attachment":[{"href":"https:\/\/refiner.io\/docs\/wp-json\/wp\/v2\/media?parent=28941"}],"wp:term":[{"taxonomy":"knowledgebase_tag","embeddable":true,"href":"https:\/\/refiner.io\/docs\/wp-json\/wp\/v2\/knowledgebase_tag?post=28941"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}