Built for developers

Clients register. Servers send.

HoneyNotify keeps secret send credentials on your backend and gives apps a tightly scoped public client key for registration and event reporting.

Integration path

Four clear steps to a measurable send.

Create an appAdd APNs, FCM, and Web Push credentials in the dashboard.
Register clientsUse a ps_public_ key to register device tokens and subscriptions.
Send server-sideCall the REST API with a secret scoped key and idempotency key.
Track eventsReport opens, actions, custom events, and outcomes from app lifecycle hooks.
Important: public mobile client keys are restricted to device registration, event submission, and device removal. Never place a notification-send key in a mobile app or browser bundle.
Client SDKs

Small SDKs with focused responsibilities.

The checked-in implementations match the HTTP API directly, so behaviour stays inspectable.

Swift · iOS 15+

Request notification permission, register APNs tokens, refresh tokens without losing identity, identify or log out users, parse HoneyNotify payload fields, and track received/opened actions.

Swift Package Manager

Kotlin · Android

Register the current Firebase token, handle token refresh, identify and log out users, parse notification data, and report events with sync and async helpers.

FirebaseMessaging

JavaScript · Web Push

Register the service worker, request permission, create a VAPID-backed subscription, store the device ID, submit events, and unsubscribe cleanly.

ES module + service worker
Demo before you build

Native WebView starters with HoneyNotify already connected.

Use the ready-to-build iOS and Android projects to load your HTTPS website full screen and test native push registration, token refresh, notification events, and click URLs.

One small configuration file per platform
Your application name, website URL, and public client key
SDKs fetched from the latest GitHub main branch
Detailed Xcode, APNs, Android Studio, and Firebase setup
demo configurationiOS + Android
APP_DISPLAY_NAME = Your App
WEBVIEW_URL = https:/$()/your-site.example
HONEYNOTIFY_CLIENT_KEY = ps_public_...

app_name=Your App
webview_url=https://your-site.example
honeynotify_client_key=ps_public_...
Send API

Predictable requests and safe retries.

Every notification creation request requires title, body, a target object, and a unique idempotency key. Retry the same business event with the same key to receive the original notification ID instead of sending twice.

Device, user, tag, segment, or all-device targets
Priorities, scheduling, local-time delivery, and cancellation
Paginated recipient and event inspection
Consistent JSON errors and request IDs
send-welcome.sh202
curl --request POST \
  --url https://api.honeynotify.com/v1/notifications \
  --header "Authorization: Bearer $HONEYNOTIFY_API_KEY" \
  --header "Idempotency-Key: welcome-customer-123-v1" \
  --header "Content-Type: application/json" \
  --data '{
    "title": "Welcome to the hive",
    "body": "Your account is ready.",
    "target": {
      "type": "user",
      "external_user_id": "customer_123"
    }
  }'
API surface

Everything is available through documented endpoints.

Audience

Devices, users, and aliases

Register and list devices, inspect and update user profiles, attach aliases, and deactivate registrations.

Messaging

Segments, templates, and notifications

Version reusable resources, estimate audiences, submit idempotent sends, cancel pending work, and inspect results.

Automation

Journeys and webhooks

Create and version graphs, inspect execution statistics, configure signed destinations, and test delivery.

Insight

Events, analytics, and exports

Record lifecycle or business events, aggregate outcomes, and create short-lived data exports.

Safety

Scopes and rate limits

Use least-privilege keys, handle HTTP 429 with Retry-After, and keep durable idempotency keys for send retries.

Operations

Settings and retention

Update app safeguards, manage frequency caps, configure retention, and audit administrative changes.

Take the shortest path to a test push.

Follow the quickstart, target one controlled device, and confirm the full lifecycle before expanding your audience.

Open the quickstart →