How We Recovered a Lost Sale Through Visitor Intelligence

Someone tried to buy from us three days in a row. Each time, they added a GPS tracker to their cart, reached checkout, and hit a wall. We almost lost them completely.

This is the story of how our visitor tracking system caught what would have been an invisible failure, and how a single popup saved the relationship.

1. The Signal

Every morning I check our visitor analytics dashboard. One metric stands out: visitors with an engagement score above 90. These are people who have browsed deeply, viewed products, and shown strong purchase intent.

On the morning of March 25th, one anonymous visitor had a score of 96 out of 100. That is nearly the highest our system can assign. They had visited three times in three days, viewed 29 pages, and reached checkout four times. Yet they had never logged in, never created an account, and never completed an order.

Something was wrong.

2. What a Visitor Data Point Looks Like

Before diving into the timeline, here is an example of what our tracking system captures for a single visitor. This is a different visitor from the same week, showing the kind of behavioral data we collect in real time:

Example of a visitor data point with device, location, score, and activity timeline

Every page view, scroll, cart action, and checkout attempt is recorded with timestamps. The engagement score updates in real time. When a visitor comes back hours or days later, the system stitches the sessions together under the same profile.

This is the kind of data that made it possible to catch the lost sale described below.

3. The Timeline

Here is what our tracking system recorded for the visitor we almost lost, with personal details anonymized:

Visitor Profile

Field Value
Device iPhone, Safari
Operating System iOS 26.3
Location Dakar, Senegal
Network Sonatel (national carrier)
Language French
Engagement score 96/100
Bot probability 20% (human)

Day 1: Sunday evening

The visitor found us through Google, searching "gps tracking senegal". They landed on our Senegal GPS tracking page, browsed the store, viewed the Coban GPS303 product page, and added it to their cart.

Metric Value
Entry page GPS Tracking Senegal
Pages viewed 11
Session duration 15 minutes
Referrer Google Search
Exit page OTP verification

They reached checkout, entered their phone number for OTP verification, and waited. The code never arrived. They tried again 78 seconds later. Still nothing. They left.

Day 2: Monday afternoon

They came back directly to the checkout page. The cart was still there: one Coban GPS303, 50 000 FCFA. But without being able to log in, they could not proceed. One page view, zero seconds of engagement. They left immediately.

Day 3: Tuesday morning

They started the whole journey over. Same Google search, same product, same cart. They entered their phone number a third time for OTP. Nothing.

This time, as they moved to close the tab, our exit intent popup appeared.

Exit intent modal capturing the visitor's contact information

The popup asked a simple question: "Don't lose your order!" with two fields, email and phone. They filled in both and submitted.

That popup saved everything.

4. The Investigation

With the exit intent data in hand, I could now connect the dots:

  1. Visitor fingerprint matched across all three sessions, confirming it was the same person
  2. SMS delivery logs showed all three OTP messages were accepted by our SMS provider (Twilio returned HTTP 201 for each)
  3. But HTTP 201 only means Twilio queued the message. It does not confirm the SMS reached the handset
OTP Attempt Timestamp Provider Status Delivered?
Attempt 1 Day 1, 10:48 PM Accepted (201) Unknown
Attempt 2 Day 1, 10:50 PM Accepted (201) Unknown
Attempt 3 Day 3, 10:20 AM Accepted (201) Unknown

The pattern was clear: three OTP requests, zero successful logins. The SMS was likely never delivered to the handset, possibly due to carrier-level filtering or delivery delays on the Sonatel network.

5. The Outreach

I sent a personal WhatsApp message and a follow-up email, apologizing for the failed verification and offering to finalize the order directly. No automated template, no marketing copy. Just a founder saying: "We saw you tried. We're sorry. Let's fix this."

Within the CRM, I logged both touchpoints as outbound activities on the lead record, so any team member could see the full context.

6. What We Fixed

Beyond the immediate outreach, we shipped a code change the same day. Previously, when a visitor entered their phone number for OTP verification, we recorded the page view but not the phone number itself. The metadata was empty.

Now, every OTP attempt logs the phone number in the visitor activity record. If this happens again, we will not need an exit intent popup to know who the visitor is. We will already have their phone number from the first failed attempt.

7. The Friction We Are Still Eliminating

Three failed OTP attempts across three days is not a fluke. After this investigation, I pulled delivery data on every OTP request sent through Sonatel over the past 30 days.

The numbers are sobering: roughly one in eight OTP codes sent to a Sonatel number returns HTTP 201 from Twilio but never reaches the handset. The carrier accepts the message, but something between acceptance and delivery breaks silently. No error. No retry signal. No way to know from our side that the customer is standing there waiting for a code that will never arrive.

For a checkout flow that requires a phone number to log in, this is a direct conversion killer. We cannot ask someone to "try again later" when they are about to hand us 50 000 FCFA.

We are currently evaluating two paths forward:

  • WhatsApp verification: More than 90% of our target market in Senegal is on WhatsApp. Delivery rates through the WhatsApp Business API are far more reliable than SMS on local carriers. We are testing a WhatsApp OTP flow as the primary verification path, with SMS as fallback.
  • Magic link via email: For visitors who provide an email at any point during their session (including through the exit intent popup), a one-click login link removes the OTP problem entirely.

Until one of those ships, the exit intent popup is doing double duty: collecting contact details when checkout fails, and giving us a manual rescue path for every blocked order.

8. The Takeaway

This entire recovery happened because multiple small systems worked together:

  • Visitor scoring flagged an anomaly (96/100 engagement, zero conversions)
  • Session stitching connected three visits across three days to one person
  • Exit intent capture collected contact information at the moment of abandonment
  • SMS delivery logging confirmed the root cause
  • CRM activity tracking gave the outreach full context

No single feature would have been enough. The visitor scoring without the exit intent would have shown a problem with no way to reach the person. The exit intent without the session stitching would have looked like a random form submission. The SMS logs without the visitor timeline would not have revealed the pattern.

The lesson is not that you need sophisticated tooling. The lesson is that when you pay attention to the signals your product already generates, you can turn invisible failures into recovered relationships.

We build GPS tracking solutions for fleet operators and vehicle owners in West Africa. If you are looking for a platform that treats every customer interaction with this level of care, get in touch.