appkit Go to the dashboard
Integration guide

Install without mistakes — you, or your AI agent.

Everything AppKit does, where each piece appears, and a ready-made prompt to paste into your coding assistant. Whatever you don't know how to do, the agent does for you.

01Prompt for your AI agent

Paste the text below into your coding assistant, swap MINHA_CHAVE_PK_LIVE for the key from your dashboard, and it does the whole integration — installation, empty states and step completion — without breaking your product.

Claude Code Antigravity OpenAI / Codex Cursor, Copilot…
prompt-appkit.txt
You are my coding assistant. Integrate AppKit (appkit.com.br) into my web product WITHOUT breaking anything. AppKit injects an onboarding checklist, empty states and announcements, controlled from an external dashboard. Do exactly this:

1) INSTALLATION
- If the project uses a bundler (React/Vue/Next/Svelte/etc.): install the package
  @tecaless/appkit-sdk
  and, at the entry point, AFTER the user logs in (once I already have their id), call:
  import { init } from '@tecaless/appkit-sdk'
  init({ apiKey: 'MINHA_CHAVE_PK_LIVE', userId:  })
- If it is a static / no-code site: add BEFORE :
  
- The userId/data-user MUST be the stable identifier of the logged-in user. AppKit hashes it on the server — NEVER send email or name. If there is no logged-in user, leave userId out.

2) EMPTY STATES
For each screen that starts out with no data and where I want a call to action (e.g. invoices, contacts, calendar), wrap the current empty state in ONE marked container, keeping the current content inside as a fallback:
  
...the current "no records" content...
Use a short, stable name per screen (e.g. faturas-vazio, contatos-vazio). Do NOT use a build-generated CSS selector. Hand me back the list of names you created. 3) STEP COMPLETION (important for real metrics) For each onboarding step that represents a REAL user ACTION (e.g. "issue first invoice"), call it at the EXACT moment the action truly happens — after saving on the server, not on the button click: window.AppKit && window.AppKit.track('fatura_emitida') Use one event name per action, in snake_case. Hand me back the list of events you created. 4) DO NOT BREAK ANYTHING - Load the SDK asynchronously; it is fail-open (if it goes down, it disappears on its own and does not affect my product). - The pk_live key is public by nature (it can live on the client). Do not expose any secret key. - Do not block rendering while waiting for AppKit. At the end, list: (a) files changed, (b) data-appkit names created, (c) event names created — so I can configure them in the AppKit dashboard.
Once the agent is done, use the data-appkit names and event names it hands back to configure the empty states and step completion in the dashboard.

02Installation

Two ways. If you use a framework, start with npm.

With a bundler (React, Vue, Next, Svelte…) — recommended

terminal
npm i @tecaless/appkit-sdk
app.js — after login
import { init, track } from '@tecaless/appkit-sdk'

init({ apiKey: 'MINHA_CHAVE_PK_LIVE', userId: usuario.id })
// when a real action happens:
track('fatura_emitida')

No-code / static site — one line

before </body>
<script src="https://appkit.com.br/sdk/appkit@3.0.7.js"
        data-key="MINHA_CHAVE_PK_LIVE"
        data-user="ID_DO_USUARIO" async></script>

Your pk_live_… key is in the dashboard, under Installation. It is public by nature (it only allows reading your configuration and sending events).

03Where each piece appears

The three experiences work on any page of your product, within the domain where you installed it. You control everything from the dashboard, with no new deploy.

yoursystem.com/invoices AppKit announcement — at the top, pushes the content down · View as Empty state (data-appkit) a call to action instead of "nothing here" First steps Step completed Next step

Checklist

A floating card in the corner. It shows up on any page and disappears on its own once the user completes everything.

Announcement

A banner at the top that pushes the content down (it does not overlap). It can carry a link. You publish and remove it whenever you want.

Empty state

Where your product says "no records" — without you touching the code (your agent handles it). It becomes a call to action.

04Empty states: you do not need to touch the code

The magic of the empty state is that you declare nothing. Click Copy prompt and your AI agent takes care of the technical part: it points to an element that already exists in your system (via a selector, without touching the HTML) or, if needed, adds a stable marker — AppKit accepts both. After that you just edit the copy from the dashboard, forever, with no deploy.

If the anchor ever disappears, AppKit warns you (an appkit_anchor_missing event) and renders nothing — your screen stays normal.

05How a step gets completed

Three modes, chosen per step in the dashboard. This decides whether your activation funnel measures real action or just clicks.

truth

By event

Your code calls AppKit.track('acao') at the moment of the real action. It cannot be faked — this is what works as a traction metric.

proxy

By route

The user lands on a route (e.g. /faturas/nova). A real signal, but "arriving" is not "doing".

dispensable

Manual

The user clicks the item to check it off. Good for informational steps ("read this"). It is fakeable on purpose.

For your traction analytics to mean anything, the important steps must be by event. If they are manual, you measure "the user clicked complete", not "the user did it".

06Guarantees

07Common mistakes (and how to avoid them)

Widget does not show up

Check the data-key and whether the experience is published (not a draft) in the dashboard.

Empty state does not show up

The data-appkit="…" is missing from the HTML, or the name in the dashboard does not match the one in the code.

Step does not complete on its own

A "by route" rule with an empty route, or "by event" without the track() in your code at the right moment.

User's name showing up

Do not put a name/email in experience titles or in data-user — use a stable id.

Still unsure? contato@appkit.com.br.