Cookie consent management

A cookie consent manager built into your analytics

Show a compliant consent banner, hold tracking until visitors opt in, and keep an audit log — without bolting on a separate consent platform.

Problems it solves

Built for teams that need consent without a second tool

A separate consent tool to wire up

Configure the banner and categories in the same dashboard that runs your analytics.

Tracking fires before consent

Opt-in mode and auto-block hold tags until the visitor agrees.

No proof of what was agreed

Every decision is recorded with a timestamp for your audit trail.

Workflow

How PulsePanda turns this into product decisions

1

Configure the banner

Pick GDPR opt-in or CCPA opt-out, then set the title, text, and buttons.

2

Define categories

Group cookies as necessary, analytics, or marketing with clear descriptions.

3

Collect and prove

Auto-block until consent, then log every accept or reject.

PulsePanda cookie consent banner with Accept and Reject buttons and a privacy policy link

Under the hood

How the cookie consent manager blocks tracking

What actually happens in the browser before and after a visitor chooses.

Nothing of ours runs before a choice

In opt-in mode the PulsePanda snippet waits for a decision before it starts. Until the visitor accepts analytics there is no session replay, no heatmap or click, scroll and input capture, no event tracking, and no identifier written to the browser.

Third-party tags wait on their category

To hold back Google Analytics, the Meta pixel or any other tag, change its type to text/plain and add data-pp-consent with the category it belongs to. The browser ignores a script of that type, so it never runs. When the visitor grants the category, PulsePanda swaps each tagged script for a live copy with the same attributes, so external and inline scripts both run. External ones load asynchronously, so a tag that must run before another should be inlined or chained.

<!-- Runs only after the visitor accepts "marketing" -->
<script type="text/plain" data-pp-consent="marketing"
        src="https://connect.facebook.net/en_US/fbevents.js"></script>

<!-- Inline scripts work the same way -->
<script type="text/plain" data-pp-consent="analytics">
  gtag('config', 'G-XXXXXXXXXX');
</script>

Auto-block catches the cookies you missed

Tagging covers the scripts you know about. With auto-block on, PulsePanda also watches every cookie a script tries to write through document.cookie. A cookie from a category the visitor has not granted is dropped. In opt-in mode, a cookie that is not in your registry at all is dropped too until the visitor decides. Strictly necessary cookies always pass.

It is best-effort by design, and it is worth knowing where it stops: it cannot see cookies your server sets with a Set-Cookie header, or cookies written inside a third-party iframe. Gate those at the source.

Withdrawing consent cleans up

When a visitor turns a category off, PulsePanda expires the cookies your registry lists for that category, on both the current host and the parent domain, instead of leaving them to linger until they expire.

PulsePanda cookie registry listing each cookie with its category (necessary, analytics, marketing or preferences) and provider, with discovered cookies flagged for review
The cookie registry. Cookies seen in your real visitors' browsers are reported once per session and flagged “discovered”, so you classify what your site actually sets instead of guessing.

Consent modes

Opt-in, opt-out or notice-only

One setting decides whether tracking waits for a yes or starts until someone says no.

Opt-in, opt-out or notice-only
Opt-in (GDPR, ePrivacy)Nothing non-essential runs until the visitor accepts. The banner shows on the first visit with Accept and Reject side by side, and a visitor who ignores it is never counted as a yes.
Opt-out (CCPA, CPRA)Tracking starts granted and the banner lets visitors switch categories off. A switch takes effect immediately and the related cookies are cleaned up.
Notice-onlyTracking starts granted and the banner informs rather than asks, for sites where a notice is all the law requires.
Do Not Track and GPCWith “Respect Do Not Track / GPC” on, a browser sending either signal is treated as having rejected every non-essential category, and is not shown a banner at all.
Re-askingA choice is remembered for 180 days by default (you set the number). Bump the policy version after changing your cookie policy and every stored choice becomes invalid, so everyone is asked again.

What you get

Connected capabilities in one workspace

Connected capabilities in one workspace
ModesGDPR opt-in and CCPA opt-out, plus Do-Not-Track respect.
ControlCustom categories, auto-blocking, and a cookie registry.
EvidenceA consent log and insights on accept and reject rates.
Consent insights in PulsePanda: total decisions, accepted and rejected counts, the accept rate, and a timestamped log of each decision

