How we automated new user insights — in 10 minutes

Flowdash flow builder

We struggled with customer insights and tracking when people starting signing up for our app. To solve that pain, we built an automated workflow — with our own product. With about a 10-minute setup, we saved weeks of work, and saw a 10x increase in email response and 5x increase in demo calls.

No more ActiveAdmin, hacked together internal tools, or worst of all — leads that could have been.

Here’s our story and what we learned.


As an early stage startup, our primary focus is finding product market fit. We’re looking for users who get the most value out of our product. Who are they? How did they find us? What are they looking for?

To develop our ideal customer profile, we need more people using the product and converting to paying customers. Not too long ago, we noticed many people would sign up, but we struggled getting them to come back (and, ultimately, to convert).

Here’s what used to happen when a new user signed up for a free Flowdash account:

  1. User signs up for a free trial with their first_name , last_name, and email
  2. We send a Slack webhook to our #new-users channel with the email
  3. We send them an automated email drip sequence (offer to schedule a demo, give some product tips, highlight features etc.)
  4. Hope they engage & convert

Problems with the old approach:

(1) We don’t know who’s signing up (except for their name & email)

(2) We don’t know what they’re looking for

(3) They aren’t converting

Besides a clue from their name and (maybe) work email, we have no idea who they are and why / how they found us. We also can’t go back through that list without logging into a clunky ActiveAdmin UI or combing back through a messy list of Slack messages.

Proposed solution for better engagement & conversion:

A workflow with:

(a) Auto-assignment of new users to team members

(b) A repeatable email outreach flow

(c) A single view with enriched context / insights about the user

(d) Automations to keep things efficient as volume increases

Since Flowdash now supports database syncing, we decided to try eating our own dogfood. Given the requirements above, a workflow-driven internal tool felt like the perfect choice.

The Final Product

Flowdash admin dashboard for new users

Results:

  • 10x increase in response rate to email outreach post-onboarding.
  • 5x increase in conversion rate to demo call
  • No duplicate outreaches
  • No changes to our code (except deleting the old drip campaign)
  • All of our customer insights in one place

How we did it, step-by-step

Step 0. Turn off the automated emails.

This one’s easy. Just delete that code.

Note that automated drip emails can work well if you can’t reach out to everyone who might convert. With our current volume, we’re able to personally email high-intent users. But we’ll likely bring back the automated drip for users that are lower intent.

Step 1. Connect to our replica database

Three options for getting started configuring your Flowdash workflow
Choose database sync to get our workflow data

A workflow is home to a sort of living collection of tasks. Tasks move through a series of stages (“Pending approval”, “Done”), the movement through which can trigger / require / be conditional upon some pre-defined business logic.

One way to feed tasks to a workflow is by asking your database for them in SQL.

Connect to a PostgreSQL database to import your task data
Add database connection details

Before we ask the database for our tasks, let’s first establish a secure connection to it.

Write any arbitrary SQL query to fetch task records
Write a SQL query to fetch all users and another to fetch one user. Configure sync to run every 5 minutes.

Compared to the world of internal resource-based CRUD tools, we can write any SQL to better fit our business logic. Only care about a few columns from a table? Need to join a few tables to describe a task? No problem.

Once we finished this step, we could see all our existing users in our new Admin / Users workflow based on a single SQL query. With all the data we cared about, it was now time to add the bells and whistles to bring the workflow to life.

Step 2. Define a process with the Flow Builder

Flowdash flow builder to define your business process
Flow Builder

Basically, we just thought about how we’d like to triage and connect with users (edge cases included) and converted that to a state machine.

For example, start by auto-assigning Tanner to take a look at each new user. If they appear to have high intent — based on the data shown in our custom customer insights UI — Tanner will click “Prioritize for follow-up”, which we’ve defined to mean: Re-assign to Nick and let Nick know about it. Now, Nick can push them along the personalized outreach out.

Step 3. Add assignment and Slack automations

Automations define the work that runs in the background
All of our automations currently running in the background of this workflow

Here’s the breakdown of 4 automations that get triggered by a new users record that our sync picks up:

  • Enrich the email with additional user data using the Clearbit API
  • Slack post to our #new-users channel
  • Auto-assign Tanner to take a look
  • Deprioritize if they’re an existing, paying customer

Let’s break down a few of them.

Enrich email automation
Automations overview for data enrichment with Clearbit API
Define automation to run when a new user is added
Custom API call step that fetches information from the Clearbit API
Define a custom request that hits the Clearbit API, sending the {{email}} from the user record as a param.
API response from Clearbit and mapped fields to update
Map API response back to our new record in Flowdash for additional context.
Send a Slack post automation
Automation overview for post to slack for new user
Again, define the automation to run each time a new user is added
Slack message for automated alert with interpolated fields
Choose a channel, interpolate record fields, write an simple message in markdown, and keep the data in sync for live updates in Slack.
Slack post from Flowdash with realtime updates
Example Slack post that landed in our #new-users channel for the whole team to see.

Step 4. Customize the layout to bring everything we know in one place

Customizable task layout UI

And this is the juicy details view that renders when we click to view the user in Flowdash. Here, we know where they came from (Lead Sources), where they’re located (IP Data), what they do for work (Details), and exactly what they did on the platform (not shown – request to Fullstory API with a table of their sessions and custom SQL queries for the data they created on the platform).

Prioritization is dead simple with so much context.

And that’s it.

We threw out our hacked up solutions that weren’t working and built something with effectively no code. Now, we have actionable customer insights, and it took us a matter of minutes.

What will you build?

Curious what you could build with access to app events and customized notifications based on business logic? Get started with our templates when you sign up, browse our docs, or drop us a line — we’d love to help you get started building your workflow 🙂