Recipe · changedetection.io

Page changed → your phone knows

changedetection.io ships Apprise with its own posts:// handler, so pingwa is one notification URL away. Restock, price, terms-page watching with the diff delivered to WhatsApp. Text join to get a key.

§ 1

The notification

Per watch (or in global settings) → Notifications:

changedetection.io → Notification URL + body
Notification URL:
posts://pingwa.dev/v1/notify?+Authorization=Bearer%20pw_YOUR_KEY

Notification Title:  (leave empty)
Notification Body:
{"text": {{ ("Changed: " ~ watch_url ~ "\n\n" ~ diff) | truncate(900, true) | tojson }}}
Notification Format: Text

The +Authorization query param becomes the HTTP header; tojson makes the diff JSON-safe; truncate(900, true) keeps it under pingwa's 1024-char text limit. Hit "Send test notification" to check the pipe. Verified 2026-07-23 against the changedetection.io notification docs.

§ 2

Noise control

Every changed check = one message, and out-of-window sends are paid (free plan: 30/month). Tune per-watch recheck intervals, use the visual selector to watch the price element instead of the whole page, and keep jittery watches on a digest channel instead. 402 from pingwa = quota spent.

§ 3

Two-way, and DIY watchers

Want to act on the change (buy, book, reply)? Point a tiny script at POST /v1/ask with buttons and approve from your phone; the watchers recipe has the full loop, including the buy-it-now variant.

§ 4

FAQ

Why posts:// and not json://?

changedetection.io's own handler: it converts +Header params to headers, posts your body verbatim as JSON, and carries the project's SSRF guard. For any other Apprise-embedded tool, use the generic jsons:// recipe.

The diff has HTML junk in it.

Switch the watch's "difference" mode to text, or replace diff with current_snapshot in the body. The same tojson rule applies.

QR code to join pingwa on WhatsApp

Scan the code and get instant access. It opens WhatsApp with “join” ready to send, and your API key comes straight back.

pingwa carries the ping over the official Meta Cloud API. Your own number stays out of it (why that matters). Alerts landing outside your 24h reply window are paid template sends; the free plan's 30/month covers a well-tended watch list.