Our own footprint

What PulsePanda itself stores

The PulsePanda snippet does not set cookies. Once a visitor has consented it keeps three keys in localStorage:

  • _sr_vid: the current visit, which ends after 30 minutes without activity.
  • _sr_uid: a random anonymous ID, so returning visits can be connected.
  • _pp_consent: the visitor's choice per category, the policy version and when it was made, so the banner does not reappear on every page.

If a visitor rejects analytics or withdraws it later, capture stops and the visit and anonymous ID keys are deleted. List the three keys in your cookie policy; the dashboard shows them next to the banner settings.

Each decision is also recorded in your workspace with the anonymous ID, the categories chosen, the policy version and a timestamp. Consent insights shows the recent ones with your accept rate, and exports them as CSV when someone asks you to show consent was given.

Existing setups

Already using OneTrust or Cookiebot?

You do not have to replace a consent platform you already run. Leave the PulsePanda banner off, and pass the decision your platform collects to PulsePanda from its consent callback:

<script>
  window.PulsePanda = window.PulsePanda || [];
  // Call from your CMP's consent callback:
  window.PulsePanda.push(['setConsent', true]);   // visitor granted analytics
  // window.PulsePanda.push(['setConsent', false]); // visitor refused or withdrew
</script>

Using the PulsePanda banner instead? Link “Cookie settings” in your footer to window.PulsePanda.push(['showConsentBanner']) so visitors can change their mind at any time, which GDPR requires to be as easy as giving consent.

Honest limits

When a dedicated consent platform is the better fit

PulsePanda's consent manager is built for teams that want consent and analytics in one place. It is not the right tool for every site. Choose a certified consent platform such as Cookiebot or OneTrust if you need any of these:

  • IAB TCF v2.2. PulsePanda does not generate a TCF consent string, which programmatic ad stacks in the EU require.
  • A crawler-based cookie scan. The registry is built from what real visitors' browsers hold, not from a scheduled crawl of every page.
  • One consent across several domains. Choices are stored per site, so a visitor who accepts on one domain is asked again on another.

If all you need is a banner and no analytics, the free cookie consent banner generator gives you a dependency-free one to paste into any site.

FAQ

Questions teams ask before switching

Is PulsePanda a full consent platform?

It includes a configurable consent banner, categories, auto-blocking, and a consent log built into the same workspace as your analytics.

Does it support GDPR and CCPA?

Yes. Choose opt-in (GDPR) or opt-out (CCPA) mode, and optionally respect Do Not Track.

Can I block tracking until consent?

Yes. Auto-block holds non-essential cookies and tags until the visitor accepts.

FAQ

More questions about the cookie consent manager

Does the PulsePanda script set cookies?

No. It stores three localStorage keys after consent (_sr_vid, _sr_uid and _pp_consent) and deletes the tracking ones if a visitor rejects or withdraws.

Does it support Google Consent Mode v2?

Yes. When the PulsePanda banner is your consent tool, each visitor's choice reaches Google tags as a Consent Mode v2 update: Analytics sets analytics_storage; Marketing sets ad_storage, ad_user_data and ad_personalization; Preferences sets functionality_storage and personalization_storage. Set the defaults before Google tags load, with the PulsePanda Google Tag Manager template or your own gtag consent default call. It does not generate an IAB TCF consent string.

Does it support IAB TCF?

No. If you run programmatic advertising that needs a TCF consent string, use a certified consent platform and pass its decision to PulsePanda with setConsent.

How do I ask everyone again after changing my cookie policy?

Increase the policy version in the banner settings. Stored choices made under the old version stop counting, so every visitor sees the banner again.

Can I export proof of consent?

Yes. Consent insights shows recent decisions and exports them as CSV with the timestamp, whether the visitor accepted or rejected, their anonymous ID and the policy version they saw.

Related pages

Explore the rest of the PulsePanda analytics stack

Start understanding your users today

Install once and connect product analytics, replay, heatmaps, funnels, and feedback in minutes.

Start for free