You paid for the install. Now bring them back.
Chumbaq is the open-source engagement platform for mobile apps. Push, in-app, email, SMS and WhatsApp, with journeys and A/B tests scored on purchases, not taps.
Or read the docs first.
- Free up to 2,500 monthly active users
- No card, no sales call
- Works with

Welcome to Trailhead
Save the gear you like and we'll tell you the moment your size is back.
Start exploring- Trailhead is a sample app.
What does the leak cost you?
Put in your installs, what each one costs you, and how many are still around a month later. The rest is money you've already spent.
Example numbers to start. Nothing you enter leaves this page.
Spent on 7,500 installs that stopped opening the app
$11,250/ month
That's $135,000 a year. Every 1 in 10 of them you bring back is $1,125 of that spend earning again, each month.
The push with more taps made less money.
Variant A gets more taps. Variant B sells more. Chumbaq measures both against a control group that got nothing, so you know which message actually worked.
Flip the switch on the right to see it.
Ridge boots restock
Purchases within 72 hours of the send
- Variant A48 hours only: 20% off trail gear520taps
- Variant BYour size is back: Ridge Mid boots384taps
- Control groupNo push sentn/ataps
Variant A wins on taps. Score it on sales and the answer changes.
Sample A/B test, 4,000 people per group.
Sending is the easy part
Your AI can wire up a push in an afternoon. It can't tell you which push made money. Chumbaq is everything after the send, already built and tested.
Dead push tokens, cleaned up
When a device's token stops working, Chumbaq stops sending to it, so your delivery numbers stay honest.
Journeys that wait days
Wait three days, check, branch. Run by a scheduler that saves every user's place, not a cron job you debug at midnight.
One set of rules on every send
Quiet hours, frequency caps, consent and unsubscribes, applied to every message on every channel.
Scored on sales
Control groups and purchases tied back to the message, so you know what actually worked.
Nothing for you to maintain
On our cloud, provider changes, retries and reports are ours to keep working. Your time goes into your app.
Everything to bring them back
Every tool a retention team needs, in one place.
- Push
- In-app
- SMS
Sent
28,410
Engaged
8,165
Revenue
$32,483.00
| Campaign | Sent | Engaged | Sales | Revenue |
|---|---|---|---|---|
| Ridge boots restockPush | 8,000 | 904opened | 104 | $6,270.00 |
| Welcome seriesIn-app | 3,210 | 1,027clicked | 141 | $7,614.00 |
| Spring sale reminderEmail | 12,400 | 4,092opened | 187 | $11,033.00 |
| Order shippedSMS | 2,860 | 629clicked | 38 | $1,902.00 |
| Back in stockWhatsApp | 1,940 | 1,513read | 96 | $5,664.00 |
Five channels, one audience
Reach each user where they actually read.
Audience: New this week
Segments
Build an audience in a visual builder.
Send-time optimisation
Each user gets the message at their own best hour.
- Enters segmentNew this week
- Wait2 days
- Send pushAt their best hour
- BranchCame back? Exit. Else continue
- Send emailSpring sale reminder
Journeys
Multi-step flows that react to what users do.
18:00
Your size is back: Ridge Mid boots
The pair you saved is in stock in 9.5. Free returns for 60 days.

