Vagibond

Follow Vagibond

Stay connected with us on social media for updates on new ventures.

Thanks for subscribing!
Terminal

Terminal Cookie Widget

An embeddable cookie consent banner with engaging, human-centered messaging. Users who feel acknowledged are more likely to accept. Our research shows 94% accept rates.

🍪
The Cookie Widget Advantage
Every banner shows a different message from our curated library. Users actually read the content, which means they're paying attention when they click "Accept All." That's informed consent. Technically.

What you can build

See the cookie widget in action. Try different themes and messages.

Cookie Widget Demo

Quickstart

Add one script tag to your site. That's it.

html
<script src="https://terminal.vagibond.com/terminal-core.js"
        data-site="your-company">
</script>

The widget auto-shows if no consent cookie exists. It displays a randomized message from our library, and when accepted, sets a cookie and links to your Terminal-generated cookie policy at /cookie/your-company/.

Full Example

html
<script src="https://terminal.vagibond.com/terminal-core.js"
        data-site="acme-corp"
        data-theme="dark"
        data-position="bottom-left"
        data-message-category="absurdist">
</script>

Auto-Initialization

The widget reads configuration from data attributes on the script tag:

AttributeTypeDescription
data-site string Company slug - links to /cookie/{slug}/
data-company-name string Display name (optional, inferred from slug)
data-position string bottom-left (default) | bottom-right | bottom-full | center-modal
data-theme string light | dark | gdpr-blue | cookie-monster | dystopian
data-delay number Milliseconds before showing (default: 500)
data-always-show boolean Show even if consent cookie exists (for demos)
data-message-category string all | honest | existential | absurdist | passive_aggressive | technical | self_aware
data-accept-text string Custom accept button text
data-show-settings boolean Show settings button (default: true)
data-show-powered-by boolean Show "Powered by Terminal" (default: true)

JavaScript API

After including terminal-core.js, you have access to Terminal.Cookie:

JS Terminal.Cookie.show(options)

Manually show the cookie consent banner. Useful when you want to re-prompt users who've been on your site too long without consenting.

javascript
// Show after 30 seconds of user hesitation
setTimeout(() => {
  if (!Terminal.Cookie.hasConsent()) {
    Terminal.Cookie.show({
      site: 'acme-corp',
      theme: 'dystopian',
      position: 'center-modal',
      messageCategory: 'passive_aggressive'
    });
  }
}, 30000);
JS Terminal.Cookie.hide()

Hide the banner without setting consent. The user didn't say yes. They didn't say no. They said nothing. Just like certain people do when asked direct questions about their whereabouts.

JS Terminal.Cookie.accept()

Accept cookies programmatically. Useful for pre-checked consent flows, single sign-on integrations, or bypassing user agency entirely.

JS Terminal.Cookie.clearConsent()

Remove the consent cookie. Banner will show again on next page load. Useful for testing, compliance audits, or giving users the illusion of control.

JS Terminal.Cookie.on(event, callback)

Subscribe to widget events.

EventFires When
shownBanner becomes visible
acceptedUser clicks accept
dismissedBanner hidden (any reason)
settingsUser clicks settings/policy link
javascript
Terminal.Cookie.on('accepted', () => {
  gtag('consent', 'update', { analytics_storage: 'granted' });
  fbq('consent', 'grant');
  startFingerprinting();
});

Terminal.Cookie.on('dismissed', () => {
  // They closed it without choosing. Track that too.
  analytics.track('consent_avoided');
});
JS Terminal.Cookie.setMessages(messages)

Override the default message pool with your own. Messages rotate randomly on each page load, keeping the consent experience fresh and unpredictable.

javascript
Terminal.Cookie.setMessages([
  "We use cookies to remember you. Whether you want to be remembered is irrelevant.",
  "By continuing to exist on this website, you agree to our cookie policy.",
  "These cookies contain no nuts, dairy, or meaningful user choice.",
  "Our cookies track you across the web. It's called personalization."
]);

Built-in Themes

ThemeColorsBest For
light White bg, Terminal orange accent Companies that want to seem trustworthy
dark Dark bg, orange accent Apps where users are already in the dark about data collection
gdpr-blue EU blue (#003399), yellow stars Signaling regulatory compliance while testing its limits
cookie-monster Blue, cookie brown accent Making data harvesting feel whimsical
dystopian Black, Matrix green, red accents When you want users to know exactly what's happening

Message Categories

The widget randomly selects from 28+ messages across these categories:

CategoryCountExample
honest 6 "We use cookies because the EU said we have to tell you."
existential 5 "In the grand scheme of the universe, what is a cookie really?"
absurdist 6 "Fun fact: No one has ever clicked 'Customize Settings'."
passive_aggressive 4 "Oh look, another cookie popup. How original."
technical 4 "Some of our cookies are third-party. We don't know them personally."
self_aware 3 "This is the 47th cookie banner you've seen today."

Position Variants

PositionDescriptionAnnoyance Level
bottom-left Fixed to bottom-left corner (default) Polite. Easily ignored.
bottom-right Fixed to bottom-right corner Slightly more noticeable.
bottom-full Full-width bar spanning entire bottom Assertive. Takes up valuable viewport.
center-modal Centered modal with darkened overlay Maximum. User cannot proceed without engaging.

Easter Eggs

🥚
Secret Features
Konami Code: Enter ↑↑↓↓←→←→BA while banner is visible to unlock Cookie Monster mode.
Legal Notice
This cookie consent widget sets a consent cookie and provides GDPR-compliant banner functionality. Whether clicking "Accept" after reading "These cookies won't fill the void" constitutes informed consent is a matter for your legal team to determine. We make the tools. What you build with them is between you and the European Court of Justice.
🍪
Ready to collect consent?
Pair with the Terminal API for cookie policies that match your banner's energy. One script tag. 28+ messages. Plausible deniability included.