Freezing Code

Using CloudQuery for Marketing

I like to measure things. I like to know when what we do actually makes an impact and when we need to improve. At CloudQuery, we used to churn out blog posts and videos, and at one point, I started wondering if they were actually worth the time spent.

Considering we posted on a number of social media, on our Discord server, and we also sent emails, we faced the challenge of bringing all the data together in one place. We had questions about who we were reaching, how our audience was growing, how our posts were performing, and what content really clicked.

Luckily, we knew a company that made a tool just for us: our own! Apart from solving a real problem for ourselves, I was excited about the opportunity of “eating our own dog food” and learning about the challenges some of our customers may face.

Making It Work

First, we mapped out the user journey: what do we want people visiting our website to do? How do they get there? Where are the points where we can measure the number of people getting through?

We reviewed the tools we were using. For website analytics, we used Simple Analytics. We had Typeform for surveys and signups, Discord, Twitter, LinkedIn, and YouTube for socials. We also used Hubspot as a CRM. We decided the best way to measure the campaign's performance across the social media was to use Bitly links with UTM tags.


The setup with CloudQuery was pretty straightforward: we now have a few containers running CloudQuery with a cron schedule. Plugins such as Typeform, Bitly, HubSpot, and Simple Analytics are used to sync data from the individual services to a single Postgres database. Another container hosts a Metabase dashboard to help us dig into audience engagement and post performance. We are looking at how our posts to social media are doing from the clicks perspective, how the individual content from emails and blog posts is driving engagement, and how it all translates to website visits and signups.

What We Found Out

First, we ran the syncs too often with Bitly and almost ran out of our monthly API quota 😅.

We had to develop a new plugin for Bitly using our Python SDK. It was fairly straightforward, although we found out a few things we could improve internally. These will help more developers coming to our platform to develop new plugins.

We learned and also confirmed what we knew about social networks and devised a new strategy for one of them.


What's Next

Looking forward, we are not stopping here. Our plan is to include YouTube in our data mix. While Youtube has its own analytics dashboards, they do not offer as much detail as the actual API does. We also think the power is in combining the data with the other data we already have.

Share your own story

Get inspired by our selection of plugins for Sales and Marketing on our Hub.

Are you interested in learning more? Or have your own story about your data integration journey to share? We’d love to get in touch!
Find us on Discord, Twitter, LinkedIn, or just book a meeting directly.

New project - Recipe Book

I have a new side project: A recipe book.

Since the pandemic started, we kind of changed our habits of going to a store every week for a load of food for the upcoming week. We thought we could reduce the time spent among other (infectious) people by shopping only once a month. Sure, you still need some fresh produce, such as vegetables and fruits, every week, but that limits the store visit to ten minutes.

Since we moved to the north, the need to do a one monthly shopping trip has increased even more. The store with good prices is around 100 km away and it takes an hour to get there (if the weather permits). So every month, I take my small Ford Fiesta, drive to the store, load the car with food and drive back home. It takes half a day but then I have the other weekends free.

This approach to shopping required us to change the way we plan meals. We actually need to sit down and plan what we're going to cook each weekend until the end of the month and make sure we have all the supplies. We were looking for a tool that could store our favorite recipes, include ingredients, and plan meals in a calendar. It should also be free and available on all platforms.

We found one that wasn't free and we almost started using it but then we learned it requires a payment on each platform (PC and Android separately). So as product managers do, I said I could code something like this over a weekend and picked up this new hobby.

This happened couple months ago (ha ha) but now I'm ready to share it with the world. It's ugly, but it works. Also, it's free (for now). And I learned a lot new stuff about React, NextJS, Google authentication, and that I also don't really want to develop mobile apps.

Snowmobile ride

Using a snowmobile, you can get to places that are otherwise impossible to visit.

Google Calendar Event Colorizer

I prefer to see important events (i.e. events with customers) in my calendar with a different color so I notice them in time and get prepared. I used to edit the invitations manually to set the color but I often realized I forgot to do that until it was too late.

Here’s a little script that helps me colorize the events automatically. It sets the predefined color on every calendar event with guests from outside of my company:

How to use it:

  1. Go to
  2. Click ‘New script’
  3. Paste the script from index.js
  4. Read the comments in the top of the index.js file and update the variables to suit your needs.
  5. Save the project and give it a name
  6. Run the project. It will ask you to give the script permissions to access your calendar.
  7. In the triggers tab, add a trigger to run this periodically

The power of no

I am very bad at saying No. It is an issue if you consider the fact I am a product owner, but I really have a hard time saying No to people who want new features or who desperately need some bugs to be fixed. I am a product owner that wants everyone to be happy.

At the company I worked with in the past few months, I was basically the one who said what features we would implement and what bugs we would fix next. We had a long-term strategy I had to comply with, but those tiny details affecting hundreds of users were for me to decide on.

I had requests for changes, new features, and bug fixes coming in all the time. Most of them were from our customer success representatives - the people who were providing support to our end users. They knew what the long-term strategy was and they knew what we were planning to work on in the near future, but they always tried to push “just one more thing” in.

Could I say no? Of course I could, and I actually tried that multiple times, but I was often overruled and my short-term plans became mid-term plans and the long-term strategy became only a vision.

One day when another urgent request for a bigger feature came from one of my favorite customer success managers, I tried a new approach. I laid my cards on the table and told him that these were all the things we were planning in the upcoming months, and most of them were requests coming from him and he had said they had been urgent. I asked him to help me to figure out where his new request should be squeezed in and what were the bug fixes we would postpone due to this new one. The result was amazing: he said his new urgent request could actually wait, the things we had been planning to fix were actually much more important.

That day I learned that the major stakeholders in the company suffered from poor memory. They always focused on what was most important for them at the moment but never looked at what was promised and planned before. Since that day, whenever someone has come to me with a request that seemed to be imperative to get done “right now” I asked them whether it was more important than what we were doing at that moment or what we had planned for the next few weeks. This eventually led to their satisfaction because they could have provided their input on what needed to be changed and they were able to influence how important the change was. It also reminded them what we were planning to do so, and thereby reassured them that we were (still) going the right direction.

And eventually, I was happy too because I no longer needed to say No.