How to set up Monaco
Authentication
Monaco uses API key authentication:- In Monaco, open Settings → API keys
- Create a key (it starts with
mks_) - Paste the API key in Cargo when connecting
Code slugs: integration slug
monaco. Actions: upsertContact, updateContact, getContact, searchContacts, upsertAccount, updateAccount, getAccount, searchAccounts, createOpportunity, updateOpportunity, searchOpportunities, linkContactsToOpportunity, createTask, createAudience, addContactsToAudience, enrollContactsInCampaign. Call them as integrations.monaco.<action>(...).Syncing Monaco into Cargo
Five syncs pull Monaco records into a Cargo table:
Each sync is incremental. The first run reads everything, and later runs only read records whose
updated_at moved past the previous run’s high-water mark. A run that does not reach the end of the result set keeps its position and resumes there, so the mark only advances once a full pass has completed — a record is never skipped because a run stopped halfway.
Accounts keep their primary domain in a list and their LinkedIn page on the enriched company record. Cargo lifts both to a flat domain and linkedin_url column so they can be used for unification and matching.
Custom fields are added as extra columns, named with the field’s key in Monaco.
Monaco actions
Upsert contact
Create a contact, or update the one that matches. Required fields:- An Email or a LinkedIn URL to match on
- First name, Last name, Job title, Phone number, Location
- Account ID, or a Company domain that resolves the account and creates it when it does not exist
- Do not contact, Inbound lead, Notes, Tags
- Any custom field defined on contacts
Update contact
Update a contact by its Monaco ID. Fields left empty are untouched. Setting Tags replaces the contact’s existing tags.Get contact
Read one contact by ID, with its scoring, source attribution and custom fields.Search contacts
Find contacts matching a set of filters. Optional fields:- Filters: field, operator and value (see Filtering)
- Sort: a field key, prefixed with
-for descending - Limit: up to 500 records, 50 by default
Upsert account
Create an account, or update the one matching the domain. Required fields:- Domain: the matching identifier
- Name, LinkedIn URL, Status, Owner, Notes
- Tags: appended to the account’s existing tags
- Any custom field defined on accounts
Update account
Update an account by its Monaco ID. Optional fields:- Name, Status, Owner, Notes
- Parent account: an account ID to nest this account under. The parent must itself be top-level.
- Domains: the account’s complete domain list, primary first — domains left out are removed
- Tags: replaces the account’s existing tags
Get account
Read one account by ID, with its enriched company information, scoring and custom fields.Search accounts
Find accounts matching a set of filters. Same fields as Search contacts.Create opportunity
Create an opportunity on an existing account. Required fields:- Name
- Account ID
- Owner, Stage (defaults to the first stage of your pipeline)
- Estimated value and Currency (ISO 4217, for example
USD). Monaco documents no default currency, so a value without one is refused rather than booked at a guess. - Estimated close date (
YYYY-MM-DD) - Notes, Tags
- Idempotency key: set it to a stable value such as a record ID so a retried run does not create a second opportunity
Update opportunity
Move an opportunity’s stage, revise its value, or close it. Optional fields: Name, Owner, Stage, Estimated value, Currency, Estimated close date, Actual close date, Notes, Tags, custom fields. As on create, an estimated value needs a currency.Search opportunities
Find opportunities matching a set of filters. Same fields as Search contacts.Link contacts to opportunity
Add contacts to an opportunity’s buying committee. Pairs that already exist are left as they are. Required fields:- Opportunity ID
- Contact IDs
Create task
Create a task for a rep. Required fields:- Title
- Type: general action item (the default) or email
- Assignee: defaults to the user the API key belongs to
- Account ID, Opportunity ID, Due at (ISO 8601)
- Draft recipients, Draft subject and Draft body: an email for the rep to review. Monaco takes the draft as a whole, so all three are required together and only on an email task.
Create audience
Create an audience, seeded either with a list of contacts or with a filter over them — not both. Required fields:- Name
- Contact IDs: an explicit list of members, or
- Filters: a query over contacts, optionally narrowed by Source audience and trimmed by Excluded contact IDs
Add contacts to audience
Add contacts to an existing audience by their IDs. Monaco reports per-contact problems in its response rather than failing the call, so the action’s title reflects how many actually landed.Enroll contacts in campaign
Enroll contacts into an active or paused campaign, through a new audience attached to it. Required fields:- Campaign
- Audience name: the name of the audience Monaco creates to hold these contacts
- Contact IDs
Filtering
Search actions and filtered audiences take a list of conditions, each a field, an operator and a value. The field list is read from your Monaco schema, so custom fields are filterable alongside standard ones. Available operators areis, is_not, equals, not_equals, contains, not_contains, greater_than, greater_than_or_equals, less_than, less_than_or_equals, is_empty and is_not_empty. Which of them a given field accepts depends on its type — the field picker shows the real list — and the last two take no value.
Monaco marks a field filterable and sortable independently, so the two lists do not match. The Sort picker offers the sortable fields rather than the filterable ones.
Best practices
- Monaco allows 100 requests a minute per organization. Cargo stays under that and spreads its calls, so a sync walking pages leaves room for the actions running beside it.
- Give Create opportunity an idempotency key whenever the workflow can re-run on the same record.
- Prefer Upsert contact with a company domain over looking the account up yourself — Monaco resolves it and creates the account when it is missing.

