One engine under every motion
Unify takes a signal to a rep-approved send. Cargo holds the data model, scoring, routing and plays behind inbound, outbound and expansion.
Trusted by GTM teams at
Unify owns one motion. Cargo is the engine under all of them.
Same accounts, different scope. Unify stops at the send. Cargo holds the data and logic every motion reads.
| Cargo | ||
|---|---|---|
| Built for | Warm outbound, signal to rep-approved send | Every motion: inbound, outbound, expansion |
| Data model | Scoped to outbound | A system of record other tools build on |
| Routing | Outside the product's scope | Territories, capacity and assignment |
| GTM as code | Configured in Unify | TypeScript in your git repo, written by your coding agent |
| Best when | Outbound is the whole job | The job is the revenue engine |
In short. Use Unify for rep-approved outbound. Use Cargo when the same accounts also drive inbound, routing and expansion.
What an outbound tool leaves out
Unify's scope ends at the send. Every other motion needs these.
One GTM data model
Accounts, contacts, deals and custom objects every play reads.
CompaniesAll recordsFilterSort12,480 records6/24 columnsName+23
DomainEmployeesCountryIndustryICP fitAdd columnNorthwindnorthwind.com420United StatesLogistics82Contosocontoso.com1,200FranceSoftware74Globexglobex.com3,400GermanyManufacturing91Initechinitech.com260United StatesSoftware68Fabrikamfabrikam.com880FranceRetail55Umbrellaumbrella.com2,100United KingdomHealthcare79Stark Logisticsstarklogistics.com640United StatesLogistics88Wayne Freightwaynefreight.com1,450SpainLogistics71Signals into one score
Hiring, funding and web intent add up to one score.
EnabledRoute inbound leadsSearch...2/2 nodesFilter5/5 statusesAll versionsAll batchesAll datesStartstart
ICP fitscore_icpAda Lovelace82/100Grace Hopper74/100Alan Turing91/100Katherine Johnson68/100Edsger Dijkstra55/100Mary Jackson77/100Claude Shannon86/100Barbara Liskov63/100DefaultPlays that fire on change
A signal lands, a play runs. Retried and traced.
Route inbound leadsSchedule
Type*ManualEnroll records manuallyReal-timeTrigger your play when new records are addedIntervalSchedule your play to run on a set interval (e.g., once per hour)CronSchedule your play using a cron expressionDependencySchedule after a play finished runningInterval*Every hourSyncs are scheduled in UTC
Conditions
FilterLifecycle stage is LeadANDEmail is not emptyAdd groupChanges
Mode*New records onlyOnly new records that match the conditions will be enrolled in the playNew and updated recordsNew and updated records that match the conditions will be enrolled in the playFullProcess all matching recordsCustomAdvanced modeChanges included*AddedUpdatedUnchangedEnrollment
Rule*Always enrollEnroll the record into a new play run every time the trigger fires for that recordEnroll onceOnly enroll each record once, even if the trigger fires multiple times for the same recordIf is not currently enrolledOnly enroll a record if it's not already in an active run, preventing concurrent runsSaveModelContacts
The model associated with this play. Each record within this model is eligible for enrollment in the play.
Enroll manuallySync nowRouting that knows the org
Territory, capacity, ownership and fallback, shared by every motion.
Revenue organizationNew territoryNew capacityMembersTerritoriesCapacitiesA group of members that shares incoming records. Weights and a fallback decide who is next.
Territories3 territoriesUnited StatesInbound from North AmericaFranceInbound from FranceEMEAEverything else in EuropeUnited StatesLabel*United StatesChoose a label to your territory
Color*Choose a color to represent your territory
DescriptionInbound from North AmericaChoose a description
Members*AMAlice Martin50SOSam Okoro50Add memberPick members you want to be part of your territory
Fallback MemberDCDana ColeThe member that will be used when other territory members are not available (e.g. Capacity reached).
SaveCRM-safe writes
Dedupe, protected fields and attribution on every CRM write.
EnabledRoute inbound leadsSearch...2/2 nodesFilter5/5 statusesAll versionsAll batchesAll datesStartstart
Update ownerupdate_owner
Ada LovelaceOwner updated
Grace HopperOwner updated
Alan TuringOwner updated
Katherine JohnsonNo Salesforce lead matches this emailEdsger DijkstraMary JacksonOwner updated
Claude ShannonOwner updated
Barbara LiskovOwner updated
DefaultBuilt by coding agents
Your coding agent changes it as diffs, over the CLI or MCP.
Account researcherDeployInstructionsResearch the account, score it against our ICP and write a two-line brief for the owner. Use our ICP definition from context, not your own.ActionsEnrich companyenrich_company
Search the webweb_search
Get companyhubspot_get_company
The building blocks of the agent. They are the actions the agent can take. The agent will use the actions to achieve the goal.
Advanced settingsClaude Sonnet 5
Research Northwind and tell me if it fits our ICP.Reasoned for a few secondsGet company0
Enrich company1
Search the web2
Northwind fits: 82/100. 420 employees, logistics, and two open SDR roles, which is the growth trigger in your ICP.
It sits in the United States territory, so the owner is Alice Martin. Lead with routing: their HubSpot assigns inbound by hand today.
Ask agent...
GTM as code, in your repo.
Your whole Cargo workspace is TypeScript in git: every change reviewed, planned and reversible.
- In your repoThe whole workspace, declared in TypeScript.
- Planned on every pull request
cargo-ai project planshows the diff. Merging deploys it. - Undone with git revertRevert the commit and the previous version deploys.
Written by your coding agent: Claude Code, Cursor or Codex.
import { defineMember, defineTerritory } from "@cargo-ai/cdk";const alice = defineMember("alice@acme.com");const dana = defineMember("dana@acme.com");// United States accounts go to Alice, Dana coversexport const unitedStates = defineTerritory("united-states", {label: "United States",members: [{ ref: alice, weight: 1 }],fallback: dana,});
When to choose which
Both products have a real job. The decision is which job you are hiring for.
- Outbound is the only motion you run
- A rep should approve every message
- You want signal-to-send from one vendor
- You do not want an engine to own
- Inbound, outbound and expansion share the same accounts
- Other tools need a data model to build on
- Routing should be company-wide, not per tool
- Coding agents should build the plays, not a person in a UI
Both true. Unify is the better outbound tool. Cargo is the better GTM engine. Teams often let Cargo own the model and scoring, and hand warm accounts to Unify.
Cargo vs Unify, in short
“Essential. Innovative. Indispensable. Cargo let you build your unique growth engine, a much-needed solution in the market today.”
Guillaume Cabane · Co-Founder @HypergrowthBuild the self-driving GTM engine
Your coding agents build it on Cargo.Or our team builds, operates and improves it with you.

