Crossdeck Docs
Dashboard
Crossdeck Docs

One SDK. Subscriptions, analytics, and errors.

Install the SDK once. Verify revenue across Apple, Google Play, and Stripe. Capture behavioural events, sessions, and runtime errors — all attached to the same customer record. Setup is layered, evidence-based, and observable end-to-end.

/
Quickstart

Three paths to your first verified signal.

Pick the surface you're shipping. Each guide takes about ten minutes and ends with a verified signal in the Crossdeck dashboard — covering all three pillars: subscriptions, analytics, and errors.

Browse by area

Start with the part you're implementing.

Get a feel

One SDK. All three pillars.

Configure once. Identify users. Track behaviour. Capture errors. Ask Crossdeck for entitlement state. Same shape on iOS, Android, web — and the server when v2.0 ships.

The six primitives

Crossdeck SDKs expose the same lifecycle in platform-native syntax. Learn it once, recognise it everywhere.

  • init (Web) / start (iOS, Android) — initialise with your app ID, public SDK key, and environment
  • identify — link the current user to your auth ID
  • track — send a behavioural event (page view, action, custom)
  • captureError — report an exception with optional context
  • isEntitled — ask for the verified access state
  • syncPurchases — forward purchase evidence for verification
Crossdeck SDK
import Crossdeck

// Auto-tracks app lifecycle + screen views and uncaught errors.
// start() throws on misconfig; degrade rather than crash launch.
let cd = try? Crossdeck.start(options: CrossdeckOptions(
    appId: "app_ios_acme01",
    publicKey: "cd_pub_live_xxx",
    environment: .production
))

if let userId = AuthService.shared.currentUser?.id {
    await cd?.identify(userId)
}

// Behavioural event
cd?.track("checkout_started", properties: ["product": "annual_pro"])

// Manually report a caught error
do { try await processCheckout() }
catch { cd?.captureError(error) }

// isEntitled is sync — microsecond cache read
if cd?.isEntitled("pro") == true {
    showProFeatures()
}
import { Crossdeck } from "@cross-deck/web"

// One init. Subscriptions + analytics + errors all activate together.
// Auto-tracks page.viewed, sessions, and uncaught errors.
Crossdeck.init({
  appId: "app_web_acme01",
  publicKey: "cd_pub_live_xxx",
  environment: "production",
})

// After your auth resolves the signed-in user
if (session?.user?.id) await Crossdeck.identify(session.user.id)

// Behavioural event
Crossdeck.track("checkout_started", { product: "annual_pro" })

// Manually report a caught error
try { await processCheckout() }
catch (err) { Crossdeck.captureError(err) }

// Real-time entitlement check — under 50ms, no await.
if (Crossdeck.isEntitled("pro")) showProFeatures()
Install with AI tools

Built for the AI-assisted development era.

Pick your stack — we generate a phased install prompt with your App ID and publishable key prefilled. Paste into Cursor, Claude Code, Gemini, or any AI tool that takes Markdown. The AI installs one phase at a time, you verify the dashboard gate, then continue. No big-bang failures.

Need help verifying setup or production state?

The Crossdeck team helps developers verify SDK heartbeat, payment-rail credentials, product mappings, entitlement projections, and the sandbox-to-production handover.