Logging a Call With No Signal: How a Rep's Result Waits, Syncs and Can Be Undone
Quick answer
When a rep taps Call or logs a result with no signal, MAJ Leads saves the tap on the phone, shows "Saved · will sync", and sends it when the connection returns, with the time of the original tap. One result is kept per lead. If the server later refuses one, the rep is told the lead's name. Undo is the only tap that is never queued.
Note
Why does a lead tool need to work with no signal?
A rep's phone is most useful while they are moving: between viewings, on a site, in a basement car park, in a lift. Those are the places a phone loses its connection, and also where a call has just ended. If the app only works online, the rep either waits and forgets, or logs nothing. The result a manager needs, "spoke, booked for Thursday", is the first thing lost. So the two taps that happen after a call are built to survive a dead connection.
What does MAJ Leads save on the phone?
Only two kinds of write can wait: the tap on Call or WhatsApp that says "I started to act on this lead", and the result the rep logs afterwards (Booked, Call again, Not interested and the rest). Nothing else is queued. A note typed on its own, a setting change or an edit to a lead needs a connection. This is deliberate: those two taps are the ones a rep makes in the worst places, and the ones whose timing matters.
A queued tap is stored in the browser's own database, IndexedDB, which MDN describes as "a low-level API for client-side storage of significant amounts of structured data". The rep sees a toast, "Saved · will sync", and the card moves on to the next lead straight away, so a lead already logged does not come back on the list while it waits.
When does the saved tap go out?
Two routes, because phones differ.
- Background Sync, where the browser has it. The app registers a sync request and the browser's service worker sends the queue once the connection is stable, even if the app is closed. MDN marks the Background Synchronization API as "Limited availability", and it works only on HTTPS with a service worker.
- On reconnect or when the app is opened. Where Background Sync is missing, which our own code assumes for iPhone, the queue is sent when the browser reports it is online again or when the rep brings the app to the front. A rep on an iPhone should open the app once they have signal.
One detail here is easy to get wrong in software. A phone's "I am offline" flag is a hint, not a fact: MDN calls the browser's online status "inherently unreliable". So MAJ Leads does not trust it alone. It queues when the flag says offline, and it also queues when a real request fails with a network error. But when the server answers at all, even with an error, the answer is shown, not queued.
What keeps the record right after a late sync?
| Rule | Why it exists |
|---|---|
| Each queued tap carries a unique key, so a repeat is safe | A reply that was lost on the way back cannot create a second entry |
| The time of the original tap is sent with it | A Call tap keeps the time it was made, not the time the signal returned, so time-to-first-attempt is not flattered or hurt by a lift |
| One result waits per lead | A second result for the same lead is not queued, so one never overwrites or is thrown away by the other |
| Taps queued in one workspace are dropped if the rep is in another when the sync runs | A result must not land on the wrong lead book |
| The queue is deleted when someone signs out | On a shared phone, one person's taps never replay under the next person |
| Queued results show a lead as handled | The rep is not asked to log the same lead twice while it waits |
This is what keeps the figures in our guide to time to first attempt honest: the number is the tap time, not the sync time.
What if the server refuses a saved result?
Three things can happen on the way back, and the rep is told in plain words by lead name, never silently.
- It lands. The entry is removed from the queue.
- It was already saved. If the same result is already logged, it counts as done. If a different result was saved first on another device or by a teammate, the queued one is dropped and the rep is told by name, so it is never reported as "Synced".
- It is refused. The task was handed on or has expired. The rep sees "One result didn't save: Tom. Open it to try again." for twelve seconds, and the lead is still in the app to log again.
Temporary trouble, such as a sign-in that needs renewing, a busy server or no connection yet, keeps the rest of the queue and tries again in order. A lead that was handed on while a rep was offline is one way a result gets refused: see our guide to untouched leads and up-for-grabs for when that happens.
Why is Undo never queued?
Every result can be undone for ten seconds. The toast shows Undo for a little less than that, 8.5 seconds, so the button is never offered when the server would refuse it. The undo is a live request. If the rep is offline when they tap Undo, it fails with "Too late to undo.", rather than being queued and replayed after the window has closed. A queued undo that arrives minutes later would be a different action from the one the rep meant. The workaround is simple: after the sync, open the lead and log the right result again, which the timeline then shows.
Legal caveat
Where does this leave your reps?
A rep can finish a call in a lift, tap the result, and move on. The tap is kept on the phone, sent when the signal is back, stamped with the time it happened, and never silently lost. See how it works, and our guide to lead alerts without an app for the other half of the phone setup.
Sources
Frequently asked questions
Can a rep log a call in MAJ Leads with no signal?
Does a late sync change the time of the call?
Does it work on iPhone?
What if two people log a result for the same lead?
Can Undo work offline?
Anam Jalal
Founder & CEO, MAJ Leads
Anam Jalal is the founder of MAJ Leads, a Dubai-based lead management system that puts every paid lead on a rep's phone within about thirty seconds and chases it until it has an answer. He works hands-on with UAE clinics, brokerages and trading companies on lead follow-up, WhatsApp and CRM integrations, and ran voice AI deployments in the UAE before the company focused on lead management.
Read more about AnamRelated articles
Guide
Lead Alerts on a Rep's Phone With No App: How Web Push Works on iPhone and Android
Speed to lead starts with the rep knowing a lead exists. MAJ Leads sends that alert as a web push, so there is no app store step. This guide reads Apple's and MDN's documentation, shows what the alert contains and lists what can make a phone stay silent.
Guide
Time to First Attempt: The Only Sales Metric Your Reps Cannot Argue With
Ask a sales team how many calls they made this week and every rep has a defensible answer. Ask how long it took them to attempt each lead, and the number is sitting in a system, not in anyone's memory. That difference is the whole argument for a rep leaderboard built on time to first attempt.
