Guides & Integrations
Connect Notifikations to any tool, script, or automation — and get push notifications wherever your work happens.
Jump to an integration
Claude Code
Claude Code supports hooks — shell commands that run automatically when Claude starts a session, finishes a task, or triggers specific events. Wire Notifikations into a hook and you'll get an iPhone notification the moment Claude completes a long task, even if you've walked away from your machine.
Add a Stop hook to ~/.claude/settings.json so every Claude session end triggers a push:
// ~/.claude/settings.json { "hooks": { "Stop": [ { "matcher": "", "hooks": [ { "type": "command", "command": "curl -s -X POST https://api.notifikations.com/api/v1/YOUR_SECRET -H 'Content-Type: application/json' -d '{\"title\":\"Claude done\",\"message\":\"Task finished\"}'" } ] } ] } }
You can also add a hook scoped to a specific project by placing a settings.json inside the project's .claude/ folder — useful when you want notifications only for certain repos.
Langflow
Langflow lets you build LLM pipelines visually. Add a Notifikations call at the end of any flow so you get an iPhone notification the moment a long generation, retrieval, or agent run completes.
Option 1 — API Request component
Drop an API Request component as the final node in your flow. Set Method to POST, URL to your webhook, and map the message field from any upstream output.
Option 2 — Python tool for agents
Register Notifikations as a callable tool so the agent can notify you itself:
from langflow.base.tools import tool import httpx @tool def notify(message: str, title: str = "Langflow") -> str: """Send a push notification to the developer's iPhone. Call this when a task is complete or requires human attention.""" resp = httpx.post( "https://api.notifikations.com/api/v1/YOUR_SECRET", json={"message": message, "title": title}, timeout=5, ) return "sent" if resp.is_success else "failed"
Add the tool to your agent component's Tools list. The agent will call notify() whenever it decides the user should know something — or you can force it at the end of a Chain component.
interruption-level: time-sensitive in the JSON payload if you want the notification to break through Focus modes.Agno
Agno is a Python agent framework. Register Notifikations as a Toolkit and the agent can push a notification at any point in its reasoning loop — when a task finishes, when it needs human input, or when it hits an error.
import httpx from agno.tools import Toolkit class NotifikationsTools(Toolkit): def __init__(self, secret: str): super().__init__(name="notifikations") self.secret = secret self.register(self.notify) def notify(self, message: str, title: str = "Agent") -> str: """Send a push notification to the developer's iPhone. Use when a task is complete or requires human attention. Args: message: The notification body text. title: Optional title shown above the message. """ resp = httpx.post( f"https://api.notifikations.com/api/v1/{self.secret}", json={"message": message, "title": title}, timeout=5, ) return "sent" if resp.is_success else "failed"
Wire it into your agent:
from agno.agent import Agent from agno.models.anthropic import Claude agent = Agent( model=Claude(id="claude-opus-4-6"), tools=[NotifikationsTools(secret="YOUR_SECRET")], instructions="When you finish a multi-step task, call notify() with a one-line summary.", ) agent.run("Research and summarise the top 5 AI papers from this week")
notify() is what the model reads. Keep it concise and describe when to call it so the agent uses it at the right moment.Codex CLI
OpenAI Codex CLI runs agentic tasks in your terminal. Chain a curl call after any codex invocation to get notified when the agent finishes — especially useful for long refactors or multi-file generations you kick off and then step away from.
# Run Codex, then notify when it exits codex "refactor the auth module to use JWT" && \ curl -s -X POST https://api.notifikations.com/api/v1/YOUR_SECRET \ -H 'Content-Type: application/json' \ -d '{"title":"Codex done","message":"Refactor complete ✅"}'
For a fire-and-forget wrapper, drop this function in your shell profile:
# ~/.zshrc or ~/.bashrc function ntf-codex() { codex "$@" local status=$? local msg=$([ $status -eq 0 ] && echo "✅ Done" || echo "❌ Failed") curl -s -X POST https://api.notifikations.com/api/v1/YOUR_SECRET \ -d "Codex: $msg — $1" }
Then just call ntf-codex "your prompt here".
cURL
The fastest way to send a notification — no dependencies, works on any machine with curl installed. All you need is your secret from the app.
# Plain text — simplest possible call curl -X POST https://api.notifikations.com/api/v1/YOUR_SECRET \ -d 'Deploy finished ✅'
# Custom title, message, and sound curl -X POST https://api.notifikations.com/api/v1/YOUR_SECRET \ -H 'Content-Type: application/json' \ -d '{ "title": "Build done", "message": "All tests passed", "sound": "brrr" }'
# GET request — no body required (useful for webhooks) curl "https://api.notifikations.com/api/v1/YOUR_SECRET?title=Alert&message=Disk+at+90%25"
Append -s (silent) to suppress curl's progress output in scripts. See the full docs for all supported fields.
GitHub Actions
Add a notification step at the end of any workflow to get push alerts for deployments, test results, or release events. Store your webhook secret in Settings → Secrets → Actions as NTF_SECRET — never hardcode it in the YAML.
# .github/workflows/deploy.yml on: [push] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: npm ci && npm run build - name: Notify on success if: success() run: | curl -s -X POST "https://api.notifikations.com/api/v1/$\{{ secrets.NTF_SECRET }}" \ -H 'Content-Type: application/json' \ -d '{"title":"Deploy succeeded","message":"$\{{ github.repository }} → $\{{ github.ref_name }} 🚀"}' - name: Notify on failure if: failure() run: | curl -s -X POST "https://api.notifikations.com/api/v1/$\{{ secrets.NTF_SECRET }}" \ -H 'Content-Type: application/json' \ -d '{"title":"Build failed ❌","message":"$\{{ github.repository }} on $\{{ github.ref_name }}"}'
Works with any trigger — PRs, releases, scheduled runs, or manual workflow_dispatch events.
Home Assistant
Home Assistant's RESTful command integration lets you call any HTTP endpoint from automations, scripts, and the action panel. Add Notifikations as a service and trigger it from any automation — motion detected, door left open, appliance cycle finished, you name it.
Add this to your configuration.yaml:
# configuration.yaml rest_command: notifikations_send: url: "https://api.notifikations.com/api/v1/YOUR_SECRET" method: POST content_type: "application/json" payload: '{"title":"{{ title }}","message":"{{ message }}"}'
Then call it from any automation or script:
# automation.yaml (or via the UI editor) automation: - alias: "Washing machine done" trigger: - platform: state entity_id: sensor.washing_machine_power to: "0" for: "00:01:00" action: - service: rest_command.notifikations_send data: title: "Laundry done 👕" message: "Washing machine finished"
JavaScript / Node.js
Use the native fetch API — works in Node.js 18+, Deno, Bun, and any modern browser context without any dependencies.
async function notify(message, title) { await fetch("https://api.notifikations.com/api/v1/YOUR_SECRET", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ message, title }), }); } // Call it anywhere in your code await notify("Job finished", "Cron");
Wrap it as a fire-and-forget helper so it never blocks your main flow:
function notifyAsync(message, title) { fetch("https://api.notifikations.com/api/v1/YOUR_SECRET", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ message, title }), }).catch(() => {}); // silent — don't let a failed notification crash your app } // Hook into process exit for scripts process.on("exit", (code) => { notifyAsync(code === 0 ? "Script finished ✅" : "Script failed ❌", "Node.js"); });
n8n
n8n's built-in HTTP Request node can call any webhook — no custom code required. Drop one at the end of any workflow to push a notification when automation runs complete, leads come in, or errors occur.
Steps in the n8n editor:
- Add an HTTP Request node at the end of your workflow.
- Set Method to
POST. - Set URL to
https://api.notifikations.com/api/v1/YOUR_SECRET. - Under Body, choose JSON and enter your payload.
- Save and activate the workflow.
// HTTP Request node — Body (JSON) { "title": "n8n workflow done", "message": "{{ $json.summary }}" }
You can interpolate any expression from previous nodes in the message field — so the notification body can include record counts, names, or status codes from earlier steps.
Python
No third-party packages required — the standard library is all you need.
import urllib.request, json def notify(message, title=None, secret="YOUR_SECRET"): url = f"https://api.notifikations.com/api/v1/{secret}" payload = {"message": message} if title: payload["title"] = title data = json.dumps(payload).encode() req = urllib.request.Request(url, data=data, headers={"Content-Type": "application/json"}) urllib.request.urlopen(req) # Usage notify("Scrape finished — 4,201 records", title="Crawler")
For machine-learning or long-running data pipelines, add a decorator so you never forget a notification:
import functools, traceback def notify_when_done(title="Script"): def decorator(fn): @functools.wraps(fn) def wrapper(*args, **kwargs): try: result = fn(*args, **kwargs) notify(f"{fn.__name__} finished ✅", title=title) return result except Exception as e: notify(f"{fn.__name__} failed: {e}", title=f"{title} ❌") raise return wrapper return decorator # Usage @notify_when_done(title="Training") def train_model(): # ... your training code pass
Apple Shortcuts
The Shortcuts app can call any URL with a Get Contents of URL action — no code required. This is great for building personal automations that notify you from your iPhone or Mac itself, or as a trigger from Focus Filters, NFC tags, or widget taps.
Build the shortcut:
- Open the Shortcuts app and create a new shortcut.
- Add a Get Contents of URL action.
- Set the URL to
https://api.notifikations.com/api/v1/YOUR_SECRET. - Set Method to
POST. - Set Request Body to JSON and add keys:
titleandmessage. - Run the shortcut — the notification arrives instantly.
You can also call Notifikations from a Shortcut triggered by a Personal Automation — for example, notify yourself when you arrive somewhere, or send a reminder at a specific time.
Zapier
Use Zapier's built-in Webhooks by Zapier action to send a push notification as part of any Zap — triggered by Gmail, Stripe, Typeform, Airtable, or hundreds of other apps.
Setup:
- In your Zap, add an action step and search for Webhooks by Zapier.
- Choose POST as the event.
- Set the URL to
https://api.notifikations.com/api/v1/YOUR_SECRET. - Set Payload Type to JSON.
- Add the fields:
titleandmessage— you can map values from any earlier step. - Test the step and publish the Zap.
Make (formerly Integromat)
Make's HTTP module can call any endpoint from any scenario. Add one as the last module to push an iPhone notification when a scenario finishes — whether it's processing leads, syncing records, or running a scheduled data job.
Setup:
- Add an HTTP → Make a request module to your scenario.
- Set URL to
https://api.notifikations.com/api/v1/YOUR_SECRET. - Set Method to
POST. - Set Body type to Raw and Content type to
application/json. - Enter your payload in the Request content field.
// Request content (Raw JSON) { "title": "Make scenario done", "message": "Processed {{1.total}} records" }
Map any bundle value from previous modules into the message field using Make's {{moduleIndex.fieldName}} syntax.
Power Automate
Power Automate's HTTP action (available on premium plans) can POST to any webhook. Use it as the final step in any cloud flow to get push notifications from Microsoft 365 events, SharePoint changes, Teams messages, or any other trigger.
Setup:
- Add a New step and search for the HTTP action.
- Set Method to
POST. - Set URI to
https://api.notifikations.com/api/v1/YOUR_SECRET. - Under Headers, add
Content-Type→application/json. - Set Body to your JSON payload — use the dynamic content picker to insert values from earlier steps.
// Body (use dynamic content for the message value) { "title": "Power Automate", "message": "@{triggerOutputs()?['body/subject']}" }
OpenClaw
OpenClaw is a web scraping and monitoring platform. Use its built-in HTTP action or webhook output to fire a Notifikations push whenever a page changes, a price drops, or a scrape job finishes.
In any OpenClaw workflow that supports an outgoing webhook or HTTP action, point it at your Notifikations URL:
# OpenClaw outgoing webhook / HTTP action config URL: https://api.notifikations.com/api/v1/YOUR_SECRET Method: POST Headers: Content-Type: application/json Body: { "title": "Price alert", "message": "{{item.name}} dropped to {{item.price}}" }
This way you get a push to your iPhone the moment OpenClaw detects the change — no need to keep checking a dashboard.
Base44
Base44 is a no-code app builder. Any app you build in Base44 can call external APIs using its HTTP action block. Wire Notifikations into a button, form submission, or data trigger to send a push notification from your custom Base44 app.
In the Base44 action editor, add an HTTP Request block with these settings:
# Base44 HTTP action settings URL: https://api.notifikations.com/api/v1/YOUR_SECRET Method: POST Headers: Content-Type: application/json Body (JSON): { "title": "New submission", "message": "{{form.name}} submitted the form" }
You can map any Base44 variable or field value into the message, so each notification contains the relevant context from your app's data.
Shell scripts
Append a curl call to any shell script to get notified when it finishes — whether it succeeds or fails. Good for training runs, data exports, backups, or any long-running process.
#!/bin/bash # your long-running process python train.py --epochs 50 if [ $? -eq 0 ]; then curl -s -X POST https://api.notifikations.com/api/v1/YOUR_SECRET \ -H 'Content-Type: application/json' \ -d '{"title":"Training done","message":"Model finished ✅"}' else curl -s -X POST https://api.notifikations.com/api/v1/YOUR_SECRET \ -d 'Training failed ❌' fi
Or define a reusable shell function and call it at the end of any script:
function ntf() { curl -s -X POST https://api.notifikations.com/api/v1/YOUR_SECRET \ -d "$1" } # Usage anywhere in the script ntf "Backup complete" ntf "Deployment finished 🚀"
Uptime monitor
Ping your webhook from a cron job to get an iPhone alert whenever a service goes down.
#!/bin/bash # crontab: */5 * * * * /path/to/check.sh STATUS=$(curl -s -o /dev/null -w "%{http_code}" https://myapp.example.com/health) if [ "$STATUS" != "200" ]; then curl -s -X POST https://api.notifikations.com/api/v1/YOUR_SECRET \ -H 'Content-Type: application/json' \ -d "{\"title\":\"Down!\",\"message\":\"myapp returned HTTP $STATUS\",\"sound\":\"brrr\"}" fi
Notification with a deep link
Tapping the notification opens a URL directly in Safari (or your app).
curl -X POST https://api.notifikations.com/api/v1/YOUR_SECRET \ -H 'Content-Type: application/json' \ -d '{ "title": "PR merged", "message": "feat: dark mode support", "open_url": "https://github.com/you/repo/pull/42" }'
Fan-out to all devices
Use your user secret (instead of the device secret) to send to every device on your iCloud account at once.
curl -X POST https://api.notifikations.com/api/v1/YOUR_USER_SECRET \ -d 'Sent to all your devices'
The response includes a sent count: {"success":true,"sent":2,"failures":0}