# Install GeoEngage on any website

> Add the GeoEngage tag to any site that serves HTML: Vue, Angular, SvelteKit, Astro, Laravel, Rails, Django or static pages.

If your site serves HTML, GeoEngage works on it. Paste the tag once into the layout or template your pages share, inside `<head>` and above your content:

```html
<!-- GeoEngage — place in <head>, above your content.
     Do not add async/defer: the widget must run before the page paints. -->
<script
  src="https://cdn.geoengage.app/ge.js"
  data-api-key="YOUR_API_KEY"
  data-require-consent="false"
></script>
```

## Where `<head>` lives

| Built with | Put the tag in |
| --- | --- |
| Vue, Svelte, Solid or Preact on Vite | `index.html` in the project root |
| Angular | `src/index.html` |
| SvelteKit | `src/app.html` |
| Nuxt | `nuxt.config.ts`, see [Nuxt](#nuxt) |
| Astro | Your shared layout, see [Astro](#astro) |
| Laravel | Your main Blade layout, often `resources/views/layouts/app.blade.php` |
| Ruby on Rails | `app/views/layouts/application.html.erb` |
| Django | Your base template, often `templates/base.html` |
| Hand-written HTML | Every page's `<head>`, or the include your pages share |

## Nuxt

Nuxt builds `<head>` from its config. Add the tag to `app.head` in `nuxt.config.ts`:

```ts title="nuxt.config.ts"
export default defineNuxtConfig({
  app: {
    head: {
      script: [
        {
          src: 'https://cdn.geoengage.app/ge.js',
          'data-api-key': 'YOUR_API_KEY',
          'data-require-consent': 'false',
        },
      ],
    },
  },
});
```

## Astro

Add the tag to the `<head>` of your shared layout. `is:inline` tells Astro to leave it exactly as written instead of bundling it:

```html title="src/layouts/Layout.astro"
<script
  is:inline
  src="https://cdn.geoengage.app/ge.js"
  data-api-key="YOUR_API_KEY"
  data-require-consent="false"
></script>
```

## Single-page apps

If your site changes pages without a full reload, as Vue Router, Angular Router and SvelteKit do, the widget follows along by itself. See [Single-page apps](https://geoengage.app/docs/widget/single-page-apps).

## Check it's working

Open a page in a private window, then follow [the checks](https://geoengage.app/docs/install#check-its-working).

---

Source: https://geoengage.app/docs/install/html
