Agent setup guide
Trial Activation Nudger
Welcomes every trial with their first “aha” step, nudges on day 3 from your real usage data and sends your final offer 2 days before the trial ends.
What it does
Welcomes every trial with their first “aha” step, nudges on day 3 from your real usage data and sends your final offer 2 days before the trial ends.
- Starts when your app posts trial_started: AI writes a welcome that points to the first “aha” step for their use case, and the contact is added to HubSpot as a lead.
- Three days later, calls your usage endpoint: stuck users get help with the exact step they haven't done, active users a power tip.
- Two days before the trial ends, checks usage again and writes the final email with your offer exactly as you wrote it; you approve it unless you switch that off.
- The trial dates are worked out in code, never by the AI: when the final email goes (2 days before trial_ends_at) and whether the run can wait that long.
- Posts high-fit trials that haven't activated to Slack so a person can reach out, and logs the outcome on the HubSpot contact.
- Anyone who already pays gets no more trial emails.
What it needs
- A paid plan (agents run live on paid plans; the waits also need the Wait step enabled on your workspace).
- An AI provider key (Settings → AI Providers).
- A small usage endpoint in your product (JSON shape in the FAQ), added as an HTTP / Custom API connection, plus HubSpot and Slack.
- Your app posting trial_started to the webhook.
What it doesn't do
- It doesn't extend trials, change billing or apply discounts; the offer is the text you write.
- Trials ending more than 34 days after sign-up (or within 5 days), or events without trial_ends_at, skip the timed final email (a run waits at most 30 days at a time).
- It only knows what your usage endpoint returns; it doesn't track product events itself.
Availability and plans
Available
Its workflow is built and tested, and every app it needs is live. You can get it and set it up now.
Included free on the Enterprise plan; on other paid plans it's a one-time purchase per workspace (the price is on the Agents page). The Agents page in the app always shows its current status.
Before you start
- A paid plan: agents run live, and the Free plan only runs Dry Runs.
- An AI provider key (OpenAI, Anthropic, Google and more) in Settings → AI Providers. AI usage is billed by your provider.
- These apps, connected in Settings → Integrations: HTTP / Custom API, HubSpot and Slack.
- A form, app or system that can send each new item to a webhook URL (the agent starts from a webhook).
- About 30 minutes.
Set it up step by step
Get the agent first (buy it, or it's already yours when your plan includes it), then in Agents → My agents press “Set up this agent”. That creates the agent's workflow in your workspace (it counts towards your plan's workflow limit) and opens the canvas with a setup checklist above it. Each item links to the exact place to go and ticks itself off when it's done.
1. Connect your AI provider
The AI steps run on your own key (OpenAI, Anthropic, Google and more). Add one in Settings → AI Providers.
2. Connect your app's API (HTTP / Custom API)
Add an HTTP / Custom API connection with your API's base URL and a read-only key (Settings → Integrations → HTTP / Custom API).
3. Connect HubSpot
Connect your HubSpot account (Settings → Integrations → HubSpot).
4. Connect Slack
Connect the Slack workspace your team uses (Settings → Integrations → Slack).
5. Write your trial rules
Open “Write the welcome”, “Pick the day-3 nudge” and “Write the final email” and replace the placeholder in each with the same rules.
| Setting | What to enter | In step |
|---|---|---|
| Your product, aha steps and ideal customer | Replace the placeholder with your product, trial length, the first aha step per use case with help links, what your checklist items mean, your ideal customer, your end-of-trial offer, whether the final email needs approval and your sign-off. It starts as “[PASTE YOUR PRODUCT NAME, TRIAL LENGTH, THE FIRST “AHA” STEP FOR EACH USE CASE WITH ITS HELP LINK, WHAT YOUR ACTIVATION CHECKLIST ITEMS MEAN, YOUR IDEAL CUSTOMER (FOR THE FIT SCORE), YOUR END-OF-TRIAL OFFER AS TEXT, WHETHER THE FINAL OFFER EMAIL NEEDS APPROVAL AND YOUR SIGN-OFF HERE]” until you replace it. | “Write the welcome” |
| Your rules (day-3 nudge) | Paste the same rules again, so the nudge knows your steps, links and checklist. It starts as “[PASTE YOUR PRODUCT NAME, TRIAL LENGTH, THE FIRST “AHA” STEP FOR EACH USE CASE WITH ITS HELP LINK, WHAT YOUR ACTIVATION CHECKLIST ITEMS MEAN, YOUR IDEAL CUSTOMER (FOR THE FIT SCORE), YOUR END-OF-TRIAL OFFER AS TEXT, WHETHER THE FINAL OFFER EMAIL NEEDS APPROVAL AND YOUR SIGN-OFF HERE]” until you replace it. | “Pick the day-3 nudge” |
| Your rules (final email) | Paste the same rules again, so the final email uses your exact offer and approval setting. It starts as “[PASTE YOUR PRODUCT NAME, TRIAL LENGTH, THE FIRST “AHA” STEP FOR EACH USE CASE WITH ITS HELP LINK, WHAT YOUR ACTIVATION CHECKLIST ITEMS MEAN, YOUR IDEAL CUSTOMER (FOR THE FIT SCORE), YOUR END-OF-TRIAL OFFER AS TEXT, WHETHER THE FINAL OFFER EMAIL NEEDS APPROVAL AND YOUR SIGN-OFF HERE]” until you replace it. | “Write the final email” |
6. Point it at your usage endpoint
Open both “Check their activation” steps, pick your API connection and enter the endpoint path.
| Setting | What to enter | In step |
|---|---|---|
| Your API (HTTP / Custom API) | An HTTP / Custom API connection with your app's API base URL and a read-only key (bearer or header). Pick your connected HTTP / Custom API account. | “Check their activation” |
| Usage endpoint path | The path of your usage endpoint, e.g. /internal/trial-usage. The agent adds ?email=…&user_id=… | “Check their activation” |
| Your API (second check) | The same HTTP / Custom API connection, for the check 2 days before the trial ends. Pick your connected HTTP / Custom API account. | “Check their activation again” |
| Usage endpoint path (second check) | The same path as above. | “Check their activation again” |
7. Pick HubSpot and Slack
Open “Add the trial to HubSpot”, “Log it on the HubSpot contact” and “Alert the team in Slack” and pick your accounts and channel.
| Setting | What to enter | In step |
|---|---|---|
| HubSpot account | The HubSpot account trials are added to. Pick your connected HubSpot account. | “Add the trial to HubSpot” |
| HubSpot account (note) | The same HubSpot account, to log the outcome on the contact. Pick your connected HubSpot account. | “Log it on the HubSpot contact” |
| Slack account | The Slack workspace your sales or success team uses. Pick your connected Slack account. | “Alert the team in Slack” |
| Slack channel for high-fit trials | The channel where someone can pick up a high-fit trial, e.g. #trials. | “Alert the team in Slack” |
8. Add your success inbox
Open the four email steps and enter the address replies should go to.
| Setting | What to enter | In step |
|---|---|---|
| Your success inbox (replies) | Trial users' replies come back to this address (Reply-to). | “Email the welcome” |
| Your success inbox (nudge) | The same Reply-to address, for the day-3 nudge. | “Email the nudge” |
| Your success inbox (nudge, no final email) | The same Reply-to address, for trials without a timed final email. | “Email the nudge” |
| Your success inbox (final email) | The same Reply-to address, for the final email. | “Email the final offer” |
9. Test it with Dry Run
Press Dry Run: the agent runs on sample data with no messages sent and nothing written to your apps.
10. Switch the trigger on
Open the trigger, switch the webhook on and have your app post trial_started (with the webhook's signature header) when a trial begins.
How it works
The agent is a normal workflow with 25 steps (3 AI steps, with a person approving in Reviews). You can open, edit and monitor it like any other workflow.
- Trial started — Starts when your form or app sends data to the agent's webhook URL. Starts when your app posts a trial_started event: user, email, company, plan, use case and when the trial ends.
- Check the trial dates — Step. In code, not AI: reads trial_ends_at from the event, sets the final email for 2 days before it (at 9:00) and checks the run can wait that long (the trial must end 6–34 days from today: the run waits 3 days, then at most 30 more). Set timezone here (e.g. America/New_York; UTC when blank) and change the window here (within).
- Write the welcome — AI step (runs on your AI provider key). AI writes a short welcome that points to the first “aha” step for their use case and scores the fit against your ideal customer. When the final email goes was worked out in code.
- Email the welcome — Sends an email from your workspace's sender. Sends the welcome from your workspace's sender, with replies going to your success inbox.
- Add the trial to HubSpot — HubSpot: Create or update a contact. Creates or updates the HubSpot contact (email, first name, company) with lifecycle stage Lead.
- Wait 3 days — Waits 3 days. Pauses the run for 3 days; it resumes on its own (Dry Run doesn't wait).
- Check their activation — HTTP / Custom API: Send a request. Calls your usage endpoint (GET, with the user's email and id) for their activation checklist: which first steps they've done.
- Pick the day-3 nudge — AI step (runs on your AI provider key). AI reads their checklist: stuck users get help with the exact step they haven't done; active users get a power tip.
- What next? — Decision: picks the branch to follow. Paying customers get nothing more; trials ending within the wait window get the nudge only; the rest also get the final email 2 days before the trial ends.
- Already paying — Kept in the run history. Branch: Already paying. They converted before day 3; no more trial emails.
- Email the nudge — Sends an email from your workspace's sender. Branch: Nudge only. Sends the day-3 nudge (no final email: the trial ends too soon or more than a month away).
- Nudged (no final email) — Kept in the run history. The trial's end is outside the wait window, so no timed final email.
- Email the nudge — Sends an email from your workspace's sender. Branch: Nudge + final. Sends the day-3 nudge from your workspace's sender.
- Wait until 2 days before the trial ends — Waits until a date taken from the data (at most 30 days). Pauses until 2 days before the trial ends (at most 30 days); the run resumes on its own.
- Check their activation again — HTTP / Custom API: Send a request. Calls your usage endpoint again for the latest checklist and plan.
- Write the final email — AI step (runs on your AI provider key). AI writes the last trial email with your offer — tailored to whether they activated — skips anyone who already pays, and flags high-fit trials that haven't activated for your team.
- Approve first? — Decision: picks the branch to follow. Paying customers get nothing; final offer emails wait for approval unless your rules switch it off.
- Already paying — Kept in the run history. Branch: Already paying. They converted during the trial; no final email.
- Approve the final offer email — A person approves or rejects it in Reviews (the run waits). Branch: Check first. Customer success checks the final email and the offer in Reviews, edits it and approves.
- Alert the team? — Decision: picks the branch to follow. Branch: Automatic / Approved. High-fit trials that haven't activated are posted to Slack before the email goes.
- Held — Kept in the run history. Branch: Don't send. The final email was marked not to send.
- Alert the team in Slack — Slack: Post a message. Branch: High fit. Posts the high-fit trial that hasn't activated to your sales or success channel, so someone can reach out personally.
- Email the final offer — Sends an email from your workspace's sender. Branch: Send. Sends the final email with your offer, replies going to your success inbox.
- Log it on the HubSpot contact — HubSpot: Add a note. Adds a note on the contact: the trial outcome and that the final email was sent.
- Trial sequence done — Kept in the run history. The run history keeps every email and both usage checks.
Test it with Dry Run
Press Dry Run in the canvas. The agent runs on the sample data stored on its trigger (the “Sample data for Dry Run” box), so you can check every step's output before anything is live. Edit the sample to match the fields your own form or app sends.
Sample data fields
event, user_id, name, email, company, plan, use_case, team_size, trial_started_at, trial_ends_at.
- Nothing is sent or written: app actions, emails and Slack posts are simulated, and AI steps don't call your AI provider.
- Approval steps use the Dry Run decision you pick in the step's settings (approved, rejected or timeout), so you can try each branch.
- Wait steps don't wait: they report how long they would wait and the run goes on.
Go live
- Open the trigger, switch the webhook on and have your app post trial_started (with the webhook's signature header) when a trial begins.
- The webhook is protected by a secret: send it in the header shown in the Activation panel (requests without it are refused with 403). Each request starts one run.
- The setup checklist adds a “paid plan” item before activation: live runs need a paid plan (the Free plan only runs Dry Runs).
- When every checklist item is done and the trigger is on, the checklist says “Live — this agent is running”. Follow its runs in the workflow's History tab and in Analytics → Agents.
Questions
What should trial_started contain?
A JSON POST with user_id, name, email, company, plan, use_case, team_size, trial_started_at and trial_ends_at (ISO dates). Your app posts it with the webhook's signature header. trial_ends_at is needed for the timed final email.
How is the final email timed?
In code, not by the AI: “Check the trial dates” sets it for 9:00 two days before trial_ends_at, and only when the trial ends 6–34 days from today (the run waits 3 days, then at most 30 more). Set your time zone in that step.
What does the usage endpoint return?
A GET on your API with ?email=…&user_id=… that returns JSON like {"activated": false, "checklist": {"connected_bank": true, "sent_invoice": false}, "last_active_at": "2026-10-14T09:12:00Z", "plan": "trial"}. Put a read-only API key on the HTTP connection.
Does it change the trial or billing?
No. It only sends emails, a CRM note and a Slack alert. Extending trials or applying discounts happens in your billing system.
Troubleshooting
- “No AI provider connected” or a rejected key: connect or fix the key in Settings → AI Providers, then press Test there.
- A checklist item stays unticked: the setting is still empty or still contains its placeholder text. Open the step from the checklist and fill it in.
- An app step fails with “Needs reconnect”: the account's access was revoked or expired. Reconnect it in Settings → Integrations.
- Slack says the app isn't in the channel: in Slack, type /invite @Fluxo Flow in that channel (always needed for private channels).
- Nothing happens when your form sends data: check the webhook is switched on and the request carries the secret header (403 means it's missing or wrong).
- A run shows as paused: it's waiting for someone in Reviews to approve or reject it.
- A run shows “Waiting until …” in History: that's a Wait step; it continues on its own (it can be cancelled through the API).
- A step failed: open the run in History and check that step in the Trace tab for the error and what it received.
Generated from the agent's own workflow, so it always matches what the agent does. Last updated .