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
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