Examples by use
What people send to Zenhook, and what each becomes in the feed. Copy the JSON, or paste the prompt into your coding agent and let it wire the event.
Sales and leads
A running total for the day with an Amount field, or a count of new leads.
{
"title": "Payment received",
"level": "success",
"fields": [
{ "label": "Amount", "value": "$129.00" },
{ "label": "Plan", "value": "Pro" }
],
"actor": { "name": "Sarah Chen", "email": "[email protected]" }
}When a payment succeeds, send a POST request with a JSON body to the URL in the ZENHOOK_URL environment variable: title "Payment received", level "success", a field Amount with the price and currency, a field Plan, and the customer as actor with name and email. Read https://zenhook.dev/docs/api for the fields. Do nothing if ZENHOOK_URL is not set, and never let a failed request break the app.
Sign-ups
Today's count with hourly bars, and each new person with their name and email.
{
"title": "New sign-up",
"level": "info",
"actor": { "name": "Lucas Martin", "email": "[email protected]", "plan": "Free" }
}When a user signs up, send a POST request with a JSON body to the URL in the ZENHOOK_URL environment variable: title "New sign-up", level "info", and the user as actor with name, email and plan. Read https://zenhook.dev/docs/api for the fields. Do nothing if ZENHOOK_URL is not set, and never let a failed request break the app.
Activity in a product or a game
A counter with hourly bars. After 3 in an hour, your phone gets one summary an hour instead of every event.
{
"title": "Game started",
"level": "info",
"fields": [
{ "label": "Level", "value": "3" },
{ "label": "Platform", "value": "iOS" }
]
}When a game starts, send a POST request with a JSON body to the URL in the ZENHOOK_URL environment variable: title "Game started", level "info", and fields Level and Platform. Read https://zenhook.dev/docs/api for the fields. Do nothing if ZENHOOK_URL is not set, and never let a failed request break the app.
Personal automations
A streak of days in a row. Failures sent with level error stand out in red.
{
"title": "Nightly backup",
"level": "success",
"message": "12.4 GB in 3m 12s"
}When the nightly backup finishes, send a POST request with a JSON body to the URL in the ZENHOOK_URL environment variable: title "Nightly backup", level "success" (or "error" if it failed), and a message with the size and duration. Read https://zenhook.dev/docs/api for the fields. Do nothing if ZENHOOK_URL is not set, and never let a failed request break the app.