Developer Guide

Integrate HookTap in Minutes

Send HTTP POST requests to your personal URL and receive them as real-time push notifications on your iPhone.

Overview

What is HookTap?

HookTap turns your iPhone into a real-time webhook receiver. Every HTTP POST request sent to your personal URL is instantly delivered as a push notification to your device – no server, no polling, no extra setup.

Step 1

Create your webhook

01

Install the app

Download HookTap from the App Store. On first launch, an anonymous account is created automatically – no email or password needed.

→ App Store
02

Copy your URL

Your personal webhook URL is shown immediately inside the app. Copy it and use it anywhere that can send HTTP requests.

Your personal webhook URL

https://hooks.hooktap.me/webhook/YOUR_ID

No registration. No password. Ready instantly.

Step 2

Send your first event

POST a JSON payload to your webhook URL. The event arrives on your iPhone within seconds.

curl -X POST https://hooks.hooktap.me/webhook/YOUR_ID \
  -H "Content-Type: application/json" \
  -d '{
    "type":  "build",
    "title": "CI succeeded",
    "body":  "Staging deploy is live"
  }'

Payload fields

typeEvent label – any string, e.g. "build", "deploy", "alert"
titleNotification title displayed on the lock screen
bodyNotification body text
CLI

Official command-line tool

Install the HookTap CLI to send events from scripts, open a terminal UI, configure profiles, and get notified when commands finish.

Install

Install with one command

Use the curl installer for macOS and Linux, or install from the Homebrew tap.

# macOS / Linux
curl -fsSL https://hooktap.me/install.sh | sh

# Homebrew
brew install HookTap/tap/hooktap

Setup

Connect with a pairing code

Generate a one-time code in the iPhone app and run setup. Manual webhook IDs and named CI profiles still work.

# Guided setup
hooktap setup --code 123456

# Manual setup
hooktap setup

# Non-interactive setup
hooktap setup --name ci --hook https://hooks.hooktap.me/webhook/YOUR_ID --type push

Terminal UI

Send from a full-screen UI

Open HookTap in the terminal to compose events, inspect profiles, view snippets, and run basic diagnostics.

# Open the terminal UI
hooktap
hooktap tui

# Keyboard
# 1-4 switch screens · Tab moves inputs · Ctrl+T cycles type · Ctrl+S sends

Watch

Notify when commands finish

Wrap builds, deploys, migrations, and scripts. Output streams normally, and the final exit code is preserved.

# Notify when a command exits
hooktap watch -- npm run build

# Custom title
hooktap watch --title "Production deploy" -- make deploy

Send your first event

# Save your webhook id once
hooktap config set hook_id YOUR_ID

# Send an event (push is the default)
hooktap send "Build finished"

# Pipe any command's output straight to your phone
make deploy | hooktap send "Deploy" --type push

# Check the service is reachable
hooktap ping
Reads from stdin — pipe any command's output to your phone
Named profiles for juggling multiple webhooks
Shell completions for zsh, bash & fish
View the CLI on GitHub
Field Mapping

Connect any service directly

Services like GitHub, Stripe, or Grafana send their own fixed JSON format. Field mapping lets you point HookTap at any path inside that payload – no wrapper script or middleware needed.

Plain dot-notation

Extract a value from a nested JSON path using dot-notation.

// Incoming JSON (sent by GitHub)
{
  "repository": { "full_name": "acme/backend" },
  "workflow_run": {
    "name":        "Deploy to production",
    "conclusion":  "success",
    "head_branch": "main"
  }
}

// fieldMapping – set on the webhook document in Firestore
{
  "title": "workflow_run.name",
  "nody":  "workflow_run.conclusion",
  "type": "push"
}

// → Notification
//   Title: "Deploy to production"
//   Body:  "success"

Template syntax

Wrap paths in {curly braces} to combine static text, emojis, and multiple fields in one string.

// fieldMapping with template syntax
// Anything inside {…} is resolved as a dot-notation path.
// Everything outside is treated as a literal.
{
  "title": "🚀 {repository.full_name}",
  "body":  "{workflow_run.conclusion} on {workflow_run.head_branch}",
  "type": "push"
}

// Same GitHub payload as above
// → Notification
//   Title: "🚀 acme/backend"
//   Body:  "success on main"

