Skip to content
Push

Push notifications from your server, to every device a user has.

Register tokens under your own user ids and send to a user, a list, a topic or everyone, on Android, iOS and the web. Schedule sends, cap marketing pushes per user, and get a signed webhook for every result.

  • 1,000 devices free
  • Rs 499 a month for 5,000 devices
  • Unlimited sends within fair use
Users and devices

Send to a user, not a token.

Your server adds each token under the user id you already use. SignOps keeps the list: which phone, which browser, when it was last seen.

  • Your own user ids. You never store an id from SignOps.
  • Up to 20 devices a user, across Android, iOS and the web.
  • Tokens Google or Apple reject are removed, and your webhook hears about it.
  • Import existing tokens from OneSignal or Firebase by CSV or the API.
One call

Android, iOS and the web in one request.

Name the user. SignOps fans the message out to every device they have, in the format each platform expects, and retries what Google or Apple asks it to.

  • Libraries for Node, PHP and Python, and plain REST for everything else.
  • Images, deep links and up to two buttons.
  • Silent data pushes to refresh your app in the background.
send.ts
import { SignOps } from "@signops/node";

const signops = new SignOps(process.env.SIGNOPS_KEY);

// Every device of this user: Android, iOS, web.
await signops.push.send({
  user_id: "usr_8f21c4",
  title: "Your order is out for delivery",
  body: "Ravi is 10 minutes away with 6 items.",
  link: "kirana://orders/88213",
});
Topics, schedules and the composer

Offers on time, without a developer.

Users join topics like offers or pune. Your team writes a push in the dashboard, picks a topic, sets a time and checks the preview on all three platforms.

  • Schedule up to 30 days ahead, cancel any time before it goes.
  • Stored templates with fields like {{name}} filled per user.
  • A daily cap on marketing pushes per user, set by you.
  • Send a test to your own phone before it reaches everyone.
Your keys

Your Firebase project. Your Apple team.

Upload your Firebase service account and your Apple key once. SignOps makes the web push keys for you. Nothing about your project moves.

  • Keys encrypted per app and never shown again after upload.
  • iOS through FCM, or straight to APNs with your .p8 key.
  • Google's limit of 6 lakh messages a minute stays your project's own.
Results

See what every push did.

Each message shows what Google and Apple said about it, device by device. Every result also reaches your server as a signed webhook.

  • Delivery logs for 7 days, 30 days on Pro.
  • Opens and clicks when your app reports them with the SDK.
  • Failed tokens counted and removed, with the reason.
Scheduled and marketing sends

The same call, a send time and a topic.

offer.ts
// A topic, an image and a send time.
await signops.push.send({
  topic: "offers",
  title: "Weekend offer: 20% off fruit",
  body: "Mangoes, bananas and apples until Sunday night.",
  image: "https://cdn.kiranaexpress.in/offers/fruit.jpg",
  send_at: "2026-10-24T18:00:00+05:30",
});

Topics

Subscribe users from your server. A user can be in as many topics as you like.

Send times

Any ISO time with a zone, like 6:00 pm IST. Cancel by id before it goes.

Caps

Marketing pushes over a user's daily cap are skipped and logged.

Templates

Write once in the dashboard, send by template id with fields.

The numbers

Details and limits

What one app on SignOps Push can do, in numbers.

Platforms
Android through FCM. iOS through FCM, or APNs with your .p8 key. Web push on Chrome, Edge, Firefox and Safari.
Who you can send to
One user_id, a list of up to 1,000 user ids, a topic, or every device of the app.
Devices per user
Up to 20. A new one past that replaces the device seen longest ago.
Scheduling
send_at up to 30 days ahead, in any time zone. Cancel any time before it goes.
Message
Title, body, data, image, deep link and up to two buttons, within the 4 KB Google and Apple allow.
Frequency caps
Optional, per app: the most marketing pushes one user gets in a day.
Pacing
Large sends are paced per app at up to 5,000 pushes a second.
Fair use
An average of 10 pushes per device per day. Above it, sends are slowed instead of charged.
Logs
Every message and its result for 7 days, 30 days on Pro.
Price
1,000 devices free. Rs 499 a month for up to 5,000, then Rs 0.10 a device, and Rs 0.05 above 10 lakh. A device counts in a month when it was sent at least one push that month.

Push questions

More questions? Email us and the answer goes on this page.

hello@signops.dev
Why do I upload my Firebase and Apple keys?

Device tokens belong to your Firebase project and your Apple team, so only your keys can send to them. You upload them once in Settings. SignOps encrypts them and never shows them again, and Google's sending limit stays your project's own.

Does my app need a SignOps SDK to get pushes?

No. Your app gets its token from the standard Firebase or Apple SDK, and your server registers it with SignOps. The SignOps SDK is needed only for Approve, and optionally to report when a push is opened.

What about Xiaomi, Oppo, Vivo and Realme phones?

These phones stop apps in the background to save battery, which can drop pushes on any provider. SignOps sends with high priority where Android allows it, and the docs list the settings and the in-app prompt that keep your app able to receive.

How do I move from OneSignal?

Export your subscribers with their external user ids, import them to SignOps by CSV or the API, and switch your server's send calls. Users keep getting pushes without an app update. For 5,000 users OneSignal is about Rs 5,900 a month; SignOps is Rs 499.

Can my marketing team send without a developer?

Yes. The composer in the dashboard writes a push, picks a topic or everyone, sets a time, shows the preview on Android, iOS and the web, and sends a test to your own phone first.

Your first push is free.

Free for 1,000 push devices, 100 approvals a day, 10,000 passkey sign-ins a month and 500 email codes to try. No card until you pass a free amount.