> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Developers

> Set up the OneSignal Mobile and Web SDKs, find your App ID and API keys, identify Users, and test your integration before going live.

Install the OneSignal SDK and get your first integration working. Follow the sections in order for a first-time setup, or jump to the area you need.

1. [**Get started**](#get-started): find your App ID and API keys
2. [**Install SDK**](#install-sdk): install the Mobile or Web SDK
3. [**Users and identity**](#users-and-identity): identify Users, manage Subscriptions, and secure access
4. [**Test your integration**](#test-your-integration): verify delivery before going live
5. [**Troubleshooting**](#troubleshooting): debug delivery issues

***

## Get started

If your team already has a OneSignal account, ask an admin to [invite you](./manage-team-members) to the Organization. Otherwise, [create an account](https://onesignal.com) to get started.

Your OneSignal App holds user and message data, including the App ID and API keys you need for SDK setup. Learn how [Apps, Organizations, and accounts](./apps-organizations) relate if you manage multiple projects or environments.

<Card title="Keys and IDs" icon="key" href="./keys-and-ids">
  Find your App ID, REST API key, and Organization ID for authentication.
</Card>

***

## Install SDK

Install the OneSignal SDK for your platform.

<Columns cols={2}>
  <Card title="Mobile SDK setup" icon="mobile" href="./mobile-sdk-setup">
    SDK setup for iOS, Android, Huawei, and Amazon. Enables push notifications, in-app messages, and Live Activities.
  </Card>

  <Card title="Web SDK setup" icon="globe" href="./web-sdk-setup">
    Web SDK installation and browser push notification setup.
  </Card>
</Columns>

The following platforms are also supported via our REST API:

* [Windows](./windows-app-setup)
* [macOS](./macos-app-setup) (Mac Catalyst apps are supported via our iOS SDK)
* [watchOS and Wear OS](./watchos-and-wear-os-support)

***

## Users and identity

OneSignal assigns each person a **OneSignal ID** and tracks their devices, email addresses, and phone numbers as **Subscriptions**. Users are anonymous until you call `login` with an **External ID** to identify them. Identifying Users unifies their Subscriptions across channels and devices.

<Columns cols={2}>
  <Card title="Users" icon="users" href="./users">
    User model, External ID, anonymous vs. identified Users, and login/logout.
  </Card>

  <Card title="Subscriptions" icon="address-book" href="./subscriptions">
    Devices, email addresses, and phone numbers that receive your messages.
  </Card>

  <Card title="Tags" icon="tags" href="./add-user-data-tags">
    Add custom properties to users for personalization and segmentation.
  </Card>

  <Card title="Custom events" icon="bolt" href="./custom-events">
    Track User actions to trigger Journeys or power analytics.
  </Card>
</Columns>

***

## Test your integration

Verify delivery, rendering, and deep links with [Test Users](./test-users) before sending to your full audience.

<Card title="Test Users" icon="vial" href="./test-users">
  Find and configure test users for push, email, and SMS.
</Card>

***

## Troubleshooting

Start with a [debug log](./capturing-a-debug-log), then use the platform guide that matches your integration.

<Columns cols={2}>
  <Card title="Mobile troubleshooting" icon="bug" href="./mobile-troubleshooting">
    Resolve common push delivery, APNs, and in-app messaging issues.
  </Card>

  <Card title="Web SDK troubleshooting" icon="globe" href="./troubleshooting-web-push">
    Fix service worker errors, origin mismatches, and notifications that do not show.
  </Card>

  <Card title="Debug logs" icon="terminal" href="./capturing-a-debug-log">
    Enable verbose logging, reproduce the issue, and share logs with support.
  </Card>

  <Card title="Reset web push permissions" icon="rotate" href="./clearing-cache-and-resetting-push-permissions">
    Clear browser cache, service workers, and notification permissions for a clean test.
  </Card>
</Columns>

***

## After setup

Explore common use cases and look up SDK methods or REST API endpoints as you build.

<Columns cols={3}>
  <Card title="Tutorials & use cases" icon="graduation-cap" href="./tutorials">
    Browse implementation guides for abandoned carts, onboarding flows, re-engagement campaigns, and more.
  </Card>

  <Card title="Tags" icon="tags" href="./add-user-data-tags">
    Add custom properties to users for personalization and segmentation.
  </Card>

  <Card title="Custom events" icon="bolt" href="./custom-events">
    Track User actions to trigger Journeys or power analytics.
  </Card>

  <Card title="Mobile SDK reference" icon="mobile" href="./mobile-sdk-reference">
    Methods, classes, and event hooks for iOS, Android, and cross-platform SDKs.
  </Card>

  <Card title="Web SDK reference" icon="globe" href="./web-sdk-reference">
    Initialization, User management, Subscription methods, and custom triggers.
  </Card>

  <Card title="Server SDK reference" icon="server" href="./server-sdk-reference">
    Install and configure server SDKs for Node.js, Python, Java, Go, PHP, Ruby, C#, and Rust.
  </Card>

  <Card title="REST API overview" icon="code" href="/reference/rest-api-overview">
    Endpoints, authentication, rate limits, and request/response formats.
  </Card>
</Columns>

***

## FAQ

### How do I identify Users across devices?

Call `OneSignal.login("your_external_id")` on each device after the user signs in. OneSignal merges all Subscriptions with the same External ID under a single User. See [Users](./users#external-id) for implementation details.

### Do I need to set up identity verification?

Identity verification is optional but strongly recommended for production apps. Without it, any client can call `login` with an arbitrary External ID. Enabling [identity verification](./identity-verification) requires updating the OneSignal SDK to use a server-generated JWT, preventing impersonation.

### Can I use OneSignal without the Mobile or Web SDK?

Yes. You can send email and SMS, manage Users, and trigger messages with the [REST API](/reference/rest-api-overview) or a [Server SDK](./server-sdk-reference). The Mobile and Web SDKs are required for push notifications, in-app messages, and client-side User identification.

### How do I send messages from my server?

Use the [REST API](/reference/rest-api-overview) or a [Server SDK](./server-sdk-reference). Authenticate with your REST API key from [Keys & IDs](./keys-and-ids). Never embed the REST API key in a mobile or web client.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.