Deep paths

Any depth of nesting is supported – useful for Stripe, Grafana, or custom webhook payloads.

// Incoming JSON (sent by Stripe)
{
  "type": "payment_intent.succeeded",
  "data": {
    "object": {
      "amount":   4900,
      "currency": "eur",
      "receipt_email": "user@example.com"
    }
  }
}

// fieldMapping
{
  "title": "{type}",
  "body":  "€{data.object.amount} · {data.object.receipt_email}",
  "type": "feed"
}

// → Notification
//   Title: "payment_intent.succeeded"
//   Body:  "€4900 · user@example.com"

Deep Link (optional)

The optional Deep Link field accepts a dot-notation path to a URL within your payload. Tapping the notification or event will open this URL directly. Example: pull_request.html_url.

// Incoming JSON (sent by GitHub)
{
  "action": "opened",
  "pull_request": {
    "title": "Fix memory leak",
    "html_url": "https://github.com/acme/repo/pull/42"
  }
}

// fieldMapping
{
  "title": "PR {action}: {pull_request.title}",
  "deepLink": "pull_request.html_url"
}

// → Action
//   Tapping the notification opens:
//   "https://github.com/acme/repo/pull/42"
Reference

How events are delivered

Every incoming webhook is processed through all three channels simultaneously.

push

Push Notification

Appears instantly on the lock screen and as a banner. Works even when the app is in the background or closed.

feed

Event Log

Stored chronologically in the in-app feed with full payload, timestamp, and read status.

widget

Widget Update

The latest event updates your Home Screen and Lock Screen widget (Pro).

Status & Colors

Automatic Status Detection

HookTap automatically detects the status of your events based on keywords in the body or title and adjusts the color of the Live Activities accordingly.

Live Activity Design (Keywords)

Green

success · passed · completed · deployed · ok · healthy · 200 · erfolgreich · abgeschlossen · bestanden · fertig · bereit · gesund

Red

error · failed · failure · critical · down · crash · 500 · urgent · dringend · exception · alert · fehler · fehlgeschlagen · kritisch · absturz · ausgefallen

Orange

warning · pending · timeout · slow · degraded · 401 · 403 · important · wichtig · warnung · ausstehend · zeitüberschreitung · langsam · beeinträchtigt

Blue

started · running · triggered · queued · info · gestartet · läuft · ausgelöst · warteschlange

Urgent Delivery (Time-Sensitive)

Events with the following keywords are marked as 'Time-Sensitive'. They break through Focus mode and are delivered with priority:

error · fehler · failure · failed · fehlgeschlagen · exception · critical · kritisch · down · crash · 500 · ausgefallen · absturz · urgent · dringend · alert · warning · warnung · timeout · zeitüberschreitung · degraded · beeinträchtigt · 401 · 403 · important · wichtig

Platforms

Available on all your devices

HookTap works on iPhone and extends to your desktop via native Mac and Windows apps.

Free & Pro

iOS

The primary app. Receives webhook events, shows push notifications, manages your URLs, and displays the full event feed.

iPhone · iOS 16+

Pro

macOS

Native Mac app that connects to your iPhone via a 6-digit pairing code. Displays events in real time with macOS system notifications.

macOS 13 Ventura+ · .dmg download

Pro

Windows

Native Windows app with the same real-time event display and system notifications. Pairs with your iPhone app in seconds.

Windows 10 / 11 · .exe download

Integrations

Ready-made recipes for your stack

Copy-paste examples for the tools you already use. No extra setup.

GitHub Actions

Notify on CI pass/fail, deploys, and releases.

GitLab CI

Pipeline notifications with a single job snippet.

Python

Zero-dependency helper, requests examples, exception decorator.

Node.js / TypeScript

CommonJS and ESM helpers, withNotification() wrapper.

Shell / cron

Wrap any command, disk alerts, bashrc helper function.

Docker

Compose health checks, container lifecycle events.

Go · PHP · Ruby

Stdlib-only snippets, ready to drop into any project.

Zapier · Make · n8n

No-code automation with step-by-step setup guides.

Monitoring

Uptime checks, CPU alerts, Sentry and Grafana integration.

Browse all integrations on GitHub