NotiWeave Get the app

Android how-to

How to set a custom ringtone per contact — including WhatsApp and Instagram calls

A contact ringtone only covers calls to your SIM. How per-contact ringtones work for WhatsApp, Telegram and Instagram calls — and what to do otherwise.

The short answer: The ringtone you set in the Contacts app only plays for calls to your SIM. WhatsApp has its own per-contact ringtone; Telegram sets one globally; Instagram and most other apps offer nothing at all. App calls are notifications, not telephony, which is why they follow different rules.

You set a distinctive ringtone for someone in Contacts, then their WhatsApp call comes through sounding exactly like everybody else’s. Nothing is broken — the two things were never connected.

Why app calls ignore your contact ringtone

A call to your phone number goes through the telephony stack. The dialler looks up the caller, finds the ringtone attached to that contact, and plays it. That lookup is the whole feature.

A WhatsApp or Instagram call never touches telephony. It arrives over the internet, and the app announces it with a notification flagged as a call — which is what makes it full-screen and persistent. The sound comes from that app’s notification channel, so the contact record is never consulted. No amount of editing a contact will change it.

That single distinction explains every quirk below.

Calls to your phone number

Open Contacts → the contact → ⋮ → Set ringtone, and pick any tone on the device. Some builds also offer a per-contact vibration pattern on the same screen.

This is the oldest and most reliable per-person setting on Android. It just has a narrow scope: SIM calls only, nothing else.

WhatsApp: a proper per-contact ringtone

WhatsApp is the one app that does this thoroughly. Open the chat → tap the contact’s name at the top → Custom notifications → tick Use custom notifications. You get two independent controls:

  • Notification tone — for their messages
  • Ringtone — for their calls

Set both and that person is fully distinct in WhatsApp, in each direction. Group chats have the same screen if you want a busy group to sound different.

Telegram, Signal and Instagram

  • Telegram lets you set a call ringtone, but under Notifications and Sounds — it applies to all Telegram calls rather than per contact. Per-chat customisation covers message sounds.
  • Signal similarly gives you a global call ringtone, with per-conversation message sounds.
  • Instagram has no ringtone setting of any kind. Calls and missed calls arrive as ordinary Instagram notifications, with one sound for the whole app.

So the practical state of things: one app does it properly, two do it globally, and the rest don’t do it at all.

Getting a per-caller ringtone in the apps that lack one

Since app calls announce themselves through notifications, an app that reads notifications can respond to them — including by playing a ringtone of your choosing.

That’s how NotiWeave handles it. For calling apps like WhatsApp and Instagram, it loops your chosen ringtone while the incoming-call notification is showing, and you can set a different one per caller. The same screen that assigns a person’s message sound assigns their call ringtone, so one place covers both.

Setting it up:

  1. Grant Notification Access on first launch — the one permission needed to read notifications, revocable at any time.
  2. Allow background running (plus Autostart on Xiaomi-style builds) so an incoming call is never missed while the phone is idle.
  3. On the Apps screen, enable call ringtones for the calling apps you care about. Each app is opt-in, and you choose per app whether NotiWeave handles threads, message sounds, call ringtones, or any combination.
  4. In Rules, set a default ringtone per app; in a sender’s thread, tap the bell to give that caller their own.
  5. Silence the app’s own call sound in its system notification settings, or you’ll hear both at once. The support page covers this.

Worth being clear about the boundaries: this covers calls that arrive as app notifications, not calls to your phone number — those stay with the Contacts ringtone, which already works well. It’s Android-only, since iOS has no API for reading other apps’ notifications. And it runs entirely on the device, with no account and no server; see the privacy policy.

Common questions

Will this change the ringtone for normal phone calls? No, and it doesn’t need to. Set those in Contacts → Set ringtone.

Can I get a different ringtone for each person on Instagram? Not from within Instagram. It takes a notification-level approach like the one above.

Why do I hear two ringtones? The source app is still ringing alongside your custom tone. Silence the app’s own call sound in its system notification settings.

Does the custom ringtone loop like a real call? It loops while the incoming-call notification is up, which is what makes it usable as a ringtone rather than a one-shot alert.

Does a per-contact ringtone survive a new phone? Contact ringtones usually travel with a full device backup. Per-chat settings inside apps generally do not, and typically need setting up again after a reinstall.


Two systems, two sets of rules. Contacts handles your phone number, each app handles its own calls to whatever extent its developers bothered — and where they didn’t bother, the notification is still there to work from.

Keep reading

Android how-to How to set a different notification sound for each contact on Android Android lets a few apps give a chat its own alert tone. Here's what works natively in Messages, WhatsApp and Telegram — and how to get one everywhere else. Android how-to How to see notification history on Android — and get back one you cleared Android's notification history is off by default and only keeps about a day. How to turn it on, what it misses, and how to keep alerts for longer.

← All articles