# Overview

> The Entase JavaScript client opens the checkout from your own website, either as an inline panel or a pop-up window, without sending the visitor to another page.

The Entase JavaScript client is a small library you load from our CDN. It gives your website one job it cannot do on its own: **open the Entase checkout in place**, so a visitor buys a ticket without leaving the page they are on.

It handles the panel or pop-up window, the backdrop, page scroll locking, the consent step, locale, and tracking parameters. Your code decides *when* to open the checkout and *for which event*.

## What it is not

The client does not render event listings, dates, prices or availability. If you want a ready-made widget showing your program, use the embed codes instead — those are copy-and-paste and need no development work. See [Embedding events on your website](/organizers/sharing-and-embedding/embedding-events-on-your-website.md).

The two are not alternatives, though. The embed widget loads this same client underneath to open its checkout, which is why you can pass client options through the embed configuration. See [Advanced embed options](/developers/js-client/embed-advanced-options.md).

## When to use it

Use the client directly when you have your own event pages and want your own "Buy tickets" button to open the Entase checkout:

```html
<button id="buy">Buy tickets</button>

<script src="https://js.entase.com/client.js"></script>
<script>
  const entase = new Entase({ pk: 'YOUR_PUBLISHABLE_KEY' });
  document.getElementById('buy').addEventListener('click', () => {
    entase.book('EVENT_ID');
  });
</script>
```

That is the whole integration. Everything else in this section is refinement: which options exist, how the checkout decides between a panel and a pop-up, and which events you can listen for.

## Two checkout modes

The checkout opens in one of two ways:

- **Pane** — an inline panel inside your page, sliding in from the right on desktop and from the bottom on mobile. The visitor never leaves your site.
- **Popup** — a separate browser window.

Pane mode is the better experience, but it is only available to domains you have added as trusted origins in your Entase settings. The client detects which one it is allowed to use and falls back to a pop-up when inline checkout is not permitted. This is the single most important behaviour to understand before integrating — see [Checkout modes](/developers/js-client/checkout-modes.md).

## Requirements

- A page served over **HTTPS**. On plain HTTP the client always uses a pop-up.
- Your domain added to **trusted origins** in Settings → Integrations, if you want inline checkout. See [Integrations and checkout customization](/organizers/settings/integrations-and-checkout-customization.md).
- No build step, bundler or package manager. The library is a single script tag.

## Where to go next

- [Installing the client](/developers/js-client/installing-the-client.md) — loading the script and creating an instance.
- [Constructor options](/developers/js-client/constructor-options.md) — every option and its default.
- [Opening the checkout](/developers/js-client/opening-the-checkout.md) — the `book()` method and per-call overrides.
- [Events](/developers/js-client/events.md) — reacting to the checkout opening, closing and completing.
