# Paperform

> Read your Paperform forms and the submissions they receive, and look up a form's fields to make sense of its answers.

App · Forms & Surveys · 5 actions. Web page: https://docs.lodol.com/docs/integrations/paperform

## Actions

### Get a form

Fetch one form's details by its ID or slug.

**Inputs**

- Form ID or slug (`form_id`, text, required): The form's ID or slug, as returned by List forms. The slug is the part before .paperform.co in the form's URL.

**Outputs**

- `created_at` (text): When the form was created, in UTC
- `form_id` (text): Form ID. Use with the other Paperform actions.
- `live` (true/false): Whether the form is currently accepting submissions
- `slug` (text): The form's slug -- its custom slug if one is set, otherwise the generated one. Works anywhere a form ID does.
- `submission_count` (number): How many submissions the form has received
- `title` (text): The form's title
- `url` (text): The form's public sharing URL

**Example output**

```json
{
  "created_at": "2026-07-14T09:00:00.000Z",
  "form_id": "5d40fdaf174b4c0007043072",
  "live": true,
  "slug": "contact-us",
  "submission_count": 128,
  "title": "Contact us",
  "url": "https://lffa4fxo.paperform.co"
}
```

### Get a submission

Fetch one submission and its answers.

**Inputs**

- Submission ID (`submission_id`, text, required): The ID of the submission, as returned by List submissions.

**Outputs**

- `answers` (object): The answers, keyed by field key -- for example {'abc1': 'Ada Lovelace'}. Use List form fields to map each key to its question.
- `form_id` (text): ID of the form the submission belongs to
- `submission_id` (text): Submission ID. Use with Get a submission.
- `submitted_at` (text): When the submission was received, in UTC

**Example output**

```json
{
  "answers": {
    "abc1": "Ada Lovelace",
    "def2": "ada@example.com"
  },
  "form_id": "5d40fdaf174b4c0007043072",
  "submission_id": "6a21bd9f174b4c000704abcd",
  "submitted_at": "2026-07-29T17:04:11.000Z"
}
```

### List form fields

List a form's fields, so you can map the keys in a submission's answers back to their questions.

**Inputs**

- Form ID or slug (`form_id`, text, required): The form's ID or slug, as returned by List forms. The slug is the part before .paperform.co in the form's URL.

**Outputs**

- `fields` (list): The form's fields

**Example output**

```json
{
  "fields": [
    {
      "key": "abc1",
      "title": "Your name",
      "type": "text"
    },
    {
      "key": "def2",
      "title": "Your email",
      "type": "email"
    }
  ]
}
```

### List forms

List the forms on your Paperform account.

**Inputs**

- Maximum results (`limit`, number): How many items to return (1-100). From 1 to 100. Default: `20`.
- Skip (`skip`, number): How many items to skip, for paging past earlier results. At least 0. Default: `0`.
- Search term (`search`, text): Optional. Only return forms whose title matches this text.

**Outputs**

- `forms` (list): The matching forms
- `has_more` (true/false): Whether more items exist beyond this page
- `total` (number): How many items match in total, across all pages

**Example output**

```json
{
  "forms": [
    {
      "created_at": "2026-07-14T09:00:00.000Z",
      "form_id": "5d40fdaf174b4c0007043072",
      "live": true,
      "slug": "contact-us",
      "submission_count": 128,
      "title": "Contact us",
      "url": "https://lffa4fxo.paperform.co"
    }
  ],
  "has_more": true,
  "total": 57
}
```

### List submissions

List the submissions a form has received.

**Inputs**

- Form ID or slug (`form_id`, text, required): The form's ID or slug, as returned by List forms. The slug is the part before .paperform.co in the form's URL.
- Maximum results (`limit`, number): How many items to return (1-100). From 1 to 100. Default: `20`.
- Skip (`skip`, number): How many items to skip, for paging past earlier results. At least 0. Default: `0`.
- Order (`sort`, text): Optional. Return oldest or newest submissions first. One of: `ASC` (Oldest first), `DESC` (Newest first).

**Outputs**

- `has_more` (true/false): Whether more items exist beyond this page
- `submissions` (list): The matching submissions
- `total` (number): How many items match in total, across all pages

**Example output**

```json
{
  "has_more": true,
  "submissions": [
    {
      "answers": {
        "abc1": "Ada Lovelace",
        "def2": "ada@example.com"
      },
      "form_id": "5d40fdaf174b4c0007043072",
      "submission_id": "6a21bd9f174b4c000704abcd",
      "submitted_at": "2026-07-29T17:04:11.000Z"
    }
  ],
  "total": 128
}
```
