Push Notifications Delivered
OneSignal is the market leader in customer engagement, powering mobile push, web push, email, and in-app messages.
Free plan includes unlimited mobile and up to 30,000 web push subscribers.
OneSignal is incredibly helpful with a front-facing user interface that non-devs can easily use, impeccable service, and the consistent system uptime that make delivering pushes reliable.
Everything You’re Looking For
It’s never been easier to connect with customers.
15 Minute Setup
Our users are always shocked at how easy it is to get started.
Real-Time Reporting
View delivery and conversion performance for every message.
Incredible Scalability
Millions of users? No problem. We send out billions of notifications daily.
A/B Testing
Compare message performance and automatically send the best.
Superior Segmentation
Create personalized messages and send them to the right audiences.
Automated Messaging
Set it and forget it. You can trigger notifications based on user behavior.
Intelligent Delivery
Leverage machine learning to send your messages at the optimal time.
Analyze Results Anywhere
Our SDKs are open source and every component is accessible via API.
Built for Developers
Our founders were app developers first. We couldn’t find any great push notification tools so we built OneSignal.
Code in the language you know with any development environment.
All in less than 10 lines of code.
import OneSignal
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
OneSignal.initWithLaunchOptions(launchOptions,
appId: "YOUR_APP_ID",
handleNotificationAction: nil,
settings: [kOSSettingsKeyAutoPrompt: false])
OneSignal.inFocusDisplayType = OSNotificationDisplayType.notification;
OneSignal.promptForPushNotifications(userResponse: { accepted in
print("User accepted notifications: \(accepted)")
})
return true
}
import com.onesignal.OneSignal;
public class YourAppClass extends Application {
@Override
public void onCreate() {
super.onCreate();
OneSignal.startInit(this)
.inFocusDisplaying(OneSignal.OSInFocusDisplayOption.Notification)
.unsubscribeWhenNotificationsAreDisabled(true)
.init();
}
}
<head>
<link rel="manifest" href="/manifest.json">
<script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async></script>
<script>
var OneSignal = window.OneSignal || [];
OneSignal.push(["init", {
appId: "YOUR_APP_ID"
}]);
</script>
</head>
import OneSignal from 'react-native-onesignal';
export default class App extends Component {
constructor(properties) {
super(properties);
OneSignal.init("YOUR_APP_ID");
OneSignal.addEventListener('opened', this.onOpened);
}
componentWillUnmount() {
OneSignal.removeEventListener('opened', this.onOpened);
}
onOpened(openResult) {
console.log('Message: ', openResult.notification.payload.body);
console.log('openResult: ', openResult);
}
}
using System.Collections.Generic;
void Start() {
OneSignal.StartInit("YOUR_APP_ID")
.HandleNotificationOpened(HandleNotificationOpened)
.EndInit();
OneSignal.inFocusDisplayType = OneSignal.OSInFocusDisplayOption.Notification;
}
private static void HandleNotificationOpened(OSNotificationOpenedResult result) {
// use notification opened result here
}
void main() {
OneSignal.shared.init("YOUR_APP_ID", {
OSiOSSettings.autoPrompt: false
});
OneSignal.shared.setInFocusDisplayType(OSNotificationDisplayType.notification);
OneSignal.shared.promptUserForPushNotificationPermission();
}
Code in any language. We provide native support for every development environment.