Developer integration

Integrate Ding!
into your product.

Two ways to connect your product to Ding! — a REST API for sending broadcasts from your backend, and an embeddable web widget that drops a live notification bell onto any website.

Before you start

1

Create an account

Sign up at Ding! — it's completely free. No credit card required.

Sign up
2

Create a channel

Go to your dashboard and create a channel. You'll get a unique Channel ID and API Key instantly.

My channels
3

Integrate

Use the REST API to send broadcasts, or drop the web widget onto any page. Both use your Channel ID and API Key.

Web Widget

Embed a notification bell on any website

One <script> tag is all it takes. It renders a notification bell icon in your page. Visitors can subscribe to your channel directly from your site and receive messages in real-time — no page refresh, no polling.

Zero dependencies

Plain JavaScript. No React, no Vue, no framework required.

Real-time delivery

Messages appear instantly via WebSocket — no polling needed.

Subscribe flow built-in

Visitors can subscribe to your channel directly from the widget.

index.html
<!-- Paste before </body> -->
<script
  src="/widget.js"
  data-channel="YOUR_CHANNEL_KEY"
></script>

Attributes

data-channel

Your 10-character channel key — found on your channel settings page. Required.

Widget connects and subscribes visitors automatically
REST API

Send broadcasts from your backend

Trigger a broadcast to all channel subscribers — or target a specific user — with a single authenticated HTTP request. Works with any language or framework. No SDK required.

Any language, any framework

Node, Python, Go, PHP, Ruby — if it can send HTTP, it works.

Broadcast or target

Send to all subscribers, or target specific user IDs in the payload.

Rich content support

Plain text, HTML body, image URLs, and file attachment URLs.

POST /api/external/channels/{channel_id}/send
curl example
curl -X POST \
  https://ding.app/api/external/channels/{channel_id}/send \
  -H "X-API-KEY: your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Deploy complete 🚀",
    "body":  "v2.1 is now live in production."
  }'

Request body fields

title

Notification title. Shown as the push notification headline. Required.

body

Main message content. Supports plain text or HTML.

image_url

URL of an image to attach inline to the message.

target_user_id

Send to a single subscriber. Omit to broadcast to all.

Your API key is available in your channel settings. Keep it secret — treat it like a password.

Code examples

Same API, any language. Pick your stack.

Node.js (fetch)

await fetch(
  `https://ding.app/api/external/channels/${channelId}/send`,
  {
    method: 'POST',
    headers: {
      'X-API-KEY': process.env.DING_API_KEY,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      title: 'Deploy complete 🚀',
      body:  'v2.1 is now live.',
    }),
  }
);

Python (requests)

import requests

requests.post(
  f"https://ding.app/api/external/channels/{channel_id}/send",
  headers={
    "X-API-KEY": os.environ["DING_API_KEY"],
    "Content-Type": "application/json",
  },
  json={
    "title": "Deploy complete 🚀",
    "body":  "v2.1 is now live.",
  },
)

Ready to integrate?

Create an account, make a channel, and send your first broadcast in under 5 minutes.