ACTION_ID: snowflake_upsert_rows NAME: Snowflake: Upsert Rows CATEGORY: Integrations CREDITS: 0 Insert a row into a Snowflake table, or update the existing row when the chosen external-ID column already holds that value. PREREQUISITE: Snowflake account connection — the user must create it in the Floqer UI (Connections page); an agent cannot. Without it the action fails the row with a connection / authentication error. Confirm it exists before configuring. 1. INPUTS database (dynamicDropdownDatabase, required) Database. Name of Database to connect to. warehouse (dynamicDropdownWarehouse, required) Warehouse. Name of the warehouse in Snowflake. schema (dynamicDropdownSchema, required) Schema. Name of Schema to connect to. table (dynamicDropdownTable, required) Table. Name of table to connect to. role (dynamicDropdownRole, required) role of snowflake user snowflake_external_id_field (externalIdDropdown, required) SnowFlake External Id Field. Choose the SnowFlake External ID field for the Upsert Operation columns (dynamicJsonArray, required) Columns. The column names of the Table 2. OUTPUTS (none — this action writes to the destination and returns no fields) 3. HOW TO CONFIGURE Configure Action body: { "inputs": { "warehouse": "COMPUTE_WH", "database": "ANALYTICS", "schema": "PUBLIC", "table": "ENRICHED_LEADS", "role": "SYSADMIN", "snowflake_external_id_field": "EMAIL", "columns": [ { "name": "EMAIL", "value": "{{person_work_email_waterfall_01ab.work_email}}" }, { "name": "COMPANY", "value": "{{input.company_name}}" } ] } } Field-by-field: - snowflake_external_id_field The column used as the merge key. Must also appear in `columns` — the merge has nothing to compare against otherwise. - everything else Same as `snowflake_insert_rows`. 4. KEY NOTES - The external-ID column must also be present in `columns`. Naming a key column you never write produces an insert every time. - None of the selector fields (`warehouse`, `database`, `schema`, `table`, `role`, `snowflake_external_id_field`, `columns`) has a dynamic-options resolver on this action — Get Action Field Options returns a 400. Use the `import_from_snowflake` source's resolvers to discover names. - No outputs are returned. 5. WHERE IT FITS IN A WORKFLOW Pattern: enrichment chain -> snowflake_upsert_rows, keyed on the same identifier the warehouse already uses for the entity. 6. WHEN TO USE Use snowflake_upsert_rows when the warehouse table is a current-state table keyed on an identifier and re-runs must not create duplicates. 7. WHEN NOT TO USE The table is append-only (and free) -> action-detail/snowflake_insert_rows.txt The destination is a CRM -> action-detail/salesforce_upsert_record.txt Last updated: 2026-08-03.