Good data is essential to running a successful campaign. You should look at past trends to make decisions about future strategies. But what about current trends? Real-time trends? What if you had the information you needed to be able to turn on a dime? Imagine how much more successful you could be if you could be more nimble.
We are going to show you, in a step-by-step process, how we set up a real-time dashboard to help one nonprofit have their most successful campaign ever. It is a process you can replicate, using entirely free or low-cost tools (depending on your situation).
But first, let’s learn a bit more about how this real-time dashboard can help you by talking about how it helped our client.
The Tennessee Environmental Council (TEC) planted more trees in 2024 than any other environmental nonprofit in the United States. Each year, they plant all of the trees on one day, “Tree Day.” Starting in late October, people begin placing online orders for trees. They select a pickup site near them and the quantity of different species they want. There are over 150 pickup sites. For reasons we don’t need to get into here, each pickup site has to be its own campaign. That made it very hard to see the “big picture” just using the reporting tools that came from their online store.
The screenshot below comes from just one page of the dashboard we created for them. On the bottom-left, you can see the different pickup sites and the number of total trees ordered (redacted). On the bottom right, you can see different marketing channels TEC was investing in.
Take a look at the top two streams. We won’t say what they are here, to protect client confidentiality, so let’s just call them “Olive” and “Jade.” The pie chart shows that over twice as many people report hearing about Tree Day from “Olive” (49%) than Jade (18.1%).
But those are state-wide numbers. This real-time dashboard comes with cross-filtering. We can click on a single location to “drill down” characteristics that might be unique to it. Look what happens when we select a particular pickup site.
When we select “Pickup in Nashville at Cheekwood,” the numbers shift. Now “Olive” and “Jade” are roughly equal at 30.9% and 29.4%, respectively.
Just imagine how this sort of insight could help your marketing! If “Olive” is more expensive than “Jade,” then you might shift how you spend your resources. Or if you want to boost participation in a particular area, you can target your marketing just for them.
You can also cross-filter by the line chart at the top of the first image. You could literally see how many people in Nashville reported hearing about you from Instagram on February 3. Do you see how real-time information like this can make you more responsive and nimble?
Now that you have a sense of the power real-time data can give you, let’s talk about how you can set this up. Obviously, we are talking about our client. What you do may be a bit different for you, but the principles are the same.
If you were to select a pickup site from TEC’s online store, you would see that they use Flipcause to process purchases (technically suggested donations). That makes Flipcause the original data source of “purchase” (donation) data. So, the first step for us was to figure out how to grab that info.
If you are lucky, the system you use will have something called a REST API. This method is like giving a person you know the key to the filing cabinet. When they need information, they can go and open the drawer and look inside. REST APIs are faster, more accurate, and cheap.
Unfortunately, Flipcause does not have a REST API. They use webhooks. Webhooks pass data from one system to the next as it comes in. So, instead of a filing cabinet, a webhook is like making a copy of a document as it comes in and then tossing that copy out the window to someone waiting outside. Webhooks are more prone to errors and can cost more in processing fees, but that’s what we had to work with.
We followed Flipcause’s instructions to create the webhook. That made Flipcause start throwing data out the window. Now, we needed to have someone catching it. We chose to do that with middleware. You can do that programmatically, but custom code is generally more expensive to maintain over the long term.
Our middleware of choice is Make. We created a “scenario” and copy-pasted the Flipcause webhook into our first component. This will always be your first step. Things will look differently if you use a product like Zapier.
The way Flipcause processes data is a bit tricky. When a person orders 20 trees, Flipcause creates 21 “documents.” The first “document” Flipcause tosses out the window is called a “Transaction.” This contains information about the person ordering the trees. The second is called an “Activity.” An “Activity” contains information about the tree. Note that we said “the tree.” Each tree is its own “document.” There is one “document” per tree.
So, if Bob Smith purchased 50 trees, Flipcause sent data to Make 51 times. One “Transaction” for Bob, one “Activity” for each tree Bob purchased.
Thus, our second step was to add something called a “Router.” The “Router” tells Make that it is going to have to make a decision. Flipcause was about to send it two different things, and it needed to be ready to sort them into different piles.
Next, we set up a “Filter.” The “Router” tells Make, “You are going to need to make a decision. The “Filter” tells Make how to make it. A “Transaction” document contains information that is not in an “Activity” document, so we told Make, “If what you see contains ‘Transaction’ information, send it here. Otherwise, it goes there.” In the screenshot of our scenario, you can see the “Filter” icons in the “paths” right before the spreadsheet components.
It might seem a bit weird that “Route” comes before “Filter.” Zapier does it a bit differently, but this is one of the quirks of Make.
As noted above, we used Looker Studio to create our dashboard. Looker Studio can connect very easily to Google Sheets, so that is where we sent our “Transactions” and “Activities.” We created one tab for each of them.
We needed two different tabs for two different reasons. The first is that the data is different. The spreadsheet headers for “Transactions” are different from the spreadsheet headers for “Activities.” The other reason was speed. By the end of the campaign, people had ordered close to 100,000 different trees. Because each tree was its own “Activity,” that meant there were 100,000 spreadsheet rows. That is a lot to process. Having data go to different places helped some of the charts load more quickly.
Flipcause sends information in something called JSON format, which is pretty standard. In the screenshot to the right (or below if you are reading this on your phone), the headers in our spreadsheet are the gray text. The red-highlighted text represent the Flipcause labels. All you have to do is place the right label into the right field. Pretty much all middleware products work this way.
You might notice that one of the paths in the Make “Scenario” contains two additional components: “Sleep” and “Break.” It turns out that Google Sheets has a limit on how many items it can process at a time. That became a problem during high traffic periods. Think of it this way: the more documents that get thrown to you at once, the more likely you are to drop some. That’s what started happening. The “Sleep” step told Make to slow down, to wait one second per document.
The “Break” step was added as a backup. If the volume was still too high, we told Make to wait and try again in 15 minutes.
This is why processing fees can be higher when you use webhooks. Services like Make and Zapier have monthly caps on how many things they will process. Each component adds a step and gets you closer to that cap.
Let’s review where we have gone so far. The first thing we did was to create our webhook in Flipcause. Then we set up our scenario in Make. That scenario sent the Flipcause data to Google Sheets in a way that could be charted. Now it’s time to make the charts.
You could always just create the charts in Google Sheets. That’s a perfectly fine option, but you do lose some ability to interact with the data, an ability provided with Looker Studio. For obvious reasons, this cannot be a full tutorial on how to use Looker Studio. There’s Youtube and Udemy for that. But we will show you the basics.
To create a new dashboard in Looker, you want to go to lookerstudio.google.com.
Hit the “Create” button in the top left. This will make a list of dropdown options appear. Select “Report.” This will create a blank report, followed by a prompt to connect to a data source. Select Google Sheets as your data source, and follow the prompts to connect to the right sheet and tab.
“Wait a minute!,” you might be thinking, “I thought you called ‘Flipcause’ the source!” Indeed, it was the original source, but our middleware sent the data to Google Sheets, making it the new source for our report.
Looker Studio will create your first chart — a simple table — as soon as you connect to your first data source. It actually does a pretty good job at guessing what you might want to look at, which can make it a pretty good tool for learning data viz, but I digress.
In our case, we can see that Looker Studio has created a table with two columns. The left column contains the species names, and the right column contains the total number of that item. Thus, there were 13,765 Eastern Redbud, 7,615 American Plum, and so on.
To cross filter your charts, click the “Add a Chart” button at the top, and select the type of chart you want to display. For our purposes, we are showing a simple pie chart.
In our screenshot, you can see that both the table and the pie chart are focusing on the species. If we selected a line from the table, it would make that species the only slice of pie in the chart. That’s not super helpful, so instead, we’re going to change the “Dimension” that is being charted.
To do that, go to the setup pane on the right. Click the dimension field (in our example, the one that says “Item”). You will see a list of other dimensions appear. Those dimensions are the names of the header rows from your spreadsheet. If you were to select “AD_Campaign_Title,” instead of getting a count of each species, you would get a count of total trees per campaign (remember, for TEC, each pickup site was its own campaign). When you select a campaign row, the pie chart changes so that you can see the species breakdown by pickup location.
The final step is to share the chart. If you have ever used Google products, then you already know how to do that. One thing to keep in mind, though, is that you don’t just have to share it privately. You certainly should if the data is private, but you can also embed the report in your website. If you wanted to create buzz about your campaign, that is an option to consider.
Nonprofits often can only analyze campaign performance after it is already over. Real-time dashboards fix that problem by giving you immediate insight into patterns and trends as they are happening. By reviewing these trends, you can maximize the effectiveness of your campaign.
In this document, we showed you one way we set up a real-time dashboard for the Tennessee Environmental Council. TEC plants more trees per year than any other environmental nonprofit in the United States. The ability to evaluate what’s working and change tactics in real time is one factor in their success.
The goal of this article has been to show you what is possible with a few simple tools. Every situation is different, but the concepts and principles are the same. You need to get the data from its original source into something that can be charted.
This is something Undaunted Consulting can do for you, and it would be worth the investment. What TEC earned from increased participation far exceeded the cost of our services, but as the principal of this company, I can assure you that we care a lot about building capacity in nonprofits. (Otherwise, I would not have written this guide.) My sincere hope is that you can take what I have shown you here and adapt it to your own situation. You don’t need to be a tech expert to pull something like this off. If you get stuck, don’t hesitate to put something on my calendar. No pressure. No cost. Just happy to help!
David is the founder of Undaunted Consulting. He specializes in data management system optimization and rapid app development for social service, social justice, and environmental justice nonprofits.