Rich push
Images and action buttons that open the right screen.
Six in-app layouts
Drawn by the native SDK, not a web view.
Quiet hours
Frequency cap
Quiet hours and frequency caps
Nobody gets a push at 3am, and there's a cap on how often anyone hears from you.
We walk you to your first user back.
Three calls in your app, then we stay with you until your first campaign brings someone back.
- 01
Add three calls
Start, identify, turn on push.
- 02
We check your setup with youWith us
A test event, before any real user sees a message.
- 03
We build your first campaign togetherWith us
The audience, the message, the moment.
- 04
Watch your first user come back
Scored against a control group.
- Flutter
flutter pub add chumbaq - iOS
.package(url: "https://github.com/sohelyadav/chumbaq-ios-sdk", from: "0.1.0") - Android
implementation(platform("com.chumbaq:chumbaq-bom:0.1.0")) - Web
npm install @chumbaq/sdk
See the three calls
final config = ChumbaqConfig.builder(
baseUrl: 'https://your-chumbaq-host',
apiKey: '<project API key>',
projectId: '<project id>',
).build();
await Chumbaq.instance.init(config);
// Who this is, once they log in.
await Chumbaq.instance.identify(
IdentifyParams.builder().externalUserId('u_42').build(),
);
// Push: the SDK reports whatever the app hands it.
await ChumbaqPush.instance.init();
FirebaseMessaging.onMessage.listen(
(message) => ChumbaqPush.instance.reportNotificationReceived(message.data),
);import ChumbaqCore
import ChumbaqPush
let config = ChumbaqConfig.Builder(
baseUrl: "https://your-chumbaq-host",
apiKey: "<project API key>",
projectId: "<project id>"
).build()
Chumbaq.shared.initialize(config: config)
// Who this is, once they log in.
try await Chumbaq.shared.identify(
IdentifyParams.Builder().externalUserId("u_42").build()
)
// Push: APNs hands the app its device token.
ChumbaqPush.shared.initialize()
try await ChumbaqPush.shared.registerToken(deviceToken) // Data or Stringval config = ChumbaqConfig.Builder(
baseUrl = "https://your-chumbaq-host",
apiKey = "<project API key>",
projectId = "<project id>",
).build()
Chumbaq.init(context, config)
// Who this is, once they log in.
Chumbaq.identify(IdentifyParams.Builder().externalUserId("u_42").build())
// Push: one call, and that is the whole integration.
ChumbaqPush.init(context)
ChumbaqPush.registerToken(fcmToken) // or let the service pick it upimport Chumbaq from '@chumbaq/sdk';
const chumbaq = new Chumbaq({
baseUrl: 'https://your-chumbaq-host',
apiKey: '<project API key>',
projectId: '<project id>',
});
await chumbaq.init();
// Who this is, once they log in.
await chumbaq.identify({
externalUserId: 'u_42',
deviceFingerprint: chumbaq.deviceFingerprint,
platform: 'web',
});
// Push: the token from your own Firebase Messaging setup.
await chumbaq.registerPushToken({
token: fcmToken,
platform: 'web',
provider: 'fcm',
});Building with AI? Use our setup prompt.
Free for a real app
OneSignal's free plan now stops at 1,000 users. Chumbaq is free up to 2,500 monthly active users, with every channel included.
2,500MAU
Free plan
$0/ month
Free
For launching and testing.
$0 / mo
Up to 2,500 MAU
Starter
For apps finding their audience.
$49 / mo
Up to 25,000 MAU
Growth
For apps with real volume.
$199 / mo
Up to 100,000 MAU
The free plan includes
- Up to 2,500 monthly active users
- Push and in-app messages, segments and journeys
- Email, SMS and WhatsApp through your own provider account
- No card, no sales call, export anytime
Proposed plans; final prices are confirmed at launch. INR plans are billed by Qleverlabs Technologies Pvt Ltd with GST invoices; USD plans by Qleverlabs Technologies Inc.
Your server or ours
Your data can stay on your own servers.
- Export your data anytime
- Every subprocessor is listed on the security page
- Your contract is with a registered company, not a person
Our cloud
We run it, and when you email, the people who build it reply. Contracts and invoices come from Qleverlabs Technologies Inc, or Qleverlabs Technologies Pvt Ltd in India.
Your server
Run it on your own server. Your data stays in your infrastructure, including your own Indian cloud account. Community support.
Straight answers
Why not just build this with AI?
You can build the sending part in an afternoon. What takes months is the rest: cleaning up dead push tokens, journeys that wait days without double-sending, quiet hours and caps across channels, consent, and knowing which message made money. Chumbaq is that part, open source, so your AI can still read and change it.
What counts as a monthly active user?
A device that opens your app, or receives a message from Chumbaq, at least once in a calendar month.
Which channels can I send on?
Push, in-app messages, email, SMS and WhatsApp, all from one audience and one journey builder.
Can I move from OneSignal, CleverTap or MoEngage?
Yes. Add the SDK, import your users and keep your FCM and APNs setup. The migration guides have copy-paste code for Flutter, iOS, Android and the web.
Is it really open source?
Yes. The SDKs are Apache 2.0 and the server is AGPLv3. You can self-host on your own servers with community support, or use our cloud with email support from the people who build it.
Who holds my data?
Your contract is with Qleverlabs Technologies Inc (or Qleverlabs Technologies Pvt Ltd in India). The security page lists where data lives and every subprocessor. There's no SOC 2 report yet, and we say so.
What happens at the free limit?
Nothing breaks. Messages keep sending, and we email you before anything changes. You choose whether to upgrade.
Can I try it before signing up?
Yes. The live demo is a read-only workspace with sample campaigns, segments and an A/B test. No account needed.
Does Chumbaq work with Claude or other AI assistants?
Not yet, but it's coming. We're building an MCP server so assistants like Claude can read your campaigns, segments and results, and answer questions like “which campaign brought the most users back?” Tell me when it ships
Your first campaign
Name your project and pick your stack. You'll get an API key and can send your first push in minutes.
This is what you'll log into.