Skip to content

How to automate customer onboarding

Onboarding a new customer usually involves a welcome email, a kickoff call, a handful of follow-ups, and someone keeping track of whether the customer actually engaged with any of it. In practice, steps get skipped, emails go out late, and kickoff calls slip through the cracks because nobody scheduled them.

This tutorial builds an automated onboarding pipeline that handles the full sequence. You send a personalized welcome email with open and click tracking, give the customer a self-service scheduling page for their kickoff call, and use webhook notifications to trigger follow-ups based on real engagement signals. The whole system runs across Google, Microsoft, and IMAP providers without any provider-specific code.

The pipeline has three components that work together to move customers through onboarding:

  • Welcome email sequence — Send a personalized welcome email with tracking enabled, then schedule timed follow-ups. Nylas tracks opens and link clicks so you know who engaged and who needs a nudge.
  • Self-service kickoff scheduling — Create a Scheduler Configuration that lets customers book their own kickoff call. No back-and-forth emails, no calendar coordination.
  • Engagement-driven follow-ups — Use webhook notifications to detect email opens, link clicks, and completed bookings. Your orchestration layer decides what happens next based on the customer’s actual behavior.

Each component works independently. Start with the welcome email, add scheduling later, or deploy all three at once.

Make sure you have the following before starting this tutorial:

  • A Nylas account with an active application
  • A valid API key from your Nylas Dashboard
  • At least one connected grant (an authenticated user account) for the provider you want to work with
  • Node.js 18+ or Python 3.8+ installed (depending on which code samples you follow)

New to Nylas? Start with the quickstart guide to set up your app and connect a test account before continuing here.

You also need:

  • A connected grant with email send permissions for the account that sends onboarding emails
  • A calendar on that grant to host kickoff call events
  • Message tracking enabled on your Nylas application (not available for Sandbox/trial accounts)
  • A publicly accessible HTTPS endpoint to receive webhook notifications from Nylas

Message tracking requires a production application. Sandbox accounts cannot use tracking features. If you are on a trial plan, you will receive an error when you include tracking_options in send requests.

The first touchpoint in onboarding is a welcome email. Use the Nylas Send Message endpoint with tracking_options enabled so you can monitor whether the customer opens the message and clicks any links.

Include tracking_options in your send request to track opens and link clicks. The label field helps you identify this message in webhook notifications later.

After sending the welcome email, schedule a follow-up for customers who have not engaged. This example uses a simple delay-based approach. In the orchestration section, you will see how to make this conditional on actual engagement.

Use a proper job queue for production follow-ups. The setTimeout example above works for demonstration, but it does not survive server restarts. Use a persistent job scheduler like Bull (Node.js), Celery (Python), or a managed service like AWS SQS with delayed delivery.

Instead of coordinating kickoff calls over email, create a Scheduler Configuration that gives each customer a booking link. They pick a time that works for them, and the event appears on your team’s calendar automatically.

Use the Create Configuration endpoint to set up a booking page for kickoff calls.

This creates a public scheduling page at https://book.nylas.com/acme-kickoff. Include this URL in your welcome email so customers can book their kickoff call directly.

You can pass customer information through URL query parameters so they do not have to type their name and email again. This reduces friction and increases booking rates.

https://book.nylas.com/acme-kickoff?name=Jordan%20Lee&[email protected]

Add __readonly to a parameter to prevent the customer from editing a pre-filled value:

https://book.nylas.com/acme-kickoff?name=Jordan%20Lee&[email protected]

Generate unique scheduling URLs per customer. Instead of using a single slug, create per-customer Configurations with unique slugs (like acme-kickoff-jordan-lee). This lets you track which customer booked without relying on form input, and you can customize the event title per customer.

With tracking enabled on your welcome emails, Nylas fires webhook notifications when customers open messages or click links. Subscribe to these triggers to get real-time engagement signals.

Create a webhook subscription for message.opened and message.link_clicked events:

When a customer opens the welcome email or clicks a link, Nylas sends a notification with the label you set when sending the message. Use this label to identify which customer and which onboarding stage the event belongs to.

Apple Mail Privacy Protection pre-loads tracking pixels. When a customer uses Apple Mail with privacy features enabled, Nylas may report the email as opened even if the customer never read it. Apple’s mail proxy downloads remote content (including tracking pixels) at delivery time, which triggers a false open event. Do not treat a single open as definitive proof of engagement. Look for link clicks or replies as stronger signals.

When a customer books their kickoff call through the scheduling page, Nylas fires a booking.created webhook. Use this to advance the onboarding state, create follow-up calendar events, and send a confirmation with the agenda.

Create a calendar event before the kickoff call so your onboarding team has time to review the customer’s account.

The individual components above handle sending, scheduling, and tracking. The orchestration layer ties them together into a state machine that moves each customer through onboarding stages based on their behavior.

Each customer progresses through a series of states. Transitions happen when webhook events arrive or when timed checks run.

When a new customer signs up, kick off the full sequence:

The orchestration layer needs persistent storage. Store customer onboarding state in a database (PostgreSQL, MongoDB, Redis) rather than in memory. The webhook handler, the follow-up scheduler, and the state machine all need access to the same customer records across restarts.

A few practical details that affect how well this pipeline works in production:

  • Tracking pixels are not reliable for open detection. Apple Mail Privacy Protection, Outlook’s optional privacy settings, and some corporate email gateways preload tracking pixels automatically. This means open events may fire for customers who never actually read your email. Treat opens as a soft signal and rely on link clicks or replies for stronger engagement evidence.

  • Some email clients block external images by default. Gmail, Outlook, and Thunderbird can be configured to block remote images until the recipient allows them. Since Nylas tracking uses a pixel image, these customers will not generate open events even if they read the email. Do not assume silence means disengagement.

  • Scheduler timezone handling matters. Nylas Scheduler shows availability in the guest’s local timezone by default, which is usually what you want. But if your onboarding team is in a specific timezone and you want to restrict booking hours, set the timezone explicitly in your availability configuration. Customers in very different timezones may see limited or no availability if your window is too narrow.

  • Rate limits apply to bulk onboarding. If you onboard many customers at once (for example, after a launch or batch import), you will hit Nylas API rate limits. The Send Message endpoint is subject to both Nylas rate limits and provider sending limits. Google limits most accounts to 500 messages per day, and Microsoft has similar thresholds. Stagger your sends or use a dedicated sending service for high-volume sequences.

  • Webhook deduplication is your responsibility. Nylas guarantees at-least-once delivery, so you may receive the same message.opened or booking.created notification more than once. Track processed webhook IDs and skip duplicates to avoid sending double confirmation emails or triggering duplicate state transitions.

  • Thread replies tracking counts all replies. The thread_replies tracking option fires for every reply in the thread, including your own. If your onboarding team replies to a customer’s response, that reply triggers another webhook. Filter by the sender’s email address to avoid counting your own team’s messages as customer engagement.

  • Scheduling page links should be unique per customer. A shared scheduling slug works, but per-customer slugs or pre-filled query parameters give you cleaner attribution. When a booking comes in through a shared slug, you rely entirely on the guest’s form input to identify who booked.