Google Data Studio Connector For Infusionsoft

I am trying to build a Google Data Studio connector for Infusoinsoft. The connector can be used by any no. of clients (companies) to attach to their own INF accounts and pull data for dashboarding. I am using my developer account to create the connector. While doing this, I have hit a blocker that’s not letting me move forward and I am hoping experts folks here can help :pray:

The API limit problem: We started to hit limits while testing one of our account even though the account does not have enough data to reach the 150k API calls per day limit and yet it threw the API limit error on the dashboard. We concluded, that we needed a limit tier raise in order to get all our clients’ raw INF data into their Google Data Studio dashboards.

The first thing I want to confirm is whether this limit is for my developer account thats used to create the connector which is then connected to various infusionsoft account or does the limit apply to individual connected accounts? I had originally believed it was a limit per INF account.

Secondly, I also wanted to know if we can somehow have the following data because apparently that’s causing it to hit the limit (just my guess - please confirm)

In the API documentation, the “List contacts” endpoint does not show any “tag id”. According to the documentation, we would also have to call the “List Applied Tags” endpoint under the contacts endpoint. May be this action causes the limit to crash as each contact would have to be called individually whereas the contacts in the “List Contact” use 1 call per 1000 contacts. Now, during testing, we actually found an empty “tag{}” blob in the “List Contacts” that is not shown in the API documentation. What do we have to do to get the tag IDs for the respective contact come through that? If we can get the TAG ID through the “List Contacts” we don’t have to call the “List Applied Tags” at all.

I hope this makes sense and I’ll save my second question for now to keep this short.

thanks so much in advance!


I think the limits are per API key (client id) for each developer app. If your developer app uses one API key to connect to multiple Keap account apps, all of that activity rolls up together to count against your limit. I’d recommend contacting dev support directly with specific questions about that.

There is also a 1500 calls-per-minute limit, separate from the 150k/day limit, which could be what you’re hitting. You’ll want to check the exact headers you’re seeing in the error response against this list to see what the issue is. (I wish they had this stuff linked straight from the API docs, but it’s pretty buried. Bookmark it like I did :smiley: )

Curiously, when I call /contacts myself, I’m seeing an empty array called tag_ids in each contact object. It’s always empty regardless of whether the contact has tags or not. I don’t see the tag: {} key you mentioned, so evidently behavior is changing. Best guess: this is a feature Keap is working on that’s not ready for use yet.

You might consider using the XML-RPC API to directly query the Contact table and explicitly fetch the Groups field (old name for tags). That should let you retrieve tags in 1000-contact blocks per API call. It’s nowhere near as pretty as REST and I don’t know if it’s suitable for your GDS connector, but it is an option.

Otherwise, caching responses and only hitting “List Applied Tags” for contacts updated since the previous run might be your best bet for now.

1 Like

Thanks for your input @Andron_Ocean … I am wondering if the limit is associated with 1 developer account thats used to create an app which is then used by multiple account, wouldnt the app reach its API limit extremely fast? How do apps like Graphly work then? because they are powering hundreds of users… Any ideas?