Quickstart
If you opened this from the app, your full /notify URL is on the home screen on your iPhone.
Try it right now
Same payload in each tab. Replace YOUR_WEBHOOK_URL with your full URL from the home screen.
curl -X POST "YOUR_WEBHOOK_URL" \ -H "Content-Type: application/json" \ -d '{ "schema_version": 1, "action": "update", "job_id": "deployment-check", "message": "Building project...", "status": "running", "accentColor": "#00FFDD" }'const url = "YOUR_WEBHOOK_URL";const payload = { schema_version: 1, action: "update", job_id: "deployment-check", message: "Building project...", status: "running", accentColor: "#00FFDD"};
fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(payload)});import requests
url = "YOUR_WEBHOOK_URL"payload = { "schema_version": 1, "action": "update", "job_id": "deployment-check", "message": "Building project...", "status": "running", "accentColor": "#00FFDD"}
requests.post(url, json=payload)2. Finish the job
When your automation finishes, send one final update with status: "success" or status: "failed" to resolve the Live Activity.
curl -X POST "YOUR_WEBHOOK_URL" \ -H "Content-Type: application/json" \ -d '{ "action": "update", "job_id": "deployment-check", "title": "Vercel Deploy", "message": "Built in 42s", "status": "success" }'Webhook URL
Island Pulse gives you one secret (uniqueID) shown in the webhook URL on the home screen.
- Example (query string):
https://YOUR-WORKER.workers.dev/notify?uniqueID=YOUR_SECRET_ID - Treat it like a password. Use CI secrets; don’t commit it to public repos.
Safer: send the secret in a header (recommended for CI and proxies)
Full URLs are often written to access logs. You can POST to the base path /notify with no uniqueID in the query string and pass the same value as a Bearer token instead:
curl -X POST "https://YOUR-WORKER.workers.dev/notify" \ -H "Authorization: Bearer YOUR_SECRET_ID" \ -H "Content-Type: application/json" \ -d '{ "job_id": "deployment-check", "message": "Building project...", "status": "running" }'You can also use ?token=YOUR_SECRET_ID if your tool cannot set custom headers. If you send uniqueID in more than one place (for example Bearer and query), every value must match or the request is rejected.
Next steps
Explore how to customize your pulses for metrics, sports, or heavy CI/CD workflows.