How it works
The AI CMO processes each active campaign through a repeating loop:- Discover leads. When a campaign has fewer than ten pending leads, the orchestrator automatically discovers new prospects matching your ICP through multiple enrichment providers with automatic failover.
- Score leads. Each lead receives an AI-generated qualification score (0–100) with a fit level of high, medium, or low.
- Generate emails. Personalized outbound emails are composed by the AI writing model in the campaign’s salesperson persona voice, based on the campaign strategy, lead profile, and product knowledge. Each email is signed with the persona’s name and title.
- Decide whether to follow up. Before every follow-up email, the AI evaluates the lead individually — considering campaign strategy, prior contact history, and engagement signals — and skips the send if a follow-up is unlikely to be productive. See AI-powered follow-up decisions.
- Send within safety limits. Every send passes through a seven-layer safety check before delivery. Daily caps, per-minute caps, bounce thresholds, and complaint thresholds are enforced automatically. Emails are also held until the lead’s local business hours (9 am–6 pm, weekdays).
- Capture and classify replies. Inbound replies are automatically captured via a dedicated reply address, matched to the original lead, and classified by sentiment — positive, negative, neutral, out-of-office, auto-reply, request for more information, or not interested.
- Sync hot leads. Leads that reply positively or request more information are automatically pushed to your CRM. When HubSpot is connected, the AI CMO creates a deal, logs email activity on the contact timeline, and updates the lead’s lifecycle stage to sales-qualified — giving your sales team a complete handoff.
- Learn and adjust. The system synthesizes what worked — effective salesperson personas, messaging angles, subject lines — every 20 emails and again when a campaign completes. Active campaigns also receive mid-flight strategy adjustments based on bounce and reply rates.
Agentic architecture
The AI CMO uses four specialized AI agents that collaborate on each campaign. Each agent follows a reason-act loop — it plans what to do, executes the action, observes the result, and adjusts its approach before moving to the next step.
The agents run autonomously once a campaign is activated. You do not need to configure or manage them directly — the orchestrator assigns work to each agent based on the campaign’s current state.
The agentic architecture replaces the previous single-model orchestrator. Campaigns created before this update continue to work without changes — the new agents handle the same lifecycle steps with improved reasoning and adaptability.
Salesperson personas
Every campaign automatically generates a salesperson persona — a persistent fictional identity that signs all outbound emails for that campaign. The persona gives your outreach a consistent human voice instead of generic corporate messaging. When you create a campaign, the AI CMO generates a persona tailored to your target audience. A campaign targeting financial services compliance officers gets a persona with a regulatory background; a campaign targeting engineering leaders gets one with an enterprise SaaS background. The persona includes a first name, last name, title, personality style, and a short backstory that establishes credibility with your ICP.What the persona controls
How personas are generated
The persona is generated automatically during campaign creation — you do not need to configure it manually. The AI considers your campaign’saudience_description to produce a persona that would be credible and relatable to your target audience:
- Financial services audience → persona with a compliance or risk management background
- Healthcare audience → persona with health-tech or regulatory experience
- Legal audience → persona with legal-tech or document management expertise
- Technology audience → persona with enterprise SaaS or security credentials
Viewing a campaign’s persona
You can see the persona assigned to a campaign by retrieving the campaign via the API. Thesalesperson_persona field on the campaign object contains the persona details:
Persona and template campaigns
When you clone a campaign from a template, the template’s persona is copied to the new campaign. This means template-based campaigns start with a consistent persona immediately, with no additional AI generation step.If persona generation fails during campaign creation (for example, due to a transient AI model error), the campaign is still created successfully. Emails fall back to a generic senior account executive voice without a named persona. You can check whether a persona was generated by inspecting the
salesperson_persona field on the campaign object.Strategic campaign planning
When you create a campaign, the Campaign Director performs market research and competitive analysis before generating any emails. The result is a strategic campaign plan that gives the AI deeper context to craft targeted messaging instead of generic outreach. The planning step runs automatically during campaign creation — you provide anaudience_description and description, and the AI generates a full strategic plan covering pain points, objections, competitive positioning, and industry-specific triggers.
What the plan includes
These fields are stored on the campaign’s
ai_strategy object alongside the core strategy fields (icp_description, outbound_strategy, key_value_props, tone_guidelines, followup_cadence, and subject_line_formulas).
Viewing the strategic plan
Retrieve the campaign via the API and inspect theai_strategy object:
How the plan is used
The strategic plan flows into every stage of the campaign:- Email writing. The Writer agent uses pain points, objections, and competitive positioning to craft specific, relevant messaging instead of generic value propositions.
- Mid-flight adjustments. The Strategist agent performs root-cause diagnosis using the full strategic context — including market analysis, objection maps, and competitive positioning — when adjusting a live campaign. If reply rates drop, the strategist considers whether the campaign is targeting the wrong pain point or using the wrong competitive angle, rather than just tweaking tone.
- Lead scoring. The Prospector uses the ICP description and industry triggers to evaluate lead fit more precisely.
Strategic planning runs during campaign creation and does not require manual input beyond your audience and campaign descriptions. If you provide an
ai_strategy object when creating a campaign, those fields are used as-is and the AI does not overwrite them with generated values.Multi-touch engagement sequences
Campaigns design structured multi-touch email sequences where each follow-up has a distinct purpose — introduction, social proof, ROI analysis, or closing. Previously, follow-up emails were generated independently without a cohesive progression. Now, the sequence strategy is planned upfront and adapts based on campaign performance.How sequences work
When a campaign is activated, the Campaign Director can use thecompose_sequence tool to design a multi-touch engagement sequence of 2–5 emails. Each touch in the sequence has:
Example sequence
A typical four-touch sequence for a compliance campaign might look like:Sequence progression
Each email in the sequence builds on the previous one. The Writer agent knows which touch number it is composing and uses the sequence plan to select the right angle, tone, and call-to-action:- Touch 1 opens with a pattern interrupt — something unexpected that earns the right to be read, tied to a specific pain point from the campaign’s strategic plan.
- Touch 2 shifts to social proof — referencing how peers in the recipient’s industry use Truthlocks, without name-dropping specific companies.
- Touch 3 focuses on ROI — making the cost of inaction concrete with industry-specific data.
- Touch 4+ uses a breakup or completely new angle — creating urgency or pivoting the approach entirely.
Viewing a campaign’s sequence
The engagement sequence is stored in theai_strategy.engagement_sequence field on the campaign object and is visible in the campaign detail view in the console. You can also inspect the full sequence design — including rationale and expected conversion — in the agent activity viewer, where the compose_sequence tool call shows the complete output.
AI-powered follow-up decisions
Before sending any follow-up email, the AI CMO evaluates each lead individually and decides whether the follow-up is worth sending. Instead of relying solely on a fixed schedule, the AI considers campaign strategy, prior contact history, and engagement signals to determine if a follow-up is likely to be productive. If the AI decides a follow-up would not be effective — for example, because the lead has shown no engagement after multiple touches — it skips the send entirely. This reduces wasted sends and protects your sender reputation by avoiding follow-ups to unresponsive leads.How it works
On each orchestrator cycle, the AI evaluates every lead that is due for a follow-up:- The AI reviews the lead’s full contact history — emails sent, opens, bounces, and any replies.
- It considers the campaign’s strategic plan, the current engagement sequence stage, and broader campaign performance signals.
- If the AI determines the follow-up is unlikely to generate a response, it skips the lead for that cycle.
- If the AI approves the follow-up, the email is generated and enters the normal safety controls pipeline.
Controlling maximum follow-ups
You control the maximum number of follow-ups per lead with themax_followups setting on each campaign. The default is 3 and the maximum is 10. The AI will never send more follow-ups than this limit, but it may send fewer if it determines earlier follow-ups are unproductive.
Set max_followups when creating or updating a campaign:
The AI follow-up strategist works alongside your existing multi-touch engagement sequence. The sequence defines the plan for each touch, while the AI decides whether each scheduled follow-up should actually be sent based on real-time signals.
Automatic email verification
Every lead discovered through multi-source lead discovery is automatically verified for email deliverability before being imported into a campaign. Leads with email addresses that score below the verification threshold are filtered out during discovery, so they never enter your pipeline or receive outreach. This runs automatically with no configuration on your part. The verification step:- Checks the email address for syntax, domain validity, and mailbox existence.
- Filters out disposable, role-based, and undeliverable addresses.
- For GitHub-sourced leads with no public email, attempts to find and verify an email address automatically through a secondary provider.
Email verification applies to all leads discovered through enrichment providers. Leads you import manually via CSV or the API are not automatically verified — verify your lists before importing to maintain low bounce rates.
Multi-source lead discovery
The prospector agent discovers leads from a four-tier enrichment pipeline — Apollo, Google search, directory scraping, and GitHub — and automatically fails over between them. If one provider is unavailable, rate-limited, or returns no results, the agent switches to the next available source without interrupting the campaign. This means:- No manual intervention. You do not need to configure which provider to use or switch providers when one is down.
- No campaign interruption. Lead discovery continues seamlessly even if a provider experiences an outage.
- Broader coverage. The prospector queries multiple sources, increasing the number and diversity of leads matching your ICP.
source field on each lead also records the discovery provider for attribution tracking.
GitHub as a lead source
When your campaign targets engineering personas — CTOs, VPs of Engineering, Heads of Engineering, or similar technical leadership roles — the prospector agent can discover leads directly from GitHub. The agent searches public GitHub profiles matching your ICP description, then extracts name, company, location, and job title from each profile. GitHub lead discovery is useful when:- Your ICP targets engineering leadership at software companies.
- Other enrichment providers are unavailable or rate-limited.
- You want to reach technical decision-makers who may not appear in traditional sales databases.
How it works
- The prospector extracts role keywords from your campaign’s ICP description (e.g. “CTO”, “VP Engineering”, “Head of Engineering”).
- It searches GitHub for public user profiles matching those roles, sorted by follower count.
- For each profile, it extracts the user’s name, company, bio, location, and public email.
- Profiles without a company association and fewer than 50 followers are filtered out.
- When a GitHub-sourced lead has no public email, the platform attempts to find the email through a secondary email verification provider.
GitHub-sourced leads appear with a source of
github in the agent activity viewer. You can inspect the prospector’s tool calls to see the exact search query and which profiles were evaluated.Leads that work best with GitHub discovery
The agent maps these keywords from your campaign’s
icp_description or audience_description field — no additional configuration is needed.
Google search discovery
When Apollo is unavailable or returns no results, the prospector can discover leads through intelligent web search using Google Custom Search Engine (CSE) or SerpAPI. The agent builds targeted search queries — sometimes called “dorking” — to find prospects across public sources:
The prospector automatically selects the most effective query patterns based on your campaign’s ICP description and target industry. You do not need to configure search queries manually.
Google search discovery requires a Google CSE API key and engine ID, or a SerpAPI key. Configure these in your platform settings. If neither is configured, the prospector skips this tier and falls through to directory scraping.
Directory scraping
The prospector can also discover leads from open web directories and public databases. This tier is useful for industries where prospects are listed in regulatory or professional registries:
Directory scraping does not require API keys — it works with publicly available data.
Provider failover and circuit breakers
Each enrichment provider is protected by a circuit breaker. If a provider returns a hard error (such as an authentication failure or payment-required response), it is placed on a one-hour cooldown. During cooldown, the prospector skips that provider and moves to the next one in the failover chain. This prevents a single misconfigured or rate-limited provider from blocking lead discovery across your campaigns. The failover order is:- Apollo — highest-quality results, requires a paid API key.
- Google search — intelligent web search using CSE or SerpAPI to find prospects on LinkedIn, team pages, PDFs, and regulatory filings.
- Directory scraping — open web sources including SEC EDGAR and professional association directories.
- GitHub — free fallback, best for engineering personas. Works without authentication at 60 requests per hour, or at 5,000 requests per hour with a GitHub token.
Lead source attribution
Every lead records which enrichment provider discovered it, so you can track where your pipeline is coming from. Thesource field on each lead shows the discovery provider — apollo, google, directory, or github. Leads you import manually show manual or csv_import.
Source attribution appears in the leads list in the console and in API responses. Use it to evaluate which discovery channels produce the highest-quality leads for your campaigns.
Agent activity command center
The Growth > Agent Activity page in the console is a real-time command center for monitoring your AI CMO campaigns. It presents agent reasoning, delivery metrics, and operational alerts in a four-column dashboard with interactive charts.Command header
A sticky header at the top of the page provides at-a-glance context and quick controls:- Breadcrumb — shows your position in the console: Growth > AI CMO > Activity.
- Campaign selector — a dropdown to switch between campaigns. Template campaigns are automatically filtered out.
- Status indicator — shows whether the selected campaign is Active (with a pulsing green dot) or in another state such as paused or completed.
- Live clock — updates every second so you can correlate activity timestamps.
- New activity indicator — a pulsing label appears when new agent entries arrive.
- Refresh button — click to fetch the latest data immediately. The timestamp of the last refresh is shown alongside the button.
Four-column layout
The command center is organized into four columns on wide screens. On smaller screens the columns stack vertically.Stat cards
Six cards with colored left-border accents and animated counters give you a numeric snapshot of the selected campaign:Charts
Five interactive charts visualize campaign performance. All charts support light and dark themes and display tooltips on hover.Cycle activity chart
An area chart showing turns, thoughts, and tool calls per reasoning cycle (up to the last eight cycles). Use this to spot whether agent activity is increasing or tapering off across cycles.Email pipeline chart
A bar chart showing the delivery funnel for the selected campaign:Delivery funnel chart
A horizontal bar chart showing the progression from sent to delivered to replied, with the current reply rate displayed in the header. Use this to identify where emails are dropping off in the delivery pipeline.Tool usage donut
A donut (pie) chart showing the distribution of tool calls by tool name. The top six tools are shown, color-coded, with a legend listing each tool and its call count. The total number of tool calls appears in the chart header.Campaign health card
A compact status card showing:- Bounce rate and reply rate as color-coded chips (green when healthy, amber or red when thresholds are approached or exceeded).
- Total bounced email count.
- A daily cap progress bar showing how many of the daily email limit have been used.
Cycle feed
The cycle feed panel lists every reasoning cycle for the selected campaign. Each entry shows:- A cycle number badge (the most recent cycle is highlighted in cyan with a Latest label and a pulsing dot).
- A count of turns, thoughts, and tool calls.
- A preview of the cycle’s decision text (first 60 characters).
- Total execution time.
Latest decision preview
Below the cycle feed, a preview card shows the most recent cycle’s decision text (first 200 characters) along with three health checks:- Whether the bounce rate is within acceptable limits.
- Whether the reply rate meets the 1% threshold.
- Whether the campaign is currently active.
Decision modal
Click any cycle in the feed or the Read Full Decision button to open a full-screen modal with deep-dive details for that reasoning cycle:- Decision badge — the first line of the AI’s decision, highlighted in an amber panel.
- Performance grid — four metric cards showing total turns, time spent, leads discovered, and emails written during the cycle.
- Turn composition chart — a bar chart breaking down the cycle’s turns into thoughts, tool calls, results, and decisions.
- Reasoning trail — every turn in the cycle rendered as a color-coded card. Thought cards expand by default; tool call and tool result cards include collapsible JSON sections showing exact inputs and outputs.
- AI reasoning — the full structured reasoning text from the decision, rendered with markdown-style headings and bullet points.
Turn cards
Each turn in the reasoning trail is displayed as a color-coded card:
Each card shows the execution duration. Click any card to expand or collapse its content.
Alerts panel
The alerts column displays synthetic alerts derived from campaign stats. Alerts are generated automatically — no new API endpoints or configuration are required.
When no alerts are active, the panel shows an All clear message. A badge on the alerts header shows the count of critical and warning alerts.
When to use the command center
Live refresh
The command center refreshes automatically every 15 seconds while the page is open. Active campaigns display a pulsing green dot in the command header. A New activity label pulses briefly when fresh data arrives. Click Refresh at any time to fetch the latest data immediately.AI model tiers
The AI CMO routes tasks to three model tiers based on complexity:
You can view which models are in use from the Settings page in the Growth section or via the settings API endpoint.
Getting started
1
Open the Growth section
Navigate to Growth in the console. The dashboard shows an overview of active campaigns, emails sent today, average bounce rate, and total replies.
2
Choose a campaign approach
You can start outreach in two ways:
- Use a template. Ten pre-built campaign templates target specific industry verticals with complete AI strategies. Click Use Template in the campaigns list to clone a template into a new campaign instantly — no AI planning step required. See campaign templates for the full list and workflow.
- Create from scratch. Define your own ICP, messaging strategy, and safety limits via the API.
3
Import or discover leads
Add leads to your campaign manually, via bulk import, or let the orchestrator discover them automatically when the campaign is active.To import leads via the API:The
country and timezone fields are optional. If provided, they enable timezone-aware outreach so emails arrive during the lead’s local business hours.4
Activate the campaign
Activate from the console or via the API:The orchestrator begins processing leads and generating emails immediately.
5
Monitor from the dashboard
Track campaign performance in real time from the Growth dashboard. Click into any campaign to open the detail view with six tabs:
- Overview — campaign strategy, status, and configuration
- Leads — all leads associated with the campaign, their status, and follow-up count
- Emails — every email generated by the AI, with delivery status and content hash
- Pending Approval — emails awaiting your review (when approval mode is enabled)
- Analytics — sent, bounced, and replied counts at a glance
- Learnings — AI-synthesized insights on effective personas, industries, and messaging
Growth dashboard
The Growth section of the console opens to a dashboard that gives you an at-a-glance view of your outbound program. The dashboard displays four key metrics:
Below the metrics, the dashboard shows three charts and two data panels.
Dashboard charts
Emails sent by campaign
A bar chart showing the number of emails sent per campaign (up to eight campaigns). Bars are color-coded by campaign status:Reply rates
An area chart plotting the reply rate percentage for each campaign that has sent at least one email. A shaded green gradient fills the area below the line. Use this to compare reply performance across campaigns at a glance.Campaign status distribution
A pie chart breaking down your campaigns by status — active, paused, completed, draft, and failed. Each status has a distinct color. Use this to see the overall composition of your campaign portfolio.Data panels
- Recent campaigns — a list of your most recent campaigns with their status, emails sent count, and reply rate. Click any campaign to open its detail view.
- Recent activity — an audit log of the last ten events across all campaigns, showing what happened and when. Use this to spot issues like bounces or auto-pauses without clicking into individual campaigns.
Dashboard API
Retrieve the same data programmatically:The dashboard refreshes in real time. The bounce rate card turns red when the average exceeds 3%, signaling that one or more campaigns may need attention.
Knowledge base
The knowledge base stores product information that the AI CMO uses to personalize outreach emails. Knowledge entries are injected into every AI prompt, giving the writing model context about your product, ideal customers, and competitive positioning. Entries carry forward across campaigns — when you add or update a knowledge entry, every future campaign benefits from it automatically.Knowledge categories
Each entry belongs to one of these categories:Managing entries in the console
Open Growth > Knowledge Base in the console. From this page you can:- Add entries — click New Entry, choose a category, and provide a title, content, and priority (0–100).
- Edit entries — click any entry to update its title, content, category, or priority.
- Toggle active/inactive — each entry has an active switch that controls whether it is injected into AI prompts. Deactivate an entry to temporarily exclude it from AI-generated emails without deleting it.
- Delete entries — permanently remove entries you no longer want the AI to reference.
- Filter by category — use the category tabs to narrow the list.
Managing entries via the API
List all entries
Create an entry
Update an entry
title, content, category, priority, and active in a single request. Toggle active to false to temporarily exclude an entry from AI prompts:
Delete an entry
Campaign learnings
The AI synthesizes what worked into campaign learnings — capturing effective personas, industries, messaging angles, subject lines, and reply rates. You can view learnings in the Learnings tab of any campaign detail view, or retrieve them via the API.Periodic learning
The orchestrator synthesizes learnings every 20 emails while a campaign is running, so the AI CMO improves its messaging continuously rather than waiting for a campaign to complete. This is especially important for continuous campaigns that may run for weeks or months without completing. Learnings are also synthesized when a non-continuous campaign auto-completes. To list recent learnings across all campaigns:Campaign lifecycle
Campaigns move through these states:
Template campaigns cannot be activated directly. Use the Use Template action to clone a template into a new campaign, then activate the clone. See campaign templates for details.
A non-continuous campaign only auto-completes when all leads have been exhausted and at least one email has been sent. This prevents newly activated campaigns from completing instantly before lead discovery has had a chance to run. If a campaign has zero sends, the orchestrator keeps it active until leads are discovered and processed. Continuous campaigns never auto-complete.
Campaigns auto-pause when the bounce rate or complaint rate exceeds the configured threshold.
Continuous campaigns
By default, campaigns are continuous — they run indefinitely, discovering new leads and sending emails without ever auto-completing. This is useful for ongoing outbound programs where you want the AI CMO to keep finding and engaging prospects matching your ICP over time. When a continuous campaign has no pending leads, the orchestrator waits and continues to discover new prospects rather than marking the campaign as completed. Learnings are synthesized periodically so the AI improves its messaging throughout the campaign’s lifetime. Setcontinuous to false when creating a campaign if you want it to auto-complete after all leads have been processed:
In the console, continuous campaigns display a Continuous badge on the campaign detail page and in the campaigns list.
Campaigns cloned from templates are always continuous by default.
Timezone-aware outreach
The AI CMO only sends emails during local business hours — 9 am to 6 pm, Monday through Friday — in each lead’s timezone. Emails are never sent on weekends. If a lead’s send window is closed, the email is automatically deferred to 9 am on the next weekday in the lead’s local time. The deferred send is stored on the lead record and picked up by the orchestrator when the window opens — no manual intervention is needed. Timezone-aware sending is always active for every campaign. There is nothing to enable or configure.How timezones are resolved
Timezones are resolved in this order:- Explicit timezone — if you set a
timezonevalue (IANA format, e.g.America/New_York) when importing the lead, that value is used. - Country lookup — if no timezone is set but a
countryis present (ISO 3166-1 alpha-2, e.g.US,GB), the timezone is inferred automatically from the supported country list. - Auto-discovered leads — leads found through enrichment providers have their country and timezone populated automatically during discovery.
- Fallback — if neither timezone nor country is available, the system falls back to UTC.
For countries that span multiple timezones, the most common business timezone is used. For example,
US maps to America/New_York (Eastern Time) and AU maps to Australia/Sydney.Supported countries
52 countries are mapped to IANA timezones across five regions.- Americas
- Europe
- Middle East & Africa
- Asia-Pacific
How deferral works
When the orchestrator processes a lead and the lead’s local time falls outside the 9 am–6 pm weekday window, the following happens:- The email is not generated or sent.
- The lead’s next follow-up time is set to 9 am on the next weekday in their local timezone.
- The orchestrator skips the lead until that time arrives.
Asia/Tokyo processed at 11 pm JST on a Friday will not receive their email until 9 am JST on the following Monday.
Follow-up emails use a 48-hour interval by default. If the 48-hour mark falls outside business hours, the follow-up is deferred to the next business-hours window automatically.
Safety controls
Every email passes through a seven-layer safety check before sending:- Global kill switch — operator-level emergency stop across all campaigns.
- Campaign kill switch — stops a single campaign immediately.
- Campaign status — only active campaigns can send.
- Daily send cap — maximum emails per day per campaign (default: 1,000).
- Per-minute cap — sliding-window rate limit per campaign (default: 5).
- Bounce rate threshold — auto-pauses the campaign if exceeded (default: 5%).
- Complaint rate threshold — auto-pauses the campaign if exceeded (default: 0.1%).
When a campaign is auto-paused due to bounce or complaint thresholds, you must investigate the cause before resuming. This protects your sender reputation.
Managing campaigns via the API
Create a campaign
The
ai_strategy object accepts these fields. All fields are optional — if you omit them, the AI generates values automatically during strategic campaign planning:
The response returns the full campaign object:
Clone a template into a new campaign
Create a new campaign by cloning an existing template. The template’s AI strategy, description, and safety limits are copied as-is — no AI planning call is made, so the operation completes instantly.draft status. The new campaign’s name is the template name with (Campaign) appended. Customize it with a PATCH request before activating.
See campaign templates for the full workflow.
Pause, resume, or kill a campaign
Reactivate a campaign
Transition acompleted or failed campaign back to active. All leads are reset to pending so they re-enter the processing pipeline from the beginning.
Only campaigns in
completed or failed status can be reactivated. Attempting to reactivate a campaign in any other state returns an error. In the console, a Reactivate button appears on the campaign detail page when the campaign is eligible.Simulation mode
Simulation mode lets you preview the full orchestrator pipeline — lead discovery, scoring, and email generation — without delivering any emails. Whensimulation_mode is true on a campaign, every email the AI generates is recorded with a status of simulated instead of being sent through SES. Use simulation mode to validate your ICP, review generated email content, and confirm safety limits before switching to live delivery.
Set simulation mode when creating a campaign:
Filtering emails by simulation status
In the console, the Emails tab provides a tri-state filter to view simulated emails only, real emails only, or both. Via the API, thesimulation boolean on each email object indicates whether the email was simulated.
Global simulation default
You can setsimulation_default to true in the Growth settings so that every new campaign starts in simulation mode by default. Individual campaigns can still override this at creation time by explicitly setting simulation_mode to false.
Approval mode
Whenapproval_required is set to true, every AI-generated email is held with a status of pending_approval instead of being sent automatically. You review and approve each email individually from the Pending Approval tab in the console or via the approve endpoint. Only after approval does the email move to queued and enter the normal send pipeline.
This gives you full control over outbound messaging before any email leaves the system. Approval mode is useful when:
- You are launching a campaign targeting a sensitive audience and want to review every message.
- Compliance requires human review of AI-generated outbound content.
- You want to spot-check email quality before allowing autonomous delivery.
Approval workflow
- The orchestrator generates an email and sets its status to
pending_approval. - The email appears in the Pending Approval tab in the console, or in the response from
GET /campaigns/{id}/pending. - You review the subject, recipient, and email body.
- Approve the email via the console or by calling
POST /campaigns/{id}/emails/{emailId}/approve. - The email status changes to
queuedand enters the standard send pipeline — safety controls, daily caps, and timezone-aware delivery still apply.
Campaign detail endpoints
Once a campaign is created, you can query its leads, emails, pending approvals, stats, and learnings through campaign-scoped endpoints. These are the same endpoints that power the campaign detail tabs in the console. All endpoints below are scoped to a single campaign by ID.List campaign leads
Retrieve leads associated with a specific campaign, with pagination support:List campaign emails
Retrieve all emails generated for a campaign:Email statuses
List pending approvals
Retrieve emails awaiting manual approval before sending. This endpoint only returns results when the campaign hasapproval_required set to true.
Get campaign stats
Retrieve delivery and engagement metrics for a campaign:Get campaign learnings
After a campaign completes, the AI synthesizes what worked. Retrieve those learnings:
The orchestrator applies these learnings automatically to future campaigns targeting similar audiences.
Approve a pending email
If your campaign uses approval mode, approve a specific email to queue it for sending:Add a lead to a campaign
Attach an existing lead to a campaign:Lead management
The Growth > Leads page in the console is your central hub for managing outbound leads across all campaigns.Managing leads in the console
From the leads page you can:- Add a lead — click Add Lead and fill in email, name, company, title, and industry.
- Import leads from CSV — click Import, upload a CSV file with columns
email,first_name,last_name,company,title, andindustry, and optionally assign all imported leads to a campaign. - Score a lead with AI — click Score next to any lead to trigger AI-powered qualification scoring. The AI returns a numeric score (0–100) that updates in place.
- Add a lead to a campaign — click Add to Campaign next to any lead and select the target campaign from the dropdown.
new, qualified, contacted, replied, converted, unsubscribed, and bounced.
List all leads
Retrieve all leads across campaigns with optional search filtering:Get a single lead
Retrieve a specific lead by ID:inquiry_message and country fields when available.
Create a single lead
Add a single lead to your pipeline via the API. The lead is created in the global lead pool and can be assigned to a campaign separately.
On success, the endpoint returns HTTP 201 with the full lead object. To add multiple leads at once, use the bulk import endpoint instead.
Import leads via the API
Score a lead
Trigger AI scoring for a specific lead with optional campaign context:high, medium, or low), and the AI’s reasoning.
Lead lifecycle
Leads move through a defined set of statuses as you engage with them. You can update a lead’s status manually from the lead detail page or through the API.
A typical progression is
new → contacted → replied → qualified → converted. Leads that opt out move to unsubscribed, leads with delivery failures move to bounced, and leads you no longer want in the active pipeline can be set to archived. The orchestrator updates contacted, replied, and bounced automatically based on campaign activity — you only need to set statuses manually for qualified, converted, unsubscribed, and archived.
Update lead status via the API
Delete a lead
Permanently remove a lead from your pipeline. In the console, click Delete next to any lead in the leads list and confirm the prompt. Via the API:Lead detail view
Click any lead in the leads list to open its detail page. The detail view shows:- Identity context — name, company, email, source, and submission date.
- Inquiry message — the original message submitted by the lead, if any.
- Status badge — the lead’s current lifecycle status, color-coded for quick identification.
- Mark as contacted — update the status to
contactedwhen you have reached out. - Archive — move the lead out of the active pipeline.
- Onboard as customer — convert the lead into a platform customer (see lead conversion below).
Lead conversion
When a lead is ready to become a customer, you can convert them directly from the lead detail page or via the API. Conversion sends an enterprise onboarding invite to the lead’s email address with a link to set up their organization account on the platform. From the console: Open the lead detail page and click Onboard Customer. A confirmation dialog shows the recipient email and company. Click Confirm & Send Invite to send the onboarding invite. From the API:qualified and an enterprise onboarding invite is sent to the lead’s email. The lead’s detail page shows an Onboarded badge once converted.
Example response:
Lead conversion is a one-way action. Once an onboarding invite is sent, the lead cannot be reverted to a pre-conversion state. Verify the lead’s email and company before confirming.
Export leads to CSV
You can export your full lead pipeline to a CSV file from the Leads page in the console. Click Export Pipeline to download a CSV containing every lead currently visible in the list. The exported file is namedleads-export-YYYY-MM-DD.csv using the current date, and includes these columns:
Use the search bar to filter leads by name, company, or email before exporting — the CSV includes only the leads matching your current filter. This is useful for exporting a subset of your pipeline (e.g. all leads at a specific company) for offline analysis, CRM import, or sharing with stakeholders.
Email management
The Growth > Emails page in the console shows a log of all AI-generated emails across every campaign. Use it to monitor delivery status, review email content, and spot problems.Filtering the email log
Three filters narrow the log:Viewing email details
Click any email in the log to open a detail drawer showing:- Subject and status — the email subject line with a status badge.
- Content hash — the SHA-256 hash of the email body, useful for integrity verification.
- AI prompt hash — the hash of the prompt used to generate the email.
- SES message ID — the Amazon SES tracking ID for delivered emails.
- Event timeline — a chronological list of delivery events (send, delivery, bounce) with timestamps.
- Body preview — the rendered HTML email body so you can review exactly what the recipient saw.
Cross-campaign approval queue
The Growth > Emails > Pending Approval page shows all emails awaiting manual approval across every campaign that has approval mode enabled. This gives you a single queue to review and approve outbound emails without opening each campaign individually. Each entry shows the campaign name, recipient, subject line, and generation timestamp. Click Approve to send the email into the delivery pipeline.Reply capture
The AI CMO automatically captures replies to outbound emails and routes them back to the platform for classification. Every outbound email includes aReply-To header pointing to your dedicated reply address (e.g. sales@truthlocks.com) and a tracking header (X-CMO-Email-ID) that links the reply back to the original email and lead.
When a prospect replies, the platform:
- Receives the inbound email via an SES webhook.
- Matches the sender to an existing lead in your pipeline.
- Links the reply to the most recent outbound email sent to that lead.
- Creates an inbound reply record with the full message body, sender, and timestamp.
- Queues the reply for AI sentiment classification.
How reply matching works
The platform uses the sender’s email address to match inbound replies to existing leads. If a reply arrives from an email that does not match any known lead, it is logged but not classified. When a match is found, the reply is linked to the most recent outbound email sent to that lead, preserving the conversation thread.Reply capture requires a verified SES domain and an active inbound email rule. The reply address is set in the
reply_to_address field in your Growth settings (e.g. sales@truthlocks.com). This is configured at the platform level — no per-campaign setup is needed.Reply classification
Once a reply is captured, the AI CMO classifies it with one of these sentiment labels:
Classification runs automatically in the background. The reply processor polls for unclassified replies and uses AI to determine sentiment based on the full reply text.
Replies classified as
positive or request_more_info are flagged as hot leads and trigger automatic actions:
- The lead’s status is updated to
replied. - A deal is created in your connected CRM with the sentiment score and reply text.
- The lead’s lifecycle stage is advanced to
salesqualifiedleadin HubSpot. - Optional webhooks fire with the reply event.
CRM integration
Hot leads — those with apositive or request_more_info reply — are automatically pushed to your connected CRM through a full pipeline that keeps your sales team informed at every stage.
Supported providers
What happens automatically
When you connect HubSpot, the AI CMO performs these actions without manual intervention:
This means your sales team sees new deals appear in their HubSpot pipeline the moment a prospect expresses interest — complete with the AI’s sentiment analysis and the full reply text for context.
Configuring HubSpot
Connect HubSpot from the Growth Settings page in the console, or via the settings API. You need two values from your HubSpot account:null.
HubSpot activity timeline
Every outbound email the AI CMO sends is logged as an email activity on the corresponding HubSpot contact. This gives your sales reps full visibility into what the AI sent before they take over the conversation — including subject lines, send timestamps, and delivery status.Settings
Retrieve settings
Retrieve your AI CMO configuration:Update settings
Update one or more settings with aPATCH request:
ses_status, bedrock_model_id, bedrock_model_fast, and bedrock_model_write are ignored if included.
Global kill switch
The global kill switch immediately stops all active campaigns from sending emails. When activated, no emails are sent across any campaign until you deactivate it. From the console: Open Growth > Settings and toggle Global Kill Switch under the Safety section. A confirmation dialog requires you to confirm before activation to prevent accidental use. From the API:Related
Campaign templates
Activate pre-built campaigns for ten industry verticals.
Webhooks
Receive real-time notifications for campaign events including hot lead replies.
Authentication
Set up your API key for growth API access.
Error reference
Troubleshoot API errors including retryable vs. terminal failures.

