How We Calculate Messages
Understanding our transparent and fair message counting system
At Paanj, we believe in transparent pricing. A "message" in our system represents any unit of data transmission or event notification. Here's exactly how we count messages:
Standard Message Delivery
1 message = 1 message delivered
Each message delivered to an active connection (online user) counts as 1 message. This includes:
- Messages sent to the intended recipient who is currently online
- Webhook notifications triggered by message events
- Admin SDK listeners receiving notifications (e.g., new user joins, conversation created, etc.)
- Real-time event notifications to connected clients
Example:
If you send a message to a group chat with 5 online members, and you have 1 webhook configured and 1 admin SDK listener, that counts as 7 messages (5 recipients + 1 webhook + 1 admin listener).
Presence & Keep-Alive Pings
1 message = 10 pings
To maintain real-time connections and user presence status, we send periodic keep-alive pings to connected devices. These are counted at a discounted rate:
- Connection heartbeat signals
- Presence status updates (online/offline/away)
- Typing indicators
- Read receipts
Example:
If your application sends 100 typing indicator pings throughout the day, that counts as 10 messages (100 pings ÷ 10).
Offline Message Retrieval
1 message = 10 offline retrievals
When users who were offline come back online and retrieve their missed messages via API calls, we count these at a discounted rate:
- Messages fetched by users after reconnecting
- Historical message retrieval via API
- Conversation history sync operations
Example:
If a user was offline and retrieves 50 missed messages when they reconnect, that counts as 5 messages (50 retrievals ÷ 10).
Quick Reference
| Action Type | Counting Rate | Message Count |
|---|---|---|
| Real-time message delivery (online users) | 1:1 | 1 delivery = 1 message |
| Webhook notifications | 1:1 | 1 webhook = 1 message |
| Admin SDK event listeners | 1:1 | 1 event = 1 message |
| Keep-alive pings & presence updates | 10:1 | 10 pings = 1 message |
| Offline message retrieval (API) | 10:1 | 10 retrievals = 1 message |
Frequently Asked Questions
Why do you count webhooks and admin listeners as messages?
Each webhook call and admin SDK notification requires server resources to process and deliver. We count these to ensure fair pricing while keeping the rate simple and transparent.
How can I optimize my message usage?
You can reduce message counts by batching notifications, using webhooks selectively, and implementing efficient offline message sync strategies. Our documentation provides best practices for optimization.
Do file uploads count as messages?
We don't currently offer file upload storage. Please see our roadmap for when storage will be rolled out. For now, you'll need to integrate your own storage provider (like AWS S3, Cloudflare R2, etc.) and send the file URL as a message in your own format. We'll deliver it as-is, and it counts as a standard message delivery.
Can I monitor my message usage in real-time?
Yes! Our dashboard provides real-time analytics showing your message usage breakdown by type, helping you understand and optimize your costs. Note that there might be some delay while we wait for syncing - usually within 5 minutes.
Ready to Get Started?
Start with our free tier and scale as you grow. No credit card required.
View Pricing Plans