Office hours: Build your self-driving GTM engine·Oct 29, 9:00am PT, onlineRegister→
Cargo
  • ProductAgentsReduce manual effort and close more deals with AIPlaysAutomate every stage of lead management so you can move fasterToolsAutomate repetitive tasks so your team can focus on what drives impactData ModelsUnify, organize, and activate your revenue dataAppsCustom interfaces for your team, wired to your live GTMTerritoriesModel your team, territories, and capacity in one placeContextOne shared knowledge base for your team and agents
    Add-onsChrome ExtensionSell faster, right in your browserButtonTrigger AI agents inside your CRMFormTurn any tool into an embeddable formSlackTag Cargo in Slack. It does the GTM workGitHubPlan on every pull request, deploy on merge
    MoreProjectsDefine your entire GTM in codeCLIUse Cargo from your terminalMCPUse Cargo from Claude and ChatGPTDeveloper resourcesCargo API docs, OpenAPI spec, auth docs, webhooks, MCP serverAPI ReferenceExplore the Cargo APIDocumentationLearn how to use CargoIntegrationsConnected to your entire GTM stack
  • VeriffHow Veriff replaced MuleSoft with Cargo under NetSuite, Stripe and SalesforceAugmentHow Augment Code routes developer sign-ups to reps in under an hourWeights & BiasesHow Weights & Biases ships a new purchase signal in 2 days on CargoSee all
  • Pricing
  • Cookbooks
  • Blog
Sign in
~/plays/

Your GTM, as workflowsthat run on a trigger.

A play watches a model and fires when a row changes, on a schedule, or on demand. Each step is a tool, an agent, or a connector. Every run is retried on failure and traced end to end.

Start building

Trusted by GTM teams at

  • Augment Code
  • Weights & Biases
  • Dust
  • WorkOS
  • Braintrust
  • Descript
  • Alaan
  • Engine
  • Scaleway
  • Preply
  • DataDome
  • Oneflow
backed by y combinator

Trigger, workflow, runs

What starts a play, the steps it takes, and a record of every lead it ran on.

Trigger

Starts on a record change, a schedule, or by hand.

  • New lead
  • New call transcript
  • New signup
  • New paying customer
  • New star
  • New inbound lead
Route inbound leads
TriggerEditorRecordsMetrics

Schedule

Type*
ManualEnroll records manually
Real-timeTrigger your play when new records are added
IntervalSchedule your play to run on a set interval (e.g., once per hour)
CronSchedule your play using a cron expression
DependencySchedule after a play finished running
Interval*
Every hour

Syncs are scheduled in UTC

Conditions

Filter
Lifecycle stage is LeadANDEmail is not empty
Add group

Changes

Mode*
New records onlyOnly new records that match the conditions will be enrolled in the play
New and updated recordsNew and updated records that match the conditions will be enrolled in the play
FullProcess all matching records
CustomAdvanced mode
Changes included*
AddedUpdatedUnchanged

Enrollment

Rule*
Always enrollEnroll the record into a new play run every time the trigger fires for that record
Enroll onceOnly enroll each record once, even if the trigger fires multiple times for the same record
If is not currently enrolledOnly enroll a record if it's not already in an active run, preventing concurrent runs
Save
Model
Contacts

The model associated with this play. Each record within this model is eligible for enrollment in the play.

Enroll manuallySync now

Workflow

Each step is a tool, an agent, or a connector.

Route inbound leads
TriggerEditorRecordsMetrics
Realtime
ContactsHubSpotstart
ICP fitScore against the ICP, out of 100score_icp
Route by countrySwitchroute_country
AllocateTerritory: United Statesallocate_us
AllocateTerritory: Franceallocate_fr
AllocateTerritory: EMEAallocate_emea
Update ownerSalesforceupdate_owner
United StatesFranceOther

Runs

Every record that enters gets a row, with what each step returned.

Enabled
Route inbound leads
TriggerEditorRecordsMetrics
Search...
5/5 nodesFilter5/5 statusesAll versionsAll batchesAll dates
1,284 records
Startstart
ICP fitscore_icp
Route by countryroute_country
Allocateallocate_owner
Update ownerupdate_owner
Ada Lovelace
82/100
United States
alice@acme.com
Owner updated
Grace Hopper
74/100
France
marc@acme.com
Owner updated
Alan Turing
91/100
Other
dana@acme.com
Owner updated
Katherine Johnson
68/100
United States
sam@acme.com
No Salesforce lead matches this email
Edsger Dijkstra
55/100
France
Running...
Mary Jackson
77/100
Other
dana@acme.com
Owner updated
Claude Shannon
86/100
United States
alice@acme.com
Owner updated
Barbara Liskov
63/100
France
marc@acme.com
Owner updated
Default

What teams run as plays

Three we see most, each built from the same steps.

Route to the right rep, then tell them

Allocate picks a rep with room, and Slack tells them.

#inbound-us

Ada Lovelace at Northwind, ICP fit 82, assigned to Alice Martin

Allocateallocate_us
Configuration
Record ID*
{{nodes.start.email}}

Define a unique ID to track each lead being allocated

Type*
MembersSelect specific team members to distribute leads in a round-robin fashion
TerritoryAllocate leads to members based on their assigned territory
EmailAllocate leads to a specific team member by matching their email address
MatchingMatch and allocate leads to members using their external integration IDs (e.g., Salesforce ID, Outreach ID)

