Channels
In-app inbox
A persistent message center inside your own product — messages that wait for the user instead of interrupting them.
Not every message deserves an interruption. The in-app inbox is a message center you embed in your own web app — announcements, feature news and account notices land there and wait until the user logs in.
Why an inbox channel
- Zero fatigue — it never buzzes a phone. Perfect for "nice to know" content that would hurt your push opt-in rate.
- Guaranteed reach — no spam filter, no notification permission needed; every active user sees it.
- A journey step like any other — journeys can deliver to
inappexactly like SMS or email, so "announce in-app, escalate to email if unread after 3 days" is a standard pattern.
Embedding
Two ways to read the inbox. From your backend, fetch a contact's inbox and render it in your own UI — this endpoint requires a dashboard session (a JWT from POST /v1/auth/login), not an API key. Add ?unread=1 for unread messages only:
curl "https://api.wezend.com/v1/inapp/c_123" \
-H "Authorization: Bearer $WEZEND_JWT"
# → { "messages": [ { "id": "…", "title": "…", "body": "…", "url": "…", "read_at": null, "created_at": "…" } ], "unread": 2 }
Or straight from the browser with your public tracking key (wz_pk_…) and the signed-in user's email — no secret ever reaches the client:
curl -X POST https://api.wezend.com/v1/inapp/feed \
-H "Content-Type: application/json" \
-d '{ "key": "wz_pk_…", "email": "user@example.com", "unread_only": true }'
Mark read state back so unread badges stay correct (pass a message id, or "all" to clear everything):
curl -X POST https://api.wezend.com/v1/inapp/read \
-H "Content-Type: application/json" \
-d '{ "key": "wz_pk_…", "email": "user@example.com", "id": "msg_456" }'
Sending
In-app is not a channel on POST /v1/messages/send — use the dedicated endpoint (dashboard session), targeting a contact_id or a known email:
curl -X POST https://api.wezend.com/v1/inapp/send \
-H "Authorization: Bearer $WEZEND_JWT" \
-H "Content-Type: application/json" \
-d '{ "email": "user@example.com", "title": "New feature", "body": "Journeys now support push.", "url": "https://app.example.com/news" }'
Or add an in-app step in a journey. Each message carries a title, a body and an optional call-to-action URL.
One platform. Every customer interaction.
Replace your patchwork of messaging APIs, CDP and automation tools with a single engagement platform built for scale.
No credit card required · EU data residency · 99.99% uptime SLA