> ## Documentation Index
> Fetch the complete documentation index at: https://help.csvbox.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Automation Platforms

> Send CSVbox imports to Zapier, n8n, Make, Workato, or any workflow automation tool with one universal setup.

CSVbox connects your spreadsheet imports with any automation platform. Using the **`New Row Import`** trigger, you can send every imported row into your workflows, whether that means adding a contact to Salesforce, storing data in Postgres, or sending a Slack notification.

This guide shows you how to integrate CSVbox with popular tools like **Zapier, Make, n8n, Pipedream, IFTTT, Node-RED, Workato, Tray.io, Airflow, Prefect, Camunda**, and more.

Once connected, each new row uploaded by your users can automatically flow into your databases, CRMs, analytics pipelines, or enterprise systems, without writing custom code for every tool.

## Core pattern

1. **Webhook event (trigger)**: CSVbox sends a webhook on each row import. Example payload:
   ```json theme={null}
   [
     {
       "import_id": 79418895,
       "sheet_id": 55,
       "sheet_name": "Products",
       "row_number": 1,
       "total_rows": 1009,
       "env_name": "default", 
       "original_filename": "products01_24.csv",
       "row_data": {
             "Name": "TP-Link TL-WN822N Wireless N300 High Gain USB Adapter",
             "SKU": "AS-100221",
             "Price": "33.00",
             "Quantity": "3",
             "Image URL": "https://cdn.shopify.com/s/files/1/1491/9536/products/31jJOj1DS5L_070b4893-b7af-482f-8a15-d40f5e06760d.jpg?v=1521803806"
       },
       "custom_fields": {
         "user_id": "1002"
       }
     }  
   ]
   ```
2. **Automation platform**: receives this webhook and executes downstream actions such as a database insert, CRM update, or Slack notification.

## Integration guides

### Zapier

<Steps>
  <Step title="Create a new Zap" />

  <Step title="Add a Catch Hook trigger">
    Select **Webhooks by Zapier** → **Catch Hook**.
  </Step>

  <Step title="Copy the webhook URL" />

  <Step title="Paste the URL in CSVbox">
    In the CSVbox Dashboard → **Settings** → **Webhooks**, paste the Zapier URL.
  </Step>

  <Step title="Perform a test import in CSVbox" />

  <Step title="Confirm the data mapping in Zapier" />

  <Step title="Add actions">
    For example, **Google Sheets** → **Add Row**, or **Salesforce** → **Create Contact**.
  </Step>

  <Step title="Turn on the Zap" />
</Steps>

Each new row import flows into your Zapier automations.

### Make (Integromat)

<Steps>
  <Step title="Create a new Scenario" />

  <Step title="Add a webhook module">
    Add a **Webhook module** → **Custom Webhook**.
  </Step>

  <Step title="Copy the webhook URL" />

  <Step title="Paste the URL in CSVbox">
    Paste it into the CSVbox Dashboard → **Webhooks**.
  </Step>

  <Step title="Run the scenario in listening mode" />

  <Step title="Test an import in CSVbox">
    The payload appears in Make.
  </Step>

  <Step title="Add modules">
    For example, Sheets, MySQL, or Slack.
  </Step>

  <Step title="Save and activate" />
</Steps>

### Pipedream

<Steps>
  <Step title="Create a new Workflow" />

  <Step title="Set the trigger to HTTP/Webhook">
    Use **HTTP/Webhook** as the trigger.
  </Step>

  <Step title="Copy the webhook URL to the CSVbox Dashboard" />

  <Step title="Test an import in CSVbox" />

  <Step title="Add a code step">
    ```js theme={null}
    export default defineComponent({
      props: { event: { type: "object" } },
      async run({ steps, $ }) {
        console.log("Row Imported:", this.event.data);
      }
    });
    ```
  </Step>

  <Step title="Add downstream integrations">
    For example, a database, CRM, or Slack.
  </Step>
</Steps>

### n8n

<Steps>
  <Step title="Create a workflow" />

  <Step title="Add a Webhook node">
    Add a **Webhook node**.
  </Step>

  <Step title="Copy the webhook URL to the CSVbox Dashboard" />

  <Step title="Test an import">
    n8n captures the payload.
  </Step>

  <Step title="Add downstream nodes">
    For example, Postgres, Slack, or HTTP.
  </Step>

  <Step title="Fetch rows with the CSVbox node (optional)">
    Use the CSVbox node to fetch rows by `import_id`.
  </Step>
