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.
<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>// 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
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.
Step 2
Identify signed-in users
Pass an ID, plan, role, tags or traits, so answers fit each user and rules can use them.
Step 3
Verify them on your server
Sign each user ID with HMAC-SHA256, so nobody can pose as another user in the widget.
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.
The docs
The package is on npm, and everything here is covered in full in the help center, with code for each framework.
- @skavelo/sdk on npmThe package, with React built in
- Install the widgetEvery framework, step by step
- Identify signed-in usersThe fields, and what each is used for
- Identity verificationSigning user IDs in Node.js or Python
- SDK referenceEvery init option and method
- ReactThe provider, hooks and components
- Widget eventsEvery event and its fields
- API keys and deploysRe-learn from your pipeline
- What the widget sendsAnd what it never reads
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.
Try it on your own product first. When you’re ready, it’s one snippet.
Start free