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

# Quickstart

> Build your first integration in 5 minutes

This guide walks you through creating a working integration that extracts user data from a public API and delivers it to a webhook endpoint. By the end, you'll understand the core workflow: create Connections, build an Integration, and run it.

## What you'll build

You'll create an integration that:

1. **Extracts** user records from JSONPlaceholder (a free test API)
2. **Transforms** the data to a simpler format
3. **Loads** the results to webhook.site where you can inspect them

Time required: approximately 5 minutes.

## Prerequisites

* Access to an RWS Integration Workspace
* A web browser

## Step 1: Set up your destination

Before building the integration, create a destination endpoint where you can verify the results.

1. Open [webhook.site](https://webhook.site) in a new browser tab
2. The site automatically generates a unique URL (e.g., `https://webhook.site/abc123-def456-...`)
3. **Copy this URL**; you'll need it when creating your destination Connection
4. Keep this tab open to monitor incoming requests

<Note>
  webhook.site is a free service that captures and displays HTTP requests. It's useful for testing integrations before connecting to real destination systems.
</Note>

## Step 2: Create the source Connection

Connections define how RWS Integration communicates with external systems. You'll create one for the source API.

1. In the sidebar, click **Connections**
2. Click **New Connection**
3. Configure the connection:

| Field          | Value                                  |
| -------------- | -------------------------------------- |
| Name           | `JSONPlaceholder API`                  |
| Type           | `API`                                  |
| URL            | `https://jsonplaceholder.typicode.com` |
| Base Path      | `/`                                    |
| Authentication | `No authentication`                    |

4. Click **Save**

The JSONPlaceholder API doesn't require authentication, so the **No authentication** option (already selected by default for new connections) is all you need.

## Step 3: Create the destination Connection

Now create a Connection for your webhook.site destination.

1. Click **New Connection**
2. Configure the connection:

| Field          | Value                  |
| -------------- | ---------------------- |
| Name           | `Webhook Destination`  |
| Type           | `API`                  |
| URL            | `https://webhook.site` |
| Base Path      | `/`                    |
| Authentication | `No authentication`    |

3. Click **Save**

## Step 4: Create the Integration

With both Connections ready, create the Integration that moves data between them.

1. In the sidebar, click **Integrations**
2. Click **New Integration**

### General settings

Configure the basic integration properties:

| Field       | Value                                          |
| ----------- | ---------------------------------------------- |
| Name        | `User Sync Quickstart`                         |
| Version     | `1.0.0`                                        |
| Type        | `Full`                                         |
| Environment | `Staging`                                      |
| Schedule    | Daily, at a time of your choice (e.g. `09:00`) |

<Note>
  The schedule is set with a frequency picker: choose how often the integration runs and fill in the details, like the time of day. See [Scheduling](/en/features/extract/scheduling) for all the options.
</Note>

### Extract phase

The Extract phase retrieves data from your source system.

1. Expand the **Extract** section
2. Configure these fields:

| Field      | Value                 |
| ---------- | --------------------- |
| Connection | `JSONPlaceholder API` |
| Method     | `GET`                 |
| Path       | `/users`              |

3. Set the **Datapoint Path in Response** to `root`

4. Set the **Pagination**:

| Field                  | Value    |
| ---------------------- | -------- |
| Pagination Type        | `Simple` |
| Page size parameter    | `_limit` |
| Page size value        | `10`     |
| Initial page parameter | `_page`  |
| Initial page value     | `1`      |
| Pagination end type    | `Object` |

5. Check the **Extract Preview** panel on the right side. It should show:
   * Status: `200 OK`
   * A single user record (the Datapoint) like this:

```json theme={null}
{
  "id": 1,
  "name": "Leanne Graham",
  "username": "Bret",
  "email": "Sincere@april.biz",
}
```

### Transform phase

The Transform phase maps source fields to your destination format. For this quickstart, create a simple mapping with three fields.

1. Expand the **Transform** section
2. Click **Add Transformation** and configure:

| Type   | To             | From    |
| ------ | -------------- | ------- |
| Simple | `userId`       | `id`    |
| Simple | `fullName`     | `name`  |
| Simple | `emailAddress` | `email` |

3. Check the **Transform Preview** panel. It should display:

```json theme={null}
{
  "userId": 1,
  "fullName": "Leanne Graham",
  "emailAddress": "Sincere@april.biz"
}
```

This confirms your mappings are working correctly with real data from the Extract phase.

### Load phase

The Load phase sends transformed data to your destination.

1. Expand the **Load** section
2. Configure these fields:

| Field      | Value                                                      |
| ---------- | ---------------------------------------------------------- |
| Connection | `Webhook Destination`                                      |
| Method     | `POST`                                                     |
| Path       | Your webhook.site unique path (e.g., `/abc123-def456-...`) |
| Load Type  | `Simple`                                                   |

<Warning>
  Copy only the path portion from your webhook.site URL. If your full URL is `https://webhook.site/abc-123`, enter `/abc-123` as the Path.
</Warning>

3. Check the **Load Preview** panel. It shows the complete request that will be sent:
   * **Path**: [https://webhook.site/\{\{](https://webhook.site/\{\{) your-unique-path }}
   * **Method**: POST
   * **Request Body**:

```json theme={null}
{
  "userId": 1,
  "fullName": "Leanne Graham",
  "emailAddress": "Sincere@april.biz"
}
```

## Step 5: Deploy the Integration

1. Toggle **Deployment** to enabled
2. Click **Create Integration**

The integration will now run automatically every day at the time you chose.

## Step 6: Run it now

You don't need to wait for the schedule. Trigger the first run manually:

1. Open your integration from the **Integrations** list
2. Click **Run now**, next to the **Save** button
3. Confirm in the dialog, and a **Run started** message appears

## Step 7: Verify the results

Switch to your webhook.site browser tab. You should see 10 incoming POST requests (one for each user from JSONPlaceholder), each containing your transformed data structure:

```json theme={null}
{
  "userId": 1,
  "fullName": "Leanne Graham",
  "emailAddress": "Sincere@april.biz"
}
```

Congratulations, you've built and run your first integration!

## What you learned

* **Connections** store configuration for external systems and can be reused across multiple Integrations
* **Integrations** follow the Extract → Transform → Load pattern (with optional Enrichment)
* The **Datapoint Path** tells RWS Integration where to find records in API responses
* **Preview panels** automatically update as you configure each phase, letting you validate before running
* **Simple transformations** map fields from source to destination using JSONPath notation
* **Environments** (Staging/Production) let you safely test before deploying to production
* **Run now** triggers a run on demand, without waiting for the schedule

## Next steps

<CardGroup cols={2}>
  <Card title="Connections" icon="plug" href="/en/features/connections/api">
    Learn about different authentication methods
  </Card>

  <Card title="Pagination" icon="arrows-rotate" href="/en/features/extract/pagination">
    Handle pagination and complex API responses
  </Card>

  <Card title="Business Rules" icon="code" href="/en/features/business-rules/overview">
    Master field transformations with JavaScript
  </Card>

  <Card title="Scheduling" icon="clock" href="/en/features/extract/scheduling">
    Schedule your integrations to run automatically
  </Card>
</CardGroup>
