Part 4: Understanding Call Attribution At The Visitor-Level

Providing info at the visitor level, online directories can optimize listings to generate the most calls. This is the final article in a five part series.

Learn How To Build It

Part 4: Understanding Call Attribution At The Visitor-Level

In the previous article, we saw how CarsCarsCars allows car dealerships to collect valuable information on listing performance by attributing calls to individual listings. They can finally collect metrics like number of calls generated by each listing, call duration, and the number of times a listing was visualized but not called. They can also assess how those metrics impact car sales.

CarsCarsCars finds that some of their dealerships are interested in getting even more granular—they want to know if calls can be attributed to individual visitors. CarsCarsCars realizes they can provide additional value by telling dealerships which types of visitors are more likely to call.

For example, they can tie demographic information to a call and track the actions taken by a visitor on CarsCarsCars before placing the call. They can also associate the search term used by the visitor to get to the listing, or determine if the visitor arrived through Google, Facebook, or directly to the website. Understanding how a visitor that called discovered the listing can allow dealerships to optimize their listings for generating phone calls.

When CarsCarsCars decides to provide this extra level of information, they are able to differentiate their pricing by upgrading these dealerships to a premium membership.

Programmable phone numbers are the most accurate way to bind online activities to phone calls. As we saw with listing-level attribution, it’s necessary to assign a unique phone number to each listing. Similarly, to provide visitor-level attribution, a unique phone number needs to be assigned to each visitor. Two visitors viewing a listing at the same time will therefore see two different phone numbers.

User Level Call Attribution

With CarsCarsCars receiving millions of views a month, listings are likely to have significantly more than two visitors at the same time. This increases the quantity of phone numbers required. Unless phone numbers can be dynamically assigned and reassigned to visitors, the quantity of phone numbers needed for visitor-level attribution becomes impractical.

To optimize their quantity of phone numbers, CarsCarsCars needs to answer the same two questions it answered with listing-level attribution in the previous section: 1. How many numbers do we need? 2. How should we allocate the numbers?

How many numbers do we need?

To optimize phone number quantity, CarsCarsCars needs to assign a unique phone number to each listing viewed by a visitor for the duration of an active session. When the session expires, these phone numbers are freed up to be reassigned to other visitors.

As we saw with listing-level attribution, phone numbers that have received a call should be treated differently than phone numbers that have just been viewed. Since calling is the clearest indication of user intent, it’s important to provide a flawless experience to these visitors. They are likely to go back to the listing (if they haven’t saved the phone number already) and call the seller again. The phone number is locked to the listing for this visitor and displayed whenever they go back to it. As with listing-level attribution, CarsCarsCars decides to lock this phone number to the listing for a maximum of 30 days, since that’s how long it takes on average to sell a car.

The quantity of phone numbers needed is again divided into two pools:

Pool 1: Phone numbers that have been displayed but not called.

Pool 2: Phone numbers that have been called.

Traffic to CarsCarsCars listings is highly spiky. Listing views tend to peak during lunchtime or after dinner when most people search for cars. To reasonably estimate the quantity of phone numbers needed in Pool 1, CarsCarsCars needs to plan for these peak traffic periods. Based on historical data, they know that each visitor visits five listings on average during a session, with each session lasting approximately 10 minutes. They decide to use the maximum number of visitors over any 10-minute period in the day for their calculations. This calculation method is more efficient than using maximum daily or hourly visitors, since the maximum quantity of phone numbers needed is driven by concurrent visitors. CarsCarsCars therefore adds five phone numbers for each one of these concurrent visitors to Pool 1.

As we saw with listing-level attribution, CarsCarsCars doesn’t have to directly estimate how many phone numbers are required for Pool 2, since numbers move there once called, and stay there for 30 days or until the car is sold. To make sure they have adequate call tracking numbers, CarsCarsCars designs their number management system to maintain a sufficient quantity of numbers in Pool 1, as numbers naturally move to Pool 2.

How should we allocate the numbers?

Three key factors drive the number allocation process and determine the quantity of phone numbers required for visitor-level attribution:

  • The average number of listings viewed by each visitor in a session
  • The average length of each session
  • The maximum number of concurrent visitors over the duration of a session

Here's how CarsCarsCars allocates numbers at the visitor level Number Pooling for Visitor Level Attribution


With Twilio APIs, you too can build a dynamic number allocation system and customize it for your online directory. If you run out of phone numbers during periods of high traffic, you can easily provision and configure phone numbers on the fly, instead of falling back to a single phone number. Twilio’s inventory of millions of phone numbers ensures that you can scale effortlessly without ever running out.