Choose how to allocate the lead

Territory*
United States

Only the members in the selected territory will be picked

Capacity
20 leads / week

Choose a capacity configuration

Allocate

Write the first email

Draft it from the owner's mailbox, with what the play learned about the account.

PendingInbound routing at Northwind
Nov 3rd, 2026 at 10:16 AM
Fromalice@acme.com
Toada@northwind.com
alice@acme.comNov 3rd, 2026 at 10:16 AM

Hi Ada,

You are hiring two SDRs, and right now inbound at Northwind is assigned by hand in HubSpot. Teams your size usually lose the first hour on every lead that way.

We route each new lead to the right rep by territory the moment it lands, with a cap of 20 a week per rep so nobody drowns.

Worth 20 minutes next week to see it on your own data?

Alice

Activity
Waiting for delivery...

Score accounts

A score on every row, kept as a column on the model.

Companies
2 hours ago
All records
FilterSort12,480 records6/24 columns
Name+23
Domain
Employees
Country
Industry
ICP fit
Add column
Northwind
northwind.com
420
United States
Logistics
82
Contoso
contoso.com
1,200
France
Software
74
Globex
globex.com
3,400
Germany
Manufacturing
91
Initech
initech.com
260
United States
Software
68
Fabrikam
fabrikam.com
880
France
Retail
55
Umbrella
umbrella.com
2,100
United Kingdom
Healthcare
79
Stark Logistics
starklogistics.com
640
United States
Logistics
88
Wayne Freight
waynefreight.com
1,450
Spain
Logistics
71

Describe the play, or declare it in code

Both write the same code into your repo. Pick who types it.

Set up Claude Code with Cargo
Claude Code

Route every new contact: enrich it, score it, and assign it to the rep who owns the territory.

Claude
Write(infra/plays.ts)
+ inboundRouting: contacts, on added+ workflow: enrich, score, route
Bash(cargo-ai project plan)
+ create play:inbound-routing1 to create, 0 to update, 14 unchanged.
Bash(cargo-ai project deploy)
✓ play:inbound-routing created✓ 1 created, 0 updated, 14 unchanged.

Deployed. inbound-routing now runs on every new contact.

1import { definePlay } from "@cargo-ai/cdk";
2
3// Runs per row over a data model, with retries + versioning
4export const inboundRouting = definePlay("inbound-routing", {
5model: contacts,
6workflow: routeFlow,
7changeKinds: ["added"],
8});
$ cargo-ai project plan
+ create play:inbound-routing
1 to create, 0 to update, 14 unchanged.
$ cargo-ai project deploy
✓ play:inbound-routing created
✓ 1 created, 0 updated, 14 unchanged.

Cookbooks built on plays

Plays you can install and adapt, with everything they run on.

AS

Account scoring

Score every account against your ICP on a schedule.

CD

CRM deduplication

Deduplicate CRM accounts and contacts and keep them duplicate-free.

CE

CRM enrichment

Clean up and enrich a messy CRM.

ES

Expansion signals

Find which customers are ready to expand before renewal.

IQ

Inbound qualification

Qualify and route inbound demo requests from your website form.

NH

New hire detection

Get a Slack alert when a decision-maker joins a company in your ICP.

See all cookbooks
Hypergrowth
“Essential. Innovative. Indispensable. Cargo let you build your unique growth engine, a much-needed solution in the market today.”
Guillaume CabaneGuillaume Cabane · Co-Founder @Hypergrowth
Oneflow
“Cargo allows us to aggregate data from external sources and orchestrate it to meet our go-to-market needs across different countries.”
Alexandre BejaouiAlexandre Bejaoui · Head of Revenue Operations @Oneflow
Weights & Biases
“Cargo allows us to grease the wheels across the revenue organization, surfacing signals to AEs, customer success, and leadership at just the right moment.”
Frederic PinchonFrederic Pinchon · Director Revenue Analytics @Weights & Biases

Build the self-driving GTM engine

Your coding agents build it on Cargo.Or our team builds, operates and improves it with you.

Start building
Cargo
Backed byY CombinatorSOC 2 Type IICertified
LinkedinX

Product

AI AgentsPlaysToolsData ModelsAppsTerritoriesContextEnrichmentRoutingIntegrationsPricing

Add-ons

Chrome extensionButtonFormSlackGitHub

Build

DocsDeveloper resourcesCargo API docsCargo OpenAPI specCargo auth docsCargo webhooksCargo MCP serverProjectsClaude Code

Resources

ReportsBlogCustomer storiesCookbooksGTM skillsGTM EngineeringGlossaryCompareCargo x ClayCargo x WorkatoCargo x n8nCargo x DeeplineCargo x DefaultCargo x LeanDataCargo x UnifyCargo x ValleyCargo x Gojiberry

Company

ManifestoCommunityEventsJobsPartners DirectoryPartner Program

Legal

SecurityTerms of servicePrivacy PolicyRefundsDPASupport
© 2026 Cargo
 ////////    ///////    ////////     ////////    ///////
///         ///   ///   ///   ///   ///         ///   ///
///         ///   ///   ///   ///   ///         ///   ///
///         /////////   ////////    ///  ////   ///   ///
///         ///   ///   /// ///     ///   ///   ///   ///
///         ///   ///   ///  ///    ///   ///   ///   ///
 ////////   ///   ///   ///   ///    ///////     ///////

$ npm install -g @cargo-ai/cli