</Steps>

### Node-RED

<Steps>
  <Step title="Add an HTTP In node">
    Add an **HTTP In node** with the URL `/csvbox`.
  </Step>

  <Step title="Add a JSON node">
    Add a **JSON node** to parse the payload.
  </Step>

  <Step title="Add a Function node">
    ```js theme={null}
    msg.payload = msg.payload.data;
    return msg;
    ```
  </Step>

  <Step title="Connect target nodes">
    For example, a database, Email, or Slack.
  </Step>

  <Step title="Deploy and paste the URL into the CSVbox Dashboard" />
</Steps>

### IFTTT

<Steps>
  <Step title="Create an Applet">
    In IFTTT, create an **Applet**.
  </Step>

  <Step title="Set the If This trigger">
    For **If This**, choose **Webhooks** → **Receive a web request** (`row_imported`).
  </Step>

  <Step title="Copy the webhook key/URL" />

  <Step title="Paste the URL in the CSVbox Dashboard" />

  <Step title="Set the Then That action">
    For **Then That**, pick an action, such as sending an email, a notification, or triggering an IoT device.
  </Step>
</Steps>

Use IFTTT for lightweight, consumer-friendly automations.

### Activepieces

<Steps>
  <Step title="Create a new Flow">
    In Activepieces, create a new Flow.
  </Step>

  <Step title="Add a Webhook Trigger">
    Add a **Webhook Trigger**.
  </Step>

  <Step title="Copy the URL into the CSVbox Dashboard" />

  <Step title="Test an import">
    Activepieces captures the row data.
  </Step>

  <Step title="Add actions">
    For example, Google Sheets, Airtable, or APIs.
  </Step>

  <Step title="Save and activate" />
</Steps>

### Automatisch

<Steps>
  <Step title="Create a workflow" />

  <Step title="Set the trigger to Webhook">
    Choose **Trigger** → **Webhook**.
  </Step>

  <Step title="Copy the webhook URL and paste it into the CSVbox Dashboard" />

  <Step title="Import a test row">
    Automatisch captures the payload.
  </Step>

  <Step title="Add downstream integrations" />
</Steps>

### Huginn

<Steps>
  <Step title="Add a Webhook Agent">
    Add a **Webhook Agent**.
  </Step>

  <Step title="Copy the Huginn webhook URL" />

  <Step title="Paste the URL into the CSVbox Dashboard" />

  <Step title="Test an import">
    Huginn captures the JSON.
  </Step>

  <Step title="Chain agents">
    For example, **Post Agent** → **Slack Agent** → **Email Agent**.
  </Step>
</Steps>

### StackStorm

<Steps>
  <Step title="Create a Webhook sensor">
    Create a **Webhook sensor** in StackStorm.
  </Step>

  <Step title="Add a rule">
    Rule example:

    ```yaml theme={null}
    ---
    name: csvbox.new_row
    trigger: core.st2.webhook
    criteria:
      trigger.body.event: "row_imported"
    action:
      ref: core.local
      parameters:
        cmd: "echo {{trigger.body.data.email}} >> /var/log/csvbox.log"
    ```
  </Step>

  <Step title="Test an import" />
</Steps>

### Apache Airflow

<Steps>
  <Step title="Set up an endpoint">
    Set up a Flask/Django endpoint to receive the CSVbox webhook.
  </Step>

  <Step title="Paste the URL in CSVbox">
    In the CSVbox Dashboard → **Webhooks**, paste the URL.
  </Step>

  <Step title="Trigger an Airflow DAG with the row data" />

  <Step title="Create the DAG">
    Example DAG:

    ```python theme={null}
    from airflow import DAG
    from airflow.operators.python import PythonOperator

    def process_row(**context):
        data = context['dag_run'].conf
        print("Row imported:", data)

    dag = DAG("csvbox_import", start_date="2025-01-01")

    process = PythonOperator(
        task_id="process_row",
        python_callable=process_row,
        dag=dag
    )
    ```
  </Step>
</Steps>

### Prefect

<Steps>
  <Step title="Set up Prefect Cloud/Server" />

  <Step title="Create a flow">
    Create a flow with the `@flow` decorator.
  </Step>

  <Step title="Trigger a Prefect API call from the CSVbox webhook">
    Example:

    ```python theme={null}
    from prefect import flow

    @flow
    def process_row(data: dict):
        print("Row Imported:", data)
    ```
  </Step>

  <Step title="Deploy and connect the webhook" />
</Steps>

### Kestra

<Steps>
  <Step title="Create a Kestra flow with a Webhook Trigger">
    Example:

    ```yaml theme={null}
    id: csvbox_import
    namespace: csvbox
    tasks:
      - id: log
        type: io.kestra.core.tasks.debugs.Log
        message: "{{ trigger.body }}"
    ```
  </Step>

  <Step title="Paste the Kestra webhook URL into the CSVbox Dashboard" />
</Steps>

### Temporal

<Steps>
  <Step title="Define a workflow in Temporal">
    Example:

    ```python theme={null}
    @workflow.defn
    class ImportWorkflow:
        @workflow.run
        async def run(self, row: dict):
            print("Processing:", row)
    ```
  </Step>

  <Step title="Start the workflow from the CSVbox webhook">
    CSVbox webhook → EventBridge/queue → starts the Temporal workflow.
  </Step>
</Steps>

### Inngest

<Steps>
  <Step title="Define an event handler">
    In Inngest, define an event handler:

    ```js theme={null}
    inngest.createFunction(
      { id: "csvbox-row-imported" },
      { event: "csvbox/row.imported" },
      async ({ event }) => {
        console.log("Row:", event.data)
      }
    )
    ```
  </Step>

  <Step title="Send CSVbox events to Inngest">
    Configure the CSVbox webhook to send event payloads to Inngest.
  </Step>
</Steps>

### Windmill

<Steps>
  <Step title="Create a new flow">
    In Windmill, create a new flow.
  </Step>

  <Step title="Set the trigger to HTTP endpoint">
    Choose **Trigger** → **HTTP endpoint**.
  </Step>

  <Step title="Paste the URL into the CSVbox Dashboard" />

  <Step title="Test an import">
    Windmill captures the payload.
  </Step>

  <Step title="Add a code step">
    Add a code step in Python/JS to process rows.
  </Step>
</Steps>

### Tray.io

<Steps>
  <Step title="Create a Tray workflow" />

  <Step title="Add a Webhook Trigger">
    Add a **Webhook Trigger**.
  </Step>

  <Step title="Copy the URL into the CSVbox Dashboard" />

  <Step title="Import a test row" />

  <Step title="Add actions">
    For example, Salesforce, NetSuite, or databases.
  </Step>
</Steps>

### Workato

<Steps>
  <Step title="Create a Workato recipe" />

  <Step title="Add a Webhook Trigger">
    Add a **Webhook Trigger**.
  </Step>

  <Step title="Copy the URL and paste it into the CSVbox Dashboard" />

  <Step title="Test an import">
    Workato captures the row data.
  </Step>

  <Step title="Add enterprise actions">
    For example, ERP, CRM, or HR tools.
  </Step>
</Steps>

## Developer SDK (optional)

Offer an SDK so dev teams can wire CSVbox directly:

```js theme={null}
import { Csvbox } from "csvbox-sdk";

const client = new Csvbox({ apiKey: "xxx" });

client.on("row_imported", (row) => {
  console.log("Row Imported:", row);
  // push to CRM, DB, etc.
});
```

## Best practices

* **Verify webhook signatures** (HMAC secret).
* **Retry failed actions** (add a DLQ or retries).
* Store `import_id` + `row_id` for tracking.
* Log every payload for debugging.
* Secure API keys properly.

## Example end-to-end flow

**Use case**: "When a customer uploads a new row with email + plan → push to CRM → notify sales on Slack."

<Steps>
  <Step title="CSVbox sends a webhook">
    CSVbox → Webhook (`row_imported`).
  </Step>

  <Step title="n8n inserts the contact into HubSpot">
    The n8n workflow inserts the row into HubSpot CRM.
  </Step>

  <Step title="Slack notifies the sales team">
    The Slack node posts: `New Pro plan signup: john@example.com`.
  </Step>
</Steps>

## Supported platform categories

With this playbook, CSVbox integrates with **every automation platform**:

* **Mainstream SaaS automation**: Zapier, Make, Pipedream, IFTTT
* **Open-source low-code**: n8n, Node-RED, Activepieces, Automatisch, Huginn
* **Enterprise iPaaS**: Workato, Tray.io
* **Data orchestration**: Airflow, Prefect, Kestra
* **Developer-first platforms**: Windmill, Temporal, Inngest, StackStorm
* **Business process automation**: Camunda


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.