Machine
All use casesCustomer Success · 6 min read

How we help new customers reach activation

A daily agent on Machine checks every new account's onboarding progress in Postgres, writes a nudge email when one gets stuck, and gives the account's CSM the full story in Slack.
Enterprise
MT
Machine Team
·6 min read

Most renewals are won or lost in the first month, long before anyone talks about renewing. A customer who gets their workspace running, finishes setup and sees a real result in the first week usually stays. A customer who signs and then goes silent is in trouble already: no second login, setup half done, not one colleague invited. Often nobody spots it until the CSM opens HubSpot one afternoon and realises an account that joined last month has not made a peep in three weeks.

So an agent on Machine now looks at every new account each day and compares it with the onboarding milestones it should have hit. When one is stuck, the agent writes a nudge for the customer and tells the CSM who owns the account exactly what has stalled and why. It never edits an account and never sends a thing by itself. The CSM gets an early warning, not a surprise churn call six months later.

TeamMachine
Runs onOnce a day, on a schedule
Connected systemsPostgres · HubSpot · Slack · Email
ModeDrafts and alerts only · the CSM hits send

The problem

How a new account is getting on is split between two systems that never compare notes. Product events and activation milestones live in Postgres. The account record, including its owner and the date it became a customer, lives in HubSpot. Neither one can tell a CSM if the account is on course. Ten logins mean little if you don't know which day of onboarding the customer is on. A HubSpot record means little if you can't see whether the customer has done anything since signing.

Usually the CSM falls back on clicking through their own accounts one by one, or on a dashboard of raw usage numbers that has no idea what "on course" looks like for an account of a given age. By the time someone notices the stall, a friendly nudge is often no longer enough.

What we built

Each day a cron on Machine starts an agent. It pulls from HubSpot every account that is still inside its onboarding window and has a CSM assigned. For each one it looks up the activation milestones and product events in Postgres, then sorts the account into one of three buckets: on course, stuck at a particular milestone, or late for full activation. For every stuck or late account, it writes a nudge email aimed at the exact step the customer skipped, and sends the owning CSM a Slack message with the details: what is finished, what is stuck and what the nudge says. The draft sits in the CSM's inbox. The CSM chooses to send it, change it or contact the customer some other way.

How it works

01

Schedule a daily run

A cron trigger starts the agent once a day. Each start creates a brand-new session, a fresh cloud computer (sandbox) that remembers nothing from yesterday. The account list and all the milestones are read again from HubSpot and Postgres every time. A marker field on the HubSpot record notes which milestone was last nudged, so a stall that lasts a week does not earn the customer seven identical emails.

02

Teach the agent your onboarding plan

The milestones are written into a skill, a playbook that goes wherever the agent goes. It defines what workspace-live, core setup, first activation event, team expansion and full activation each mean, and by which day each one should happen. It also sets the stuck and late cut-offs and the tone a nudge should take. When we learn which milestones really signal a healthy account, we update the skill, and every account gets the benefit the very next day.

03

Plug in Postgres and HubSpot

Connectors are scoped connections to your tools, and the keys stay on our servers rather than with the model. Through them the agent:

  • Pulls accounts from HubSpot: the ones still in the onboarding window, and the CSM each one belongs to.
  • Reads milestones and product events in Postgres: read-only, to see what each account has and has not done since it signed.
  • Saves one note back to HubSpot: the milestone a nudge was last drafted for, and nothing else. No plan, no seat count, no other account setting.
04

Alert in Slack, draft in email

Each channel does one job. In Slack, the owning CSM gets a message with the account's progress and the exact step that is stuck. In email, the nudge to the customer waits as a draft for the CSM to open, tweak and send.

05

Draw the lines

The agent follows progress and writes drafts. It never alters the account and never talks to the customer directly. Sending the nudge is out of its reach, and so is any plan, seat, billing setting or other account detail. Credentials are stored encrypted in the Secrets Manager and only handed to the agents you grant them to, at the moment a run starts.

06

Pass it to the CSM

Once it is running, the CSM opens Slack to a concrete reason one account needs help today, not a vague "check on your accounts" ping. Their inbox already holds a nudge written around the precise step the customer missed. They read it, judge whether it fits, and send it themselves.

The pattern

A daily cron creates a session with read connectors into Postgres and HubSpot. The milestones are kept in a skill. The agent spots the stall, writes the nudge and pings the CSM, and the CSM reads it, adjusts it and sends it.

Guardrails

Brand-new paying accounts are precious, so the agent's reach is small and spelled out:

  • Draft and alert only. Sending the nudge is never the agent's job, and it never reaches out to the customer itself. The email stays a draft in the CSM's inbox until the CSM sends it.
  • No account changes, ever. Plans, seat counts, billing settings and every other account detail are off limits, in HubSpot and everywhere else. The agent reports and drafts. It does not manage accounts.
  • Scoped writes. Its one write to HubSpot records the milestone a nudge was last drafted for. The deal stage, the owner and every field a CSM depends on are left alone.
  • Isolation. Each run lives in a sandbox of its own. Credentials for Postgres and HubSpot are stored encrypted in the Secrets Manager and only handed to the agents you grant them to, injected when the run starts.
  • Everything is code. The milestones, the stall cut-offs and each system's permissions are files in the repo. They keep a version history and change through a reviewed change request, not a setting in a dashboard.

The outcome

Every dayEach new account checked again against fresh milestone data
0 sentEmails sent or settings changed without a person
5 milestonesFollowed from the first login through to full activation

A stalled onboarding used to surface only when a CSM happened to glance at the account. Now it shows up the day it begins, along with the step that was missed and a nudge ready to go. The agent keeps watch over every new account and does the spotting. The CSM still decides what goes out, and when.

Your turn

Put your first agentto work today.

Pick a setup from this page or start from scratch. Connect your tools, set a schedule, and choose where a person signs off. Free to self-host, managed plans from $40 a month.
  • SSO
  • RBAC
  • Governed agents
  • Full audit trail