Automating An Onboarding Flow

Automating An Onboarding Flow

Let's take a look at what it would take to automate an onboarding flow.

An onboarding flow is the sequence of steps a new user should take to get set up in the app. For Super Send, that's:

  1. Create an app password in google
  2. Set up their account in Super Send
  3. Create a sequence
  4. Upload leads

It's about 3 more steps than I'd currently like it to be, but each is critical to start a campaign.

We've recently struggled with a lot of people signing up for the wait list but never actually booking a call with us ... so it's time for a sequence to follow up a few times before giving up on the person.

Implementation

When a user signs up for our early access program, we add them to our database, but we also (now) add them to a sequence on Super Send itself to send a sequenced email (3 steps) to see if they really want to join or if they're going to ghost us.

Let's take a look at a NodeJS implementation of how you'd automate this process.

It takes one api call to add the lead to super send and it takes another to mark it as verified. You can pull all the variables you need from the Admin page.


const fetch = require('node-fetch')

// add a user to a campaign automatically
const addUserToSequence = async (email, first_name, last_name) => {
  try {
    const CampaignId = 'xxx'
    const TeamId = 'xxx'
    const ApiKey = 'xxx'
    const url = 'https://api.supersend.io/v1/auto/contacts'
    const body = {
      TeamId,
      CampaignId,
      contacts: [{ email, first_name, last_name }]
    }
    // add the leads to a campaign
    const response = await fetch(url, {
      method: 'post',
      body: JSON.stringify(body),
      headers: {
        'Authorization': `Bearer ${ApiKey}`,
        'Content-Type': 'application/json'
      }
    });
    const contactsAdded = await response.json();

    // mark all leads as verified
    const verify = await fetch(`https://api.supersend.io/v1/auto/contacts`, {
      method: 'PUT',
      headers: {
        'Authorization': `Bearer ${ApiKey}`,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        CampaignId,
        TeamId,
        markAll: "verified",
        markAs: true
      })
    })
    const contactsVerified = await verify.json()
    return true
  } catch (e) {
    console.log('add user to sequence e ', e)
    return false
  }
}


module.exports = addUserToSequence;

We haven't publicly listed our available APIs yet, but each user gets an API key (which is located on the admin page) and can call our api just like their logged in user. Pretty neat! You can do this for all of your campaigns and even across different teams. Our full set of APIs would allow you to do everything from sequence a sequence (i.e. take all my leads that opened my emails and put them in a new sequence), which is pretty awesome.

Stay tuned for more automation fun.

Stay Super!

Andrew