TILLPULSE · GETTING STARTED

Your first crash, captured.

GA

The fastest path to a working install. Sign up, install the SDK, see events stream in. The whole thing should take under five minutes.

01Workspace

Create a workspace

Go to /auth/signup, choose an organisation slug (this becomes part of your URL — tilldev.dev/<slug>/...), set a password, and verify your email. You become the owner of the workspace.

Onboarding launches automatically — a five-step checklist that walks you through creating a project, installing an SDK, capturing your first event, and inviting your team.

02Project

Create a project

A project corresponds to a single mobile app build. Pick a platform (React Native, Flutter, iOS, Android, or web) and a data region:

  • af-south-1 — Africa (Johannesburg)
  • eu-central-1 — Europe (Frankfurt)
  • us-east-1 — North America (Virginia)

TillPulse stores events in the region you pin. Once set, you cannot change a project's region — events written to af-south-1 stay there.

03DSN

Copy the DSN

On the project's settings page you'll see a DSN that looks like:

text
https://4f8a...e2c1@ingest.tilldev.dev/2c8f1d3a-b6e4-4f12-9a3d-14e5b9d8c2f1

The DSN is split into a public key (the part before @) and a project ID (the path). You can rotate the key at any time — old events with the old key are rejected within five minutes.

04Install

Install an SDK

Pick the platform you ship on:

React Native — minimum viable install

bash
npm install @tillstack/react-native @react-native-async-storage/async-storage
cd ios && pod install
App.tsx
import TillPulse from '@tillstack/react-native'

await TillPulse.init({
  dsn: 'https://<key>@ingest.tilldev.dev/<id>',
  release: '1.4.0',
  environment: 'production',
})

Flutter — minimum viable install

pubspec.yaml
dependencies:
  tillpulse_flutter: ^0.1.0
dart
Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await TillPulse.init(
    options: TillPulseOptions(
      dsn: 'https://<key>@ingest.tilldev.dev/<id>',
      release: '1.4.0',
      environment: 'production',
    ),
    appRunner: () => runApp(const MyApp()),
  );
}
05Test event

Trigger a test event

After init, throw an exception or call captureMessage to confirm events are flowing:

ts
TillPulse.captureMessage('Hello from getting-started', 'info')
// or
throw new Error('Test crash from getting-started')

Open the dashboard. Within ~10 seconds the Onboarding wizard's Wait for first event step flips to ✓ and you'll see the event under the project's Issues tab.

06Identify

Identify users (optional but recommended)

ts
TillPulse.setUser({
  id: hashedUserId,            // NEVER raw PII
  segment: 'pro',
  subscription: 'paid',
})
TillPulse.setTag('region', 'ng')
TillPulse.setTag('network_type', '3g')

TillPulse never accepts a raw email or phone as a user identifier. Hash it client-side first (SHA-256 is fine — we only use it for de-duplication).

07Alerts

Configure your first alert

Go to Alerts → Rules → New rule. The most useful starter alert is issue_spike — fires when an issue's event rate breaches a threshold:

json
{
  "trigger_type": "issue_spike",
  "conditions": { "threshold": 50, "window_minutes": 15, "severity": "high" },
  "actions": [{ "type": "slack", "webhook_url": "https://hooks.slack.com/..." }]
}

See the full list of trigger types and delivery channels in Alerts & integrations.

08Team

Invite your team

Onboarding step 5 sends bulk invites by email. Roles available:

  • owner — full access, billing, deletion
  • admin — settings, integrations, API keys
  • developer — issues, releases, source maps
  • viewer — read-only
09Done

You’re done

That's the whole onboarding loop. From here, the most-asked next steps are: