Skip to content

A glossary story9 chapters · 5 min read

Number Masking

Proxy phone numbers that connect two parties, such as a rider and driver, by call or SMS without either seeing the other's real number.

Also called: Call masking · Proxy number · Masked calling · Phone number masking · Anonymous calling

Reviewed

Follow along

Keep every call in an order on the same proxy

9 / 9

Returning customers go back to the agent who served them before.

Incoming · 0 left

  1. All 9 conversations have been routed.

Conversation 9 of 9 · Sticky

Order 7753 · customer calls backgoes toProxy 0425

Sticky: Order 7753 is back, so Proxy 0425, who already has the thread, takes it again.

  • Proxy 0412

    4 of 4 open

    Full
    • Generalist
    1. Order 7731 · rider calls customer
    2. Order 7731 · customer calls back
    3. Order 7731 · rider is at the gate
    4. Order 7775 · rider calls customer
  • Proxy 0418

    2 of 4 open

    • Generalist
    1. Order 7741 · customer calls rider
    2. Order 7741 · rider calls back
  • Proxy 0425

    3 of 4 open

    • Generalist
    1. Order 7753 · rider calls customer
    2. Order 7768 · customer calls rider
    3. Order 7753 · customer calls back

Waiting · 0

  1. Nobody waiting: every conversation found an agent.
Same 9 conversations, each strategy
StrategyRoutedWaitingSkill mismatches
Sticky900
Least busy900
Round-robin900
Proxy numbers stand in for agents and each order is a session. Sticky routing keeps all of an order's calls on one proxy, which is session binding; least-busy and round-robin scatter them, which would break the lookup.

Conversation 9 of 9, Order 7753 · customer calls back: Sticky: Order 7753 is back, so Proxy 0425, who already has the thread, takes it again.

Chapter 1 · The scenario

Example: Grocery riders in Pune

A Pune grocery-delivery app handles 9,000 orders an evening at peak with a pool of 120 proxy numbers. When an order is packed, the app binds customer and rider to a proxy on which neither has a live session and sets expiry to delivery plus 45 minutes. The rider taps "Call customer"; the platform sees (rider's number, proxy ending 0412), finds the session and bridges the call with the proxy showing on the customer's phone. A customer who calls the same proxy the next morning hears that the delivery is complete and is offered the support line instead.

— Grocery riders in Pune

Chapter 2 · What is number masking?

Number masking is a privacy pattern in which two people talk by phone call or SMS through a proxy number instead of their real numbers. A ride-hailing rider and driver, a food-delivery customer and courier, or a buyer and seller on a classifieds marketplace each see only the proxy. When one of them calls it, the platform recognises who is calling, finds the other party in the same session and connects them, showing the proxy as the caller ID on both sides.

The core of the system is the session. When an order starts, the platform binds the pair — customer, courier and a proxy taken from a pool of virtual numbers — and stores it with an expiry. Because a session is identified by the combination of caller and proxy, one proxy number can carry many sessions at the same time, as long as no participant has two live sessions on it. When the delivery is made or the ride ends, the session closes after a short grace period, and later calls to the proxy hear an announcement instead of reaching the other person.

Masking is different from a sender ID, which only labels a business's outbound messages, and from a virtual number used as a business's own line. It is a voice and SMS technique built on cloud telephony: virtual numbers, call bridging and SMS relay. WhatsApp has no proxy-number feature that bridges two consumers; a marketplace that wants buyer and seller to chat there without exchanging numbers relays both sides through its own business account, and the WhatsApp Business Calling API connects a user to a business, not two users to each other.

Key takeaways

  • Number masking connects two people through a proxy number so neither ever sees the other's real phone number.
  • A session binds both real numbers to a proxy; each call or SMS is matched by caller and proxy, then bridged or relayed to the other party.
  • One proxy can carry many sessions at once, provided no participant has two live sessions on the same proxy.
  • Sessions should expire soon after the order or ride ends, so a proxy can never reconnect two strangers later.
  • Masking hides both private numbers in a two-way exchange; a sender ID only labels a business's one-way outbound messages.

Chapter 3 · How it unfolds

How does number masking work?

  1. Keep a pool of proxy numbers

    Rent virtual numbers from a cloud telephony provider, sized for peak concurrent sessions per participant rather than average orders.

  2. Create a session per order

    When the order starts, bind customer, partner and a proxy neither of them is using, with a time-to-live such as order completion plus 45 minutes.

  3. Resolve each call or SMS

    On an inbound call or text to a proxy, look up the live session by (caller's number, proxy). No session means an announcement, not a connection.

  4. Bridge and log

    Dial the other party with the proxy as caller ID and bridge the two legs, or relay the SMS. Log time and duration, and record calls only with notice.

  5. Expire and recycle

    Close the session at completion plus the grace period and return the proxy to the pool, with a cool-down before pairing it with the same people again.

Chapter 4 · In code

Number masking in code

type Session = { id: string; a: string; b: string; proxy: string; expiresAt: number };
// Pick a proxy on which neither participant already has a live session.
export function allocate(pool: string[], a: string, b: string, live: Session[]): string | null {
const busy = new Set(
live.filter((s) => [s.a, s.b].some((n) => n === a || n === b)).map((s) => s.proxy),
);
return pool.find((p) => !busy.has(p)) ?? null;
}
// An inbound call or SMS reached a proxy: who is calling, and whom should they reach?
export function resolve(caller: string, proxy: string, live: Session[], now = Date.now()) {
const s = live.find(
(x) => x.proxy === proxy && (x.a === caller || x.b === caller) && x.expiresAt > now,
);
if (!s) return { action: "announce", say: "This order is complete. Please contact support." };
return { action: "bridge", dial: s.a === caller ? s.b : s.a, callerId: proxy };
}

The lookup key is the pair (caller, proxy), which is why one proxy can serve many sessions.

Chapter 5 · Why it matters

Why does number masking matter?

Exposed numbers leak beyond the transaction: couriers keep customers' numbers, customers call drivers days later, and marketplace users take deals off-platform. Masking keeps contact inside the business, gives an audit trail of calls for disputes and safety, and fits India's DPDP Act principle of using personal data only for the purpose it was collected for — the courier needs to reach the customer for this order, not afterwards.

Chapter 6 · The facts

Number masking: key facts and limits

Unit of bindingA session: two real numbers, one proxy, an expiry
Lookup key(caller's number, proxy number)
Proxy reuseMany sessions per proxy, never two per participant
ChannelsVoice calls and SMS relay
Typical expiryOrder or ride end plus a short grace period
Built onCloud telephony virtual numbers and call bridging

Chapter 7 · Where it goes wrong

Common mistakes with number masking

  • Sessions that never expire

    A proxy that still connects a customer and courier a week later defeats the purpose. Set a hard time-to-live and close sessions on completion.

  • Reusing a proxy too soon

    If a recycled proxy is paired with someone a caller knew from an earlier order, calls reach the wrong person. Keep a cool-down and enforce one live session per participant per proxy.

  • Leaking the number elsewhere

    Masked calls are pointless if the full number shows on the order screen, in an SMS or in agent tools. Mask it everywhere, logs included.

  • Recording without notice

    Call recordings are personal data. Announce recording, keep recordings only as long as disputes need and restrict who can play them back.

  • Undersized pools at peak

    When every proxy is already in use by a participant, new sessions fail. Size the pool for peak concurrency per participant, not for average order volume.

Chapter 8 · What good teams do

Best practices for number masking

  • Play a short announcement such as "connecting you to your delivery partner" so people trust the call.
  • Mask numbers in logs and agent dashboards, not only on the phone.
  • Route calls after expiry to support rather than to a dead line.
  • Watch answer rates per proxy and rotate out numbers that get flagged as spam.

Chapter 9 · Number Masking FAQs

Number Masking FAQs

How does number masking work?+
Both people call or text a proxy number. The platform finds the session that links the caller and that proxy, then connects the call or relays the SMS to the other party, so each sees only the proxy number.
Can one proxy number be used for many orders at once?+
Yes. Sessions are identified by the caller's number plus the proxy, so one proxy can carry many pairs at once. The rule is that a single participant never has two live sessions on the same proxy.
What is the difference between number masking and a sender ID?+
A sender ID labels a business's outbound messages so recipients know who sent them. Number masking hides two private people's numbers from each other in a two-way exchange of calls or texts.
Can WhatsApp chats be number-masked?+
Not with proxy numbers. To keep two users' numbers private on WhatsApp, a platform relays both sides through its own business account, so each user only ever talks to the business.

From definition to your first message

InfiQ is an official Meta Business Partner. Start a 7-day free trial — no card needed — and see this running on your own number.