Problem
Today, the only way to know a payment landed is to refresh the link page. For invoicing and storefront use cases the recipient needs a passive notification — email, Slack, Discord, or a generic webhook to their own backend.
Proposal
Add an optional webhook_url and notify_email to the link schema. A small Stellar transaction watcher polls Horizon for the recipient's payments, matches them against open links, and fires a webhook + email when a match is found.
Acceptance criteria
Files involved
frontend/src/components/CreateLink.tsx
frontend/src/lib/types.ts
scripts/pocketbase-schema.json
services/notifier/ — new (Node + TypeScript, single file is fine)
docker-compose.yml — add the optional notifier service
Notes
Keep the notifier completely optional. The frontend MUST stay functional with no notifier deployed — we don't want this to become required infrastructure.
Problem
Today, the only way to know a payment landed is to refresh the link page. For invoicing and storefront use cases the recipient needs a passive notification — email, Slack, Discord, or a generic webhook to their own backend.
Proposal
Add an optional
webhook_urlandnotify_emailto the link schema. A small Stellar transaction watcher polls Horizon for the recipient's payments, matches them against open links, and fires a webhook + email when a match is found.Acceptance criteria
scripts/pocketbase-schema.jsonandfrontend/src/lib/types.ts:webhook_url: text(optional, validated as https URL)notify_email: email(optional)notified_at: text(set when notification fires; prevents duplicate sends)CreateLinkexposes the two optional fields behind an "Advanced" toggle.services/notifier/(the first thing in this folder — be honest in the README that adding the service is opt-in):/accounts/{creator}/payments?cursor=nowfor each link with an unmet notify condition.{ link_id, payer, amount, asset, tx_hash }towebhook_url(signed with HMAC-SHA256 if aWEBHOOK_SIGNING_SECRETenv is set).notify_emailvia SMTP (configurable).notified_atso it doesn't double-fire.services/notifier/README.mdincluding a one-liner Docker invocation.Files involved
frontend/src/components/CreateLink.tsxfrontend/src/lib/types.tsscripts/pocketbase-schema.jsonservices/notifier/— new (Node + TypeScript, single file is fine)docker-compose.yml— add the optional notifier serviceNotes
Keep the notifier completely optional. The frontend MUST stay functional with no notifier deployed — we don't want this to become required infrastructure.