Your CRM cannot see a mobile call it was never part of. With RMDialer, the dialer API for CRM products, every call your users make arrives as an event.
RMDialer is the dialer API for CRM teams who need the phone layer they cannot build: it runs as your users' real dialer, and streams calls, leads, remarks and WhatsApp events into your system over REST.
- Call logs API for CRM
- Webhook or polled cursor
- Captures out-of-app calls
- WhatsApp send events
- Two-way: push leads back
REST + webhooks · Sandbox keys on request · Included with the licence, not an add-on
Your own SIM, own Android phone, no virtual number · Mobile app + Web CRM in one plan · No card for the trial
How do you integrate a dialer with a CRM by API?
You need something running on the phone where the calls actually happen, because a CRM cannot see a mobile call it was not part of. RMDialer is that dialer: it replaces the phone app on each user's own Android handset, and its dialer API for CRM systems streams call events, lead updates, remarks, statuses, follow-ups and WhatsApp activity into your product over REST, with webhooks for anything that needs to be immediate. Data flows the other way too, so your CRM can push leads and their owners into a specific caller's queue. Your product gets a complete call layer without anyone building and maintaining an Android dialer, and your users keep their own SIM and their own number. Access is included with the per-user licence rather than priced as an add-on.
- REST plus webhooks, token auth, sandbox on request
- Calls made outside the app are captured too
- Two-way: pull activity, push leads with an owner
- No per-event pricing: the voice never passes through us
What events does the call logs API for CRM actually send?
Six event types. Five flow out of the handset, one flows back in.
call.ended
Direction, the number at the other end, start time, ring time, talk time, and whether it connected. Emitted for calls placed from the app and for calls the user made from the phone dialer out of habit.
lead.updated
The lead record with your custom fields, the status it moved to, and the remark the caller typed while the conversation was still fresh.
wa.sent
Which template went out, to whom, against which lead, and whether the send succeeded. The message a caller promised on the call, logged as an event.
followup.set
The callback that was promised, the time it was promised for, and later whether it actually happened. Follow-up compliance as data rather than as a report.
lead.assigned
The reverse direction. Your system pushes a lead and an owner, and it appears in that caller's queue on their handset, ready for the auto dialer.
device.sync
When a handset last reported in. Useful because a silent device is the failure mode that matters: it means data is queued, not missing.
What businesses say about RMDialer
Real businesses, real numbers: how owners and sales teams across India and 12+ countries use RMDialer every day.
-
“We use RMDialer as the dialer layer under our own CRM through the API. Our system pushes the lead and the assignment, the agent's phone dials it, and every call event comes back by webhook with duration, outcome and remark. Integration took our developer about two days with the GitHub samples.”
Nikhil Bansal Product manager · Lending fintech Gurgaon -
“In this business the remark is everything: what the family said last time, which profiles were shared. RMDialer shows that remark the moment they call. The lead CRM inside the dialer replaced my three registers. Hindi and Urdu interface both work for my staff.”
Irfan Khan Owner · Matrimony bureau Bhopal -
“Best CRM dialer we have used for a small team. Call comes in, the lead card is already on screen with the last remark, and the status change is two taps. Only complaint: the web CRM export could use more filters. Otherwise our 6 person sales team lives in it.”
Neha Srivastava Founder · Digital marketing agency Lucknow -
“We connected our website form and a Google Sheet as lead sources. New sign-ups appear in RMDialer within 15 minutes, get assigned round robin and dialled the same hour. Speed to lead went from a day to under an hour, and demo bookings roughly doubled. The call logs API pushes everything back into our own dashboard.”
Rohan Kulkarni Co-founder · SaaS startup Pune -
“Collections calling is volume work. The auto dialer clears 250 numbers per executive per day from their own SIM, promise-to-pay dates become reminders, and the daily call report shows connected versus not reachable per person. Talk time per employee ended the "phone was busy all day" excuse.”
Ramesh Pandian Recovery manager · NBFC collections Madurai -
“Telecalling CRM in Bangla for our merchandising team, on Grameenphone SIMs. Buyer follow-ups, sample dispatch reminders and the WhatsApp with the catalogue after the call, all from the same app. The owner dashboard shows which merchandiser spoke to which buyer. Nothing else at this price does this here.”
Fatima Rahman Director · Garments export house Dhaka, Bangladesh
Reviews are collected from customers on WhatsApp and on this website. Share yours on WhatsApp
Should you use webhooks or poll a cursor?
Each has a failure mode, and both failure modes come from the same place: a handset that was offline when the call happened.
Webhook per event
Use it when. Your product reacts to calls in near real time: opening a screen, updating a pipeline, triggering a workflow.
Watch out. You must accept duplicates. A handset that lost signal mid-afternoon will deliver the same event again when it reconnects, so key on the event id rather than on arrival order.
Poll a cursor
Use it when. Your product reconciles in batches: nightly imports, reporting warehouses, anything where a few minutes of delay costs nothing.
Watch out. Page on the cursor we return, not on a timestamp. Offline handsets deliver late, so a time window will silently skip the calls that queued.
Push leads in
Use it when. Your CRM is the system of record and the dialer is the calling surface. Leads and owners flow out to handsets.
Watch out. Send an owner with the lead. A lead with no owner lands in a general queue and gets called by whoever notices, which is exactly the ambiguity the assignment was meant to remove.
Why not just read the Android call log yourself?
A fair question, and for some products the answer really is that you should.
Android documents android.provider.CallLog and reading it is not hard. If you are building a
single-user utility, do that: you will be finished this week and you will not owe anybody a licence fee.
It stops being the easy path at the point it becomes a business product, and the reasons are all operational rather than technical. Call Log and Phone are sensitive permission groups, so shipping on Play means a declaration and a review round that turns into a recurring tax every time policy shifts. Background sync dies quietly on a lot of Indian handsets under aggressive OEM battery management, which you will discover through customers reporting missing data rather than through a crash report. Calls that happened with no signal need per-device reconciliation, so at-least-once delivery and a cursor are not optional extras but the thing you will end up building. And none of that work gets you the parts that matter commercially: the outcome the caller chose, the remark they typed, the follow-up they promised, the WhatsApp that went out afterwards.
So the honest split is this. Reading the call log gives you that the call happened. What a CRM needs is what the call was about, and that only exists if something was on the screen while the person was talking. If you want the data model itself in detail, the call logs API reference covers the fields and the Android side properly.
How do you get from a key to calls inside your product?
- 1
Your users install the dialer
It becomes the phone app on each caller's own Android handset. No SIM racks, no call-centre hardware, no numbers to provision.
- 2
Take a key and choose a pattern
Tell us the use case, take sandbox credentials, and decide between webhooks and a polled cursor. Both are live from the same account.
- 3
Calls appear inside your product
Every conversation your users have shows up where the rest of their work already lives, with the outcome and the remark attached.
Tell us what you're building
A couple of lines about the product and which way the data needs to flow. You get docs, sandbox credentials and an engineer to talk to.
Request API access
We reply with docs and sandbox access.
Opens WhatsApp with your details prefilled.
Nothing is stored on this site: your details go straight into the chat, nowhere else.
Your customer list is your business. We treat it that way.
A dialer sees everything. That is exactly why every part of this app is built to keep your data yours.
Nothing uploads without your yes
Backup starts only after you sign in and give explicit consent. You review which SIMs are included and which numbers are excluded BEFORE the first upload. Logged out, nothing leaves the phone.
Personal stays personal
Mark any number as excluded: it is never uploaded, never messaged automatically, never touched. Choose per SIM what backs up, so a personal SIM can stay completely out.
Encrypted on the phone
The app database is encrypted on your device, and API details are locked with the Android Keystore, so even a lost phone does not hand over your customer list.
Encrypted in transit
Every sync runs over HTTPS to your own account. A transparent sync log shows exactly what ran and when, and you can make it sync everything again any time.
Your data is not the product
We do not sell your data or your customers' data, do not show ads, and never share contact lists with advertisers. You export to CSV any time. It is yours.
Compliant WhatsApp
Bulk and automated messages go through the official Meta WhatsApp Business API with approved templates and your own API details. We do not read your personal WhatsApp chats.
Read the full privacy policy · Every permission the app asks for is explained there, in plain language.
Call logs API for CRM, dialer integration API: the same endpoints
Product teams say "dialer API", integration teams say "call logs API for CRM", and a solution architect writes "call activity API" in the requirements document. They all describe one thing: getting mobile calls, and what was said on them, into a system that was not on the call. If you arrived looking for Android's own call-log API rather than an integration, that is a different thing and the developer reference is the page you want.
You will also see it called call logs api for crm, crm dialer integration api, dialer rest api and call activity api. They describe the same thing, so whichever phrase brought you here, this is the page for it.
Dialer API for CRM: what integrators ask first
What kind of API is it?
A REST API over HTTPS with token auth, plus optional webhooks. Nothing exotic: JSON in, JSON out, a bearer token in the header. Tell us the use case and we will send docs and sandbox credentials so you can see real payload shapes before you write anything against it.
Can I just read the Android call log myself instead?
You can, and for a single-user utility that is the right answer: android.provider.CallLog is documented by Google and needs no vendor. It stops being the right answer for a business product, because you then own a Play Store review process for a sensitive permission group, the OEM battery-management problem that silently kills background sync on many Indian handsets, and per-device reconciliation for calls that happened offline. Our developer page covers the call-log data model in detail if you want to compare properly.
How do I get call logs into my CRM by API?
Two supported shapes: subscribe a webhook and receive each call as it is reported, or poll a cursor endpoint and page through everything since your last position. Webhooks suit live pipeline updates, the cursor suits nightly reconciliation. Most integrations end up using both, webhooks for immediacy and a nightly cursor sweep as the safety net.
Does it capture calls made outside the app?
Yes, and this matters more than it sounds. A caller who dials from their contacts out of habit still produces a call event, because the handset's own call log is the source. What those calls lack is the structured outcome, since nobody was prompted for one, and that absence is itself a signal worth surfacing in your product.
What happens to events when a handset is offline?
They queue on the device and deliver when the connection returns, which can be hours later. This is the single most common integration bug we see: a consumer keyed on arrival time drops the afternoon a caller spent in a basement. Key on the event id, treat delivery as at-least-once, and page on the cursor rather than on a timestamp.
Can I push leads back into the dialer?
Yes, and with an owner attached, so the lead lands in one specific caller's queue rather than a shared pile. The app can also poll your own endpoint directly as a lead source, which some teams prefer because it keeps your CRM the system of record and avoids you maintaining an outbound integration at all.
Is there a sandbox?
Yes, with seeded data, so you can build against realistic payloads before any real handset is involved. Ask for access with a sentence about what you are building; the sandbox has its own credentials and cannot touch production accounts.
What are the rate limits?
Generous enough that normal integrations never meet them, and documented in the pack you get with your key rather than quoted here where they would go stale. If you are planning a bulk historical backfill, tell us first and we will size it with you rather than have you discover a limit at three in the morning.
How is the data secured in transit and at rest?
HTTPS throughout, bearer tokens that you can rotate, and scoping so a key reaches only the accounts it should. What crosses the wire is call metadata and the text your users typed.
Who owns the customer relationship?
You do, inside your own product. Your users experience your CRM with a working phone layer, and the dialer can carry your brand entirely if you take the whitelabel route, which several partners have: apps running on this same backend already ship under different names on Play.
Does the API differ for whitelabel apps?
No. Every brand on the platform talks to the same endpoints against the same backend, so an integration built once works across all of them. That is deliberate: a partner who later moves to their own branded app does not rewrite anything.
What does API access cost?
The API is included rather than sold as a tier: your users pay the normal ₹159 per user per month for the app and the integration comes with it. There is no per-call or per-event charge, because the calls run on your users' own SIMs and we are not carrying any voice traffic to meter.
Can I backfill historical calls?
Yes, through the same cursor endpoint by starting from the beginning rather than from your last position. Worth doing once at go-live so a customer switching to your product does not see an empty history where their last six months of calls should be.
What is NOT available through the API?
Live call audio and anything requiring the voice path, because on SIM calls the voice never passes through us. Recordings exist only where the handset's own dialer captured them and the user attached them. If your product needs guaranteed audio on every call, a cloud telephony vendor is the correct integration and we will say so rather than sell around it.
How do I start?
Use the form on this page with a couple of lines about the product and the direction data needs to flow. You get docs, sandbox credentials and an engineer to talk to, and the sample requests on the developers page are enough to make a first call within an hour of receiving a key.
Give your product the call layer
Your users already make the calls. Plug them in.
₹159/user/month on yearly · every feature included · Prices are per user, exclusive of taxes.
Call recording supported · our team sets it up with you during training