Upsales
CRMConnect AI agents to Upsales, a Swedish sales and marketing CRM. Agents manage companies and contacts, move orders and opportunities forward, register campaigns for attribution, log calls, and track NPS responses.
What This Integration Enables
Upsales is a Swedish sales and marketing CRM, and it makes one modelling decision that changes how automation has to be designed against it. Opportunities and orders are not separate objects. They share a single orders resource and are distinguished only by their stage: a record sitting at an open pipeline stage is an opportunity, and the same record at a won stage is an order. There is no separate booking step, no conversion, no second write. Moving a record between stages converts an opportunity into an order or turns an order back into an opportunity. This is elegant in the interface and it is the single most important thing to understand before an agent is allowed anywhere near Update Order or Opportunity, because a stage change here is not a pipeline hygiene action. It is the act of booking revenue.
Around that centre the connector covers the working surface of a sales team: companies and contacts with full lifecycle, activities and appointments for scheduled work, campaigns, products, subscriptions, users, phone calls, and NPS responses. Some of that surface is deliberately read only. List Subscriptions and Get Subscription read recurring agreements with their renewal and interval settings but write nothing, and List Users and Get Current User read the account's people rather than managing them. Campaigns are created and listed here, which means an agent can register a campaign record for attribution, not that it can send anything. The operational details that decide whether a flow behaves: all calls go to the v2 API and the API key travels as a token query-string parameter on every request, created by an Upsales admin under Settings then API keys. That key is all-privilege. It can read, create, update, and delete any record in the account, with no per-scope restriction, so it is a genuine secret and the flows using it deserve the same scrutiny you would give an administrator. Upsales provides up to 99,999 API calls per day at no cost, with accounts exceeding that daily potentially incurring a tier-based fee, and the API returns HTTP 429 when requests arrive too quickly, so an exponential backoff belongs in any bulk flow. List endpoints page with limit, defaulting to 1000 and capping at 2000, plus offset, but for reliable paging over large sets the correct pattern is to sort by id and page forward with an id filter such as gt:LAST_ID_OF_PREVIOUS_BATCH rather than trusting offset alone. Custom fields on companies, contacts, and orders are set by passing a custom array of { fieldId, value } objects, with account-specific field IDs. Activity types, appointment types, order stages, products, campaigns, users, companies, and contacts are all account-defined and resolved dynamically rather than from fixed lists. This connector ships no triggers, so change detection is a scheduled id-forward read of List Companies, List Contacts, or List Orders and Opportunities. Deletes on companies, contacts, orders, activities, and appointments are permanent.
Without FlowRunner
With FlowRunner
Use Case Scenarios
A lead that becomes an opportunity without becoming a duplicate
An inbound enquiry or a marketing-qualified contact arrives from Brevo or a form. The agent calls List Companies with an id-forward read to check whether this organisation already exists, since an all-privilege key makes creating a second account for an existing customer easy and expensive. Where it is new, Create Company writes the organisation with its custom fields supplied as a custom array of { fieldId, value } pairs, and Create Contact writes the person against it. Create Order or Opportunity then opens the record at an open pipeline stage, resolved dynamically because stages are account-defined rather than fixed. Create Activity schedules the first follow-up for the assigned rep. Nothing in this run touches a won stage, which keeps it firmly on the pipeline side of the line.
Telephony activity written back to the right account
A call completes in a phone platform such as Aircall. The agent resolves the contact and company through List Contacts, then calls Log Phone Call against the dedicated phoneCall resource, passing an externalId from the telephony system so a repeated delivery of the same call event deduplicates rather than producing a second entry. Where the call produced a commitment, Create Activity schedules the next step and Create Appointment books the meeting that was agreed. Where the call was an escalation, the agent reads List NPS Responses for that contact and includes the customer's last score in the summary it posts to Slack, so the account owner sees the call in the context of how the customer already feels.
A recurring revenue view that surfaces renewals early
On a schedule the agent calls List Subscriptions and Get Subscription to read the recurring agreements in the account with their renewal and interval settings, then joins each to its company through Get Company and to recent engagement through List Activities and List NPS Responses. Subscriptions are read only through this connector, which is the right shape for this flow: the point is to see what is approaching its interval while there is still time to act, not to quietly change anyone's contract. The joined view appends to Google Sheets and a segmented summary posts to the customer success owner, separating renewals with recent activity from renewals where nobody has spoken to the customer this quarter. Where outreach is needed, Create Activity schedules it against a named rep rather than sending anything.
Human-in-Loop Highlight
Update Order or Opportunity is the operation to gate, and Upsales itself explains why. Opportunities and orders live on the same resource and are told apart by their stage, so moving a record from an open pipeline stage to a won stage does not annotate a deal, it creates an order. The number that appears in the revenue report, the figure a commission calculation runs against, and the total a finance team reconciles against invoices all change the moment that one field is written. There is no separate booking action to review afterwards, because the stage change is the booking. What makes this worth a gate rather than a rule is that agents are good at exactly the wrong half of the judgment. An agent can see that a signature event fired, that an agreement PDF exists, that a payment cleared. It cannot see that the customer signed for eleven seats and the opportunity in Upsales still carries fourteen from the original proposal, or that the deal was split into two orders by agreement and only one has been signed. Booking a won stage on a stale amount produces a revenue figure that is wrong, permanent in every report already sent, and awkward to unwind, since reversing it means moving the record back to an open stage and turning an order back into an opportunity in front of everyone who saw it close. So the agent gathers and stops. It calls List Orders and Opportunities filtered to records with a matching signature event, Get Order or Opportunity for the amount, products, and current stage on each, and the signed source document from upstream, then posts to the revenue owner: "9 opportunities have a signature event from this week. 6 match their signed agreement exactly on amount and product lines. 3 do not: Nordkust AB shows 214,000 against a signed 186,000 because two line items were removed at the final call, Vasa Logistik is signed for a twelve month term against an opportunity carrying twenty four, and Bergman Konsult has no products on the record at all. Moving these to a won stage books them as orders in Upsales, and the revenue and commission views change immediately. Book the 6, or hold everything until the 3 are corrected?" The owner answers once, and Update Order or Opportunity writes a won stage only where a person released it. This is the human-in-the-loop moment on a CRM that collapses pipeline and revenue into one object, because an agent can prove that a record and an agreement disagree and only a person can decide which of them the company is going to invoice against.
Agent Capabilities
34 actionsCompanies
5- List Companies Returns companies with `limit` defaulting to 1000 and capping at 2000, plus `offset`. For large sets, sort by `id` and page forward with a filter such as `gt:LAST_ID_OF_PREVIOUS_BATCH`. This is the scheduled read that substitutes for the events this connector does not receive.
- Get Company Retrieves a single company with its details and custom fields.
- Create Company Creates a company. Custom fields are supplied as a `custom` array of `{ fieldId, value }` objects, with account-specific field IDs.
- Update Company Updates a company, used to keep an account current from the system that owns the field.
- Delete Company Permanently removes a company and cannot be undone.
Contacts
5- List Contacts Returns contacts with id-forward paging, used to resolve a person before writing activity against them.
- Get Contact Retrieves a single contact with its company and custom fields.
- Create Contact Creates a contact against a company, with custom fields supplied through the `custom` array.
- Update Contact Updates a contact's details.
- Delete Contact Permanently removes a contact and cannot be undone.
Orders and opportunities
5- List Orders and Opportunities Returns records from the shared `orders` resource. Whether a record is an opportunity or an order is determined by its stage, so a listing covers both.
- Get Order or Opportunity Retrieves a single record with its amount, products, owner, and current stage. This is the read that supplies the evidence an approval needs.
- Create Order or Opportunity Creates a record on the `orders` resource. Opening it at an open pipeline stage makes it an opportunity, and account-defined stages are resolved dynamically rather than from a fixed list.
- Update Order or Opportunity Updates the record, including its stage. Moving between stages converts an opportunity into an order or the reverse, which is why stage changes into a won stage belong behind an approval.
- Delete Order or Opportunity Permanently removes the record and cannot be undone.
Activities and appointments
7- List Activities Returns activities, used to see whether an account is actually being worked.
- Get Activity Retrieves a single activity with its type and owner.
- Create Activity Schedules an activity for a rep. Activity types are account-defined and resolved dynamically.
- Delete Activity Permanently removes an activity and cannot be undone.
- List Appointments Returns booked appointments across the account.
- Create Appointment Books an appointment with an account-defined appointment type.
- Delete Appointment Permanently removes an appointment and cannot be undone.
Campaigns and products
5- List Campaigns Returns the campaigns defined in the account, used to attribute a record to the activity that produced it.
- Create Campaign Creates a campaign record for attribution. This registers the campaign in Upsales; it does not send or launch anything.
- List Products Returns the product catalogue, which is account-defined.
- Get Product Retrieves a single product.
- Create Product Adds a product to the catalogue.
Subscriptions and users
4- List Subscriptions Reads recurring agreements with their renewal and interval settings. Read only through this connector, which is what makes a renewal report safe to run on a schedule.
- Get Subscription Retrieves a single subscription with its interval and renewal settings.
- List Users Returns the users in the account, used to resolve an owner before a record is assigned.
- Get Current User Returns the user the configured API key acts as.
Calls and NPS
3- Log Phone Call Writes a call to the dedicated `phoneCall` resource. Supply an `externalId` from your telephony system so repeated deliveries of the same call deduplicate rather than doubling the history.
- List NPS Responses Reads NPS responses, used to put an account's engagement in the context of how the customer rated it.
- Create NPS Response Writes an NPS response captured by a survey elsewhere against the right contact.
Frequently Asked Questions
What can FlowRunner do with Upsales?
FlowRunner agents can run List Companies, Get Company, and Create Company in Upsales, plus 31 more actions.
Does connecting Upsales to FlowRunner require OAuth?
No. Upsales connects to FlowRunner with an API key, no OAuth flow required.
Can Upsales trigger a FlowRunner workflow automatically?
Upsales doesn't currently expose triggers in FlowRunner. It connects as an action step inside workflows started by another trigger.
Start building with Upsales
$100 in credits. No card required. Connect in minutes.