Once a trigger has started your flow, actions are the steps that do something with the data — usually writing it into another system, or fetching more data from one. Most components draw from the same small set of actions. This article walks through each one and when to use it.
This article assumes you’ve read Understanding Actions and Triggers first.
Whichever action you pick, the first thing to configure is almost always which kind of record it applies to — a field usually named Object Type, Object, or Table, and populated live from your connected account. Set this first: the rest of the action’s fields (which data it expects as input, which fields it returns as output) are generated from whatever you choose here, so they won’t be right — or won’t appear at all — until it’s set.
| Action | Does | Needs |
|---|---|---|
| Create Object | Always makes a new record | Just the field values for the new record |
| Update Object | Changes a record that already exists | The record’s ID (or another unique identifier), plus the fields to change |
| Upsert Object | Creates a new record, or updates a matching one if it finds it | A field to match on (an ID, an external ID, or another unique field) |
If you already know for certain whether the record exists — for instance, you just created it two steps earlier in the same flow and have its ID — Create or Update is the more direct choice. If you don’t know, and the flow needs to work correctly either way (a very common case: “sync this contact, whether or not we’ve seen them before”), Upsert Object is built for exactly that, and saves you from having to do a Lookup first just to decide.
Components consistently distinguish singular from plural in this pair, so read the title carefully:
Some components additionally expose a direct query action — for example Query or Bulk Query on Salesforce, running a SOQL statement — for cases where a simple field-match lookup isn’t expressive enough.
Delete Object (sometimes Delete Object By ID) removes a single record, identified the same way as Lookup Object — usually by ID. There’s no “bulk delete” equivalent in most components beyond running this once per record; if you need to remove many records, feed a list into this action from an earlier step in the flow.
Make Raw Request (also seen as Raw Request, or Execute Mutation on GraphQL-based components) sends a request directly to the connected system’s API, exactly as you construct it, and returns the raw response. Nothing about the object model or field mapping is done for you.
Reach for it when:
It’s more configuration work — you’re responsible for the URL, HTTP method, and request body — so treat it as the option you use when a more specific action doesn’t cover your case, not as the default.
A handful of components — Salesforce is the clearest example, with Bulk Create/Update/Delete/Upsert and Bulk Query — offer bulk variants built for moving large numbers of records efficiently (tens of thousands at once), usually by accepting or producing a CSV file rather than one message per record. If you’re processing more than a few hundred records in a single run and the component offers a bulk action, it will generally perform far better than looping the equivalent single-record action.