Your nonprofit is getting ready to lead an important advocacy campaign: a key bill central to your mission has just been introduced in the state legislature, but the process of getting it passed is fraught with uncertainty. You need to encourage your constituents to talk to their state representatives and voice support for the bill. Your organization has a well-maintained CRM of all your donors and supporters — but does your CRM know who among your supporters lives in the districts represented by the most undecided legislators?
Take another example: your organization is ramping up for a big event. You’ve collected RSVPs from guests who plan to attend in an event management or ticketing system. But wouldn’t it be nice if your events system could talk to your donor management system, and tell you who among your guests has never donated to your organization before? Knowing that would help you cultivate these new connections.
Many nonprofit organizations face data management hurdles like these - getting external data into an existing system or having multiple systems communicate with each other. The good news is, there is a widely-available technology available to help bridge the gaps: the Application Programming Interface, or API.
An API allows you to interact with and “hook into” any piece of software that makes such an interface available. With an API and a little programming code, you can exchange data between systems, automatically update data to reflect changes somewhere else, have an action in one system trigger other actions in another system, or take advantage of advanced resources or infrastructure without having to build that functionality yourself.
An increasing number of software tools and systems are offering and supporting APIs. Most CRMs, like Salesforce, Microsoft Dynamics and Salsa, have APIs to access and edit your contact records. Eventbrite and TicketLeap have APIs for managing your events and attendees. Donor management systems like DonorPerfect also provide APIs for saving pledges and donations and accessing donor information. Many companies like Twilio and Tropo offer APIs to integrate phone call and text message features into your web applications.
Let’s take the first example above: political advocacy. If your organization conducts advocacy activities directed toward elected officials — like letter-writing campaigns, phone banks, and the like — you’re probably familiar with political districts and geographic representation. Congressional districts, state legislature districts, city council districts — these geographic boundaries determine which officials represent which constituents.
Given the fact that most district boundaries change every few years in a process known as “redistricting,” and officials move in and out of office after elections, it’s difficult to keep track of who is in power. Considering how quickly current events and important bills and policies can come to the forefront, it’s valuable to know who represents your organization’s supporters before the time comes to mobilize everyone.
The Cicero API (available as a donation through TechSoup) can help you proactively keep track of your constituents’ representatives and other political information. Cicero is what’s known as a “REST API,” also sometimes called a “web service”. Cicero and other REST APIs work over the Internet, using the same types of URLs and HTTP requests that your web browser does when you’re navigating web pages. Except that instead of requesting full web pages from the Cicero API, you’re requesting smaller bits and pieces of data from Azavea’s continually-updated database of elected officials, districts, and elections.
Using the Cicero API, you can integrate these bits of data (such as the state legislature district a particular donor lives in, or the contact information for the current official in that district) in your other web applications or attach this data to the records in your CRM system.
As politicians and district boundaries change, so will the Cicero API’s database. Programmatically linking the Cicero API into your CRM or other systems ensures that your data can be easily kept up-to-date as well. You’ll be able to direct your supporters to the correct officials to contact, elevating the effectiveness of your organization’s advocacy.
To go the extra mile, you could even combine APIs like Twilio or Tropo with the elected officials’ phone numbers from the Cicero API for phone banking and other types of call-in advocacy campaigns.
Our second example involved matching event attendees from a ticketing system like Eventbrite with donor history from a donor management system like DonorPerfect. This example is a bit more complex, and might involve writing a custom standalone script in a programming language like Python to take advantage of the two APIs.
There’s a specific API call for getting your list of event attendees from Eventbrite. And there’s another API call in the DonorPerfect API to search for donors by name, address, or other fields. So you could call the Eventbrite API to find the names of your attendees, and search for each attendee’s name in your donor records with the DonorPerfect API. Then you could make a list of any attendees without matching donor records, and make sure to introduce yourself to these newcomers at the event.
There are tons of APIs out there available for tools you use every day, and they’re only becoming more common over time. Using APIs might seem complex at first, but with a little bit of tech savvy and a willingness to jump in, you could be using APIs to solve all kinds of data management hurdles!
In part 2, we'll walk you through some basic data formats. If you're already using APIs (or thinking about using them), log in to tell us about your experience in the comments.
Andrew Thompson is the Community Evangelist for Azavea, a geospatial analysis (GIS) firm specializing in location-based web and mobile application development.
Image1: opensourceway; Image 2: Azavea Cicero demo
This work is published under a Creative Commons Attribution-NonCommercial-NoDerivs 4.0 International License.
Close this window