Searching for Contacts via any phone # using API

I believe my problem is an API consideration that yes, needs to go through Partner Technical Support at some point, and I’ll do my best to share my understanding of the deeper root cause. Regarding a problem statement, it IMHO would be something like “I need to search my Keap database by phone number to see if this is a new person calling or someone that has already called in the past.”

Right now, there are 3 “flavors” of the API:

  • The original XML-RPC.

  • The modern REST API v1.

  • The latest-and-greatest REST API v2 that is being developed.

The specific API connection I am working with only provides an inbound phone number; medical specialist’s call center in south Florida.

The source of the phone number being provided (from a “specific API connection”) is mostly irrelevant. Anyone using the API should know how to properly condition a phone number so the API search hit is good; not the issue here. And, the destination Keap account is again mostly irrelevant. Anyone using the API will absolutely make sure the data goes into the correct customer tenant; not the issue here.

For well over a year, I have been using CallRail connected to Keap via Make for a client in the medical space. Their phone software sends an inbound phone # to Make.

Then we check to see if that phone # already exists in Keap in ANY of the possible default phone number fields. If a contact exists, we update that a call came in. If a phone number has NEVER been inside this specific Keap tenant, we create a Contact for that number along with the same update that a call came in:

image.png

This whole integration operates on the old XML-RPC DataService.Query on the Contact table for the PhoneX fields and has been working excellent for a long time. I would happily rip-and-replace the newest REST v2 API call to search for phone 1 (or 2 or 3) and then make sure the rest of the integration bits work to avoid service disruption.

From what I have seen on the REST v2 documentation, right now there is no way to search for a contact via phone number, even though this is something that can done via the quick search inside the native keap.app UI.

If I wanted to search via phone 1, phone 2, or phone 3 with the Keap API using the latest-and-greatest REST v2 API, how do I do that?

Hi Paul, this is one of the gaps we’ve identified, and the team is looking into it. We’ll share an update as soon as we have more information.

Hi @Paul_Sokol our team has received all of the communications you have posted in numerous locations and numerous times. The other people you have reached out to have notified us of those connections as well. While we appreciate you bringing this to our attention, doing so repeatedly is only going to slow down any progress, since we have to review each of these, tell people how to manage them, document where each interaction is, etc.

As Omar, and others, have let you know, we are aware of your issue, have raised it to the team that owns the endpoint(s) and will share an update with you when we have more information. Please refrain from raising this issue again. This is not a positive way for someone we consider a valued partner to engage with us and does not display the amiable relationship we know exists here. We will not be responding to any new messages regarding this issue but we will happily update you when we have something to share. We appreciate your respectful engagement and look forward to continuing that in the future.

@Angi_Hast Is there a central place we can reference for current status on known issues, upcoming API features and rejected API features?

We have been connecting with individuals as they raise issues, but we are going to create a tracker for these items so we can share the progress with everyone moving forward.

We will need a few days to get it published but we will create a general notification in this forum when it is ready.

Hey @Todd_Stoker , here is a Known Issue Tracker: Sign in to your account

@Angi_Hast , are there any updates on this specific use case for searching the Contact table by phone number? Are we able to search via phone 1, phone 2, or phone 3 with the Keap API using the latest-and-greatest REST v2 API, yet?

Hi @Paul_Sokol. We started working on this gap last week, as shown in item #1 of the tracker. Thanks for your patience, I’ll let you know as soon as it’s released.

@Paul_Sokol @Todd_Stoker This functionality is now available in the REST v2 API.

You can search for contacts by phone number using the List Contacts endpoint: Keap REST API

The endpoint now supports filtering on contact phone fields, allowing you to replicate the behavior previously handled via the legacy XML-RPC DataService.Query.

Thanks for your patience.

@OmarAlmonte, the Phone Number search is flawed and needs further development work on it.

The search only works if the phone number is exactly the same as stored in Infusionsoft. Phone numbers can come from Web Forms, Order Forms, Imported Data, Manual entries. But due to the phone number fields being a free text field, the numbers could have pluses, brackets, dashes, spaces, etc.

For example, when doing a search for “1234567” it fails to match “1234 567” (with a space in-between) that was stored in the contact record.

The search in the database needs to be a Regular Expression type of search which strips out all non-numeric characters, or it should be doing a E.164 format search instead.

@Pav Thanks for the feedback, I will bring it up internally.

@pav now that’s some good fuzzin’ right there, that’s what that is.

I have been using the Keap MCP to test what is actually available via the REST v2.

It exposes the deficiencies which I hope Thryv will fix.

If you want to try the Keap MCP, this is the URL: https://api.keap.com/mcp

Just now, I tried to search for my own phone number in Claude via the MCP and got this.

Hi @Paul_Sokol,

Just a note on that: the MCP does not necessarily expose the full set of capabilities available in the public REST v2 API automatically.

As a result, when the underlying API is updated or new functionality is added, it may take some time before the MCP server reflects and exposes those changes.

What you’re seeing in the MCP does not imply that the functionality is unavailable in the underlying API.

Hope that helps clarify it.

@OmarAlmonte, any update on searching the Phone Number that contain Spaces and Symbols?

If you go to the Quick Search in the Application, you can enter numbers like “555-123456”, “555 123 456”, “(555)-123 456” and they will match to the ones in the Contact Record even if they are formatted differently.

@Pav The team will look into this. I’ll give you an update as soon as I have more information.