Skip to content

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.

Terminal window
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"
}'

2. Finish the job

When your automation finishes, send one final update with status: "success" or status: "failed" to resolve the Live Activity.

Terminal window
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.

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:

Terminal window
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.