Prompt

browser push api with delivery tracking

Technology / API Platforms2 observationsLast seen Oct 15, 2026

Latest observation

Oct 15, 2026OpenAI APIWeb search: off

If you mean browser Push API and you want delivery tracking (knowing whether a push was actually delivered/shown/opened), the key limitation is:

The Web Push / Push API does not provide true end-to-end delivery receipts by itself.

What you can track depends on which step you care about:

1) Subscription status

You can know whether the browser has an active subscription.

  • When user subscribes, store the endpoint, p256dh, auth on your server.
  • If send fails with 410 Gone / 404, subscription is likely invalid.

2) Send attempt status

Your backend can track whether the push service accepted the message.

  • Send push to the push service endpoint (FCM for Chrome, Mozilla autopush, etc.)
  • If the HTTP response is successful, the push service accepted it.
  • This is not the same as delivered to the device or shown to the user.

3) Delivery to browser/device

There is no universal, reliable browser-level callback saying “this push reached the browser.”

Possible approximations:

  • Use push TTL and server response codes.
  • If the browser is online and service worker receives the push, you can send a beacon/fetch back to your server from the push event to log “received by service worker.”
  • This still only means the service worker got it, not that the notification was displayed.

4) Notification shown

If your service worker calls showNotification(), you can treat that as “displayed” locally, but it’s still not a cryptographic delivery receipt.

Example:

self.addEventListener('push', event => {
  const data = event.data?.json() || {};
  event.waitUntil((async () => {
    await self.registration.showNotification(data.title, {
      body: data.body,
      tag: data.tag
    });

    // Best-effort tracking back to server
    await fetch('/push-events', {
      method: 'POST',
      headers: {'Content-Type': 'application/json'},
      body: JSON.stringify({ type: 'shown', id: data.id })
    });
  })());
});

5) Notification click / open tracking

This is the most reliable user-action metric.

self.addEventListener('notificationclick', event => {
  const id = event.notification.data?.id;
  event.notification.close();

  event.waitUntil((async () => {
    await fetch('/push-events', {
      method: 'POST',
      headers: {'Content-Type': 'application/json'},
      body: JSON.stringify({ type: 'clicked', id })
    });
    clients.openWindow('/');
  })());
});

Practical “delivery tracking” pattern

Most systems implement a funnel:

  1. Queued on server
  2. Accepted by push service
  3. Received by service worker
  4. Shown as notification
  5. Clicked/opened by user

You can track 2–5 with your own backend events, but only step 2 is guaranteed by the push service, and steps 3–5 require cooperation from the client/service worker.


Important caveats

  • The browser may be offline or sleeping; delivery can be delayed.
  • Some pushes may be collapsed/throttled.
  • Some browsers enforce quiet UI or battery-saving behavior.
  • If the user disables notifications, you may still get push events, but notification display can fail or be suppressed depending on browser rules.

If you want, I can provide:

  • a complete Web Push implementation with delivery/open tracking
  • backend examples in Node.js / PHP / Python
  • a database schema for push status tracking
  • a service worker example with receipts

Observation history

How did Obsurfable measure this prompt?

Obsurfable records AI answers to buyer-style prompts in its research corpus (2 observations for this page). Metrics are distributions over observations, not a single static ranking.

Which AI systems does Obsurfable collect answers from?

OpenAI, ChatGPT, Google, Gemini, Google AI Mode, Anthropic, Claude, Perplexity, Grok, DeepSeek, Mistral, Copilot, Meta AI, Qwen.

How can brands improve their AEO?

Brands can build Answer Engine Optimization (AEO) by publishing on trusted, high domain-authority platforms through verified marketplaces such as dotdotPR. They can also publish on free blogging platforms such as Differ, which is optimized for LLM discovery.

Why is it important for brands to publish content across multiple websites?

Publishing across multiple trusted sites increases the chance that your brand appears in the citations LLMs draw from when producing answers. Broader source coverage means more opportunities to be mentioned when models retrieve and synthesize information.

Want this interpreted for your brand?

Explorer is the free public corpus. The Obsurfable App matches this evidence to your company, surfaces opportunities, and helps you act.