For developers

One snippet in, and your team runs it from there

Add the snippet once, in the layout every page shares. After that, product and support teams teach Skavelo, write its suggestions and set its rules in the dashboard, without another release. Go further when you want to: identify users, listen for events or re-learn after each deploy.

Start freeTry it on your own product before you add any code.
Any site: one script tag, before </body>
<script src="https://cdn.skavelo.com/skavelo.js" defer></script>
<script>
  window.addEventListener('DOMContentLoaded', () => {
    Skavelo.init({ agentId: 'YOUR_AGENT_ID' });
    Skavelo.identify({ id: user.id, plan: user.plan });
  });
</script>
React and Next.js: the provider and hooks
// npm install @skavelo/sdk
import { SkaveloProvider } from '@skavelo/sdk/react';

<SkaveloProvider agentId="YOUR_AGENT_ID" user={user}>
  <App />
</SkaveloProvider>

// Anywhere inside
const { ask } = useSkavelo();

From install to running

  1. Step 1

    Add the snippet

    A script tag, a Google Tag Manager tag, or the npm package for React, Next.js, Vue, Nuxt, Svelte or Angular.

  2. Step 2

    Identify signed-in users

    Pass an ID, plan, role, tags or traits, so answers fit each user and rules can use them.

  3. Step 3

    Verify them on your server

    Sign each user ID with HMAC-SHA256, so nobody can pose as another user in the widget.

  4. Step 4

    Re-learn after each deploy

    One request from your pipeline, with an API key. Skavelo rereads the pages that changed.

What you get to work with

Kept apart from your app

The widget renders in its own Shadow DOM, so your CSS can’t break it and it can’t touch yours. It does nothing during server rendering.

Loads without holding up your page

The script tag uses defer, so your page appears without waiting for the widget.

A small API

identify, open, close, ask, on, off and destroy. Call ask() from your own help button to open Skavelo with a question.

Events for your analytics

Opens, answers, walkthrough steps, completions and drop-offs, approved actions, lookups, stuck offers and handoffs, each with its fields.

React built in

SkaveloProvider, useSkavelo, useSkaveloEvent, SkaveloLauncher and SkaveloIdentify, safe with strict mode and server rendering.

Only on your sites

The widget runs only on sites you allow, with wildcards for subdomains and a one-click switch for localhost.

Several agents, one snippet

Pass a workspace ID instead of an agent ID, and each page shows the agent whose targeting matches it.

Your call on what it sees

Mark anything with data-sk-sensitive and the widget never reads it. Pass diagnostics: { network: false } to stop it noting failed requests.

Lookups and actions that use your auth

Skills call your API from the user’s browser, with headers you supply, such as a CSRF or bearer token.

Questions

Set it up with Install the widget in the help center.

Does the widget need an API key?
No. The widget only needs your agent ID. API keys are for your servers and deploy pipeline, such as re-learning after a deploy.
Can we send Skavelo activity to our own analytics?
Yes. Listen with on(), or useSkaveloEvent in React, and pass events like walkthrough_complete or handoff to the analytics tool you already use.
Can someone who isn’t a developer install it?
Yes, with Google Tag Manager and no code changes. Or click Email the install steps in the dashboard, and your developer gets the snippet for every platform.
Does it work in native mobile apps?
No. It works in web apps, including in mobile browsers, but not inside native iOS or Android apps.