How it works
About fifteen minutes from zero to the first notification on a real device.
Your APNs key for iOS and your Firebase service account for Android. OtaKit tests them with Apple and Google right away.
Push → Setup
Add the official Capacitor plugin and a small helper that sends the device token to OtaKit, with your user ID and topics.
npm i @otakit/push
Pick an audience, check the device count, and send. Delivery counts and errors show up per campaign.
otakit push send
The code
import { PushNotifications } from '@capacitor/push-notifications';
import { OtaKitPush } from '@otakit/push';
OtaKitPush.init({ appId: 'YOUR_OTAKIT_APP_ID' });
PushNotifications.addListener('registration', ({ value }) => {
OtaKitPush.syncToken(value, { userId: user?.id ?? null, topics: ['news'] });
});
const { receive } = await PushNotifications.requestPermissions();
if (receive === 'granted') await PushNotifications.register();otakit push send \ --title "Your order shipped" \ --body "Track it in the app" \ --url /orders --user user_42
Or use the dashboard, the REST API from your backend, or ask your AI agent through the OtaKit CLI.
What you get
Send to everyone, one platform, topics your users subscribe to, your own user IDs, or the OTA channel a device is on.
Attach a path like /orders/42. Your app opens the right screen when the user taps the notification.
Tokens Apple or Google report as invalid are removed automatically, so your device count stays honest.
You see the exact audience before sending, idempotency keys stop double sends, and every send is in the audit log.
Delivery runs through your own Apple and Firebase accounts. Keys are encrypted at rest and removable at any time.
Send from the command line, from CI, or let an AI agent draft the message and ask you before it goes out.
10,000 devices
100,000 / month notifications
50,000 devices
1,000,000 / month notifications
250,000 devices
5,000,000 / month notifications
FAQ