Crossdeck Docs
Pricing 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.

  • configure — initialise with your app ID and public SDK key
  • 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.
Crossdeck.configure(
    appId: "app_ios_acme01",
    publicKey: "cd_pub_live_xxx",
    environment: "production"
)

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

// Behavioural event
Crossdeck.track("Export.used")

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

// isEntitled is sync — no await
if Crossdeck.isEntitled("pro") {
    showProFeatures()
}
import app.cross_deck.Crossdeck

// Auto-tracks app lifecycle + screen views and uncaught exceptions.
Crossdeck.configure(
    context = this,
    appId = "app_android_acme01",
    publicKey = "cd_pub_live_xxx",
    environment = "production"
)

val userId = authRepository.currentUser?.id
if (userId != null) Crossdeck.identify(userId)
Crossdeck.track("Export.used")

// Manually report a caught exception
try { processCheckout() }
catch (e: Exception) { Crossdeck.captureError(e) }

if (Crossdeck.isEntitled("pro")) {
    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({
  publicKey: "cd_pub_live_xxx",
})

// 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.

Generate exact install prompts for the AI coding tools your team already uses. Each prompt includes your app ID, public SDK key, and a typed task list.

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.