Embedded AI analytics for SaaS

Ship AI analytics this week.

An AI feature on your customers' data, live in your product this week. No eng sprint, no AI team.

app.yourcompany.com/analytics

YourApp

Overview

Customers

Analytics

Billing

Settings

Analytics

MRR

$2.4M

+12.3%

Active users

8,421

+5.8%

Churn

2.1%

-0.4%

Revenue over time

By plan

Why did MRR drop last month?

Churn by plan

Ask about your data...

Ask

A Papercrane dashboard inside a SaaS product's own UI. Your domain, your logo, your chrome.

Running in production

DataViss

DataViss ships embedded Papercrane dashboards to their customers, branded as part of their platform.

AI is on every roadmap. Dev teams are full.

Your board wants an AI story. Your customers are asking what's coming. Your engineers are six sprints deep on the rest of the product.

Everyone's shipping AI this year

Your board wants the story. Your prospects ask about it. Your customers want features. It's not a mandate you can keep slipping.

Analytics is the obvious first win

AI on your customers' data is the feature they already want and the one your team most often pushes down the queue. An eng sprint most teams can't spare.

Generic embeds feel generic

A Metabase iframe looks like a Metabase iframe. A generic chatbot looks like a chatbot. Neither is the product you're building.

Three steps to embed.

1

Create an embed integration.

In your Papercrane admin, pick the environment to embed and set your allowed domains. You get a clientId and a secret.

2

Generate a one-time bootstrap token from your backend.

Your server calls the embed sessions API with the secret. Pass your customer's ID so every request is audited. You get back a one time URL that expires in 60 seconds.

const response = await fetch(
  "https://embed.papercrane.ai/api/embed/sessions",
  {
    method: "POST",
    headers: {
      "Authorization": "Bearer embs_your_secret",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      external_user_id: customer.id,
      display_name: customer.name
    })
  }
)
const { embed_url } = await response.json()

3

Drop the URL into an iframe.

The embed loads from embed.papercrane.ai, themed with your CSS, logo, and color palette. No Papercrane chrome.

<iframe
  src={embed_url}
  style={{ width: "100%", height: "100vh", border: "none" }}
/>

An AI feature worth shipping.

An AI that speaks your customers' data.

The agent reads the schema, knows the metrics, and answers in context. Not a generic chatbot bolted onto an iframe.

Looks like you built it.

Per customer CSS theming with full control. Your colors, fonts, logo, spacing. Not just a color override.

Isolated per customer.

Each customer gets their own embed integration, environment, and data source credentials. No shared dashboards, no cross tenant access.

Secure by design.

60 second bootstrap tokens, locked to your approved domains, on a separate subdomain isolated from the main app. Audit logs carry your external_user_id. SOC 2 in progress.

See full security details →

When Papercrane embed fits, and when it doesn't.

Fits: SaaS products shipping dashboards to paying customers, branded as part of the host product, built and iterated in chat.

Doesn't fit: one shared dashboard that many customers look at with different slices of the data inside it. Papercrane gives each customer their own isolated environment instead. Also not a fit if you need dashboards generated purely programmatically without the AI.

Your AI feature, live this week.

Book a demo and see it running inside a real host product.

Flat pricing, not per viewer.

See pricing →