In attempting to develop a custom CRM using the Liferay web hosting platform and Constant Contact (and snycing the two), we are encountering the issues below:
We would like a Contact List as a table with columns that are searchable and sortable, links to jump between “pages” of content, and an export feature.
The API limits responses to 500 results at most. If there are additional records, the results include a “next” parameter you can use to request up to 500 more results. The API results do not include a “previous” parameter if there are results “before” the ones you’re viewing. The API also only supports searching contacts by email address.
In practice, this means that only the “current” 500 contacts could be searched, filtered, or exported.
I’m not sure why the API has these seemingly arbitrary limitations. You can do complex searches and move forward or backward through pages of results (or even jump to the first or last page) on constantcontact.com.
Possible workarounds that we're considering to avoid the API’s limitations on searching, filtering, and exporting data include:
Thanks for your assistance.
You are doing quite the undertaking in creating your own CRM. You do have the limitations pretty well outlined and explained. I'd like to chime in a bit and see if I can help with some insight from our end.
The v2 API was designed to be able to move data between Constant Contact and your application whether it be a website where you have a sign-up form, a custom CRM, or anything in between. You are definitely looking to create something quite advanced and some of the features you are looking for were not something we were looking at designing in this version of our API. We are developing a v3 API and I will make sure these features are something we look at for this new version.
In the meantime I think your best option is the first one you mentioned. You would want to bring the contacts information through the API and store it in a database where you can then manipulate it in whatever way is needed by you or your users at that moment. Perhaps include a modified tag in your side of the database and at the end of the day compare it to our modified date. In the event that those two modified dates are different then you can send an update back to Constant Contact only for those contacts that had their data changed.
This would limit the amount of API calls needed to keep the data synced. This is of course based on the assumption that your users do not log in to the Constant Contact website to manipulate contacts as well.
I'm happy to continue discussing any aspects of this either here on the forums or if you prefer privacy you can email us at firstname.lastname@example.org.