# Formbricks

> Create and run Formbricks surveys, read and record responses, and start workflows when people answer.

App · 19 actions. Web page: https://docs.lodol.com/docs/integrations/formbricks

## Actions

### Create a response

Record a response to a survey, such as feedback collected somewhere else. Formbricks runs its usual follow-ups and webhooks.

**Inputs**

- Survey (`survey_id`, text, required): The survey. Pick one, or give its ID from an earlier step.
- Answers (`answers`, object, required): An answer for each question to fill in. Leave a question empty to skip it. For multiple choice, separate the choices with commas.
- Completed (`completed`, true/false): Whether the response is finished. Defaults to yes. Default: `true`.
- Submitted at (`submitted_at`, date and time): When it was collected. Defaults to now.
- Language (`language`, text): The language code it was answered in, such as de, if the survey is translated.

**Outputs**

- `answers` (object): The answers keyed by question, such as {'How likely are you to recommend us?': 9}. The quickest way to read one answer.
- `answers_by_id` (object): The same answers keyed by question ID, with hidden field values under their own IDs
- `completed` (true/false): Whether the person finished the survey
- `contact_id` (text): The Formbricks contact who answered, if known
- `created_at` (text): When it was started
- `language` (text): The language code the survey was taken in, if set
- `metadata` (object): Where the response came from: the page url, source, country and the person's browser, OS and device
- `response_id` (text): Response ID. Use with Get, Update or Delete a response.
- `survey_id` (text): The survey it answers
- `updated_at` (text): When it last changed
- `variables` (object): The survey's variables, such as a calculated score

**Example output**

```json
{
  "answers": {
    "How likely are you to recommend us?": 9,
    "What should we improve?": "Faster exports",
    "source": "newsletter"
  },
  "answers_by_id": {
    "q1": 9,
    "q2": "Faster exports",
    "source": "newsletter"
  },
  "completed": true,
  "contact_id": "",
  "created_at": "2026-10-19T10:02:11.000Z",
  "language": "",
  "metadata": {
    "url": "https://app.formbricks.com/s/cm2wq3k9x0001abcd1234efgh"
  },
  "response_id": "cm2wr8d1k0003abcd5678ijkl",
  "survey_id": "cm2wq3k9x0001abcd1234efgh",
  "updated_at": "2026-10-19T10:03:40.000Z",
  "variables": {}
}
```

### Create a survey

Create a link survey from a list of questions, ready to share. Finish styling or logic in Formbricks' editor if you need them.

**Inputs**

- Survey name (`name`, text, required): The name people see at the top of the survey.
- Questions (`questions`, list, required): The questions to ask, in order.
- Status (`status`, text): Active opens the survey to responses straight away. Defaults to Active. One of: `inProgress` (Active), `draft`. Default: `inProgress`.

**Outputs**

- `created_at` (text): When it was created
- `hidden_fields` (list): The IDs of the survey's hidden fields
- `name` (text): The survey's name
- `questions` (list): The survey's questions, in order
- `single_use_links` (true/false): Whether the survey only accepts single-use links
- `status` (text): draft, scheduled, inProgress, paused or completed
- `survey_id` (text): Survey ID. Use with the other survey and response steps.
- `survey_url` (text): The link people open to take the survey. Empty for an in-app survey.
- `type` (text): link for a shareable link survey, app for an in-app one
- `updated_at` (text): When it last changed

**Example output**

```json
{
  "created_at": "2026-10-19T09:30:00.000Z",
  "hidden_fields": [
    "source"
  ],
  "name": "Customer feedback",
  "questions": [
    {
      "choices": [],
      "headline": "How likely are you to recommend us?",
      "question_id": "q1",
      "range": 10,
      "required": true,
      "type": "nps"
    },
    {
      "choices": [],
      "headline": "What should we improve?",
      "question_id": "q2",
      "required": false,
      "type": "openText"
    }
  ],
  "single_use_links": false,
  "status": "inProgress",
  "survey_id": "cm2wq3k9x0001abcd1234efgh",
  "survey_url": "https://app.formbricks.com/s/cm2wq3k9x0001abcd1234efgh",
  "type": "link",
  "updated_at": "2026-10-19T09:30:00.000Z"
}
```

### Create a user action

Add an event your app tracks, so an in-app survey can show when it happens.

**Inputs**

- Name (`name`, text, required): What the action is called in Formbricks.
- Key (`key`, text, required): The name your app tracks the event by, such as checkout-completed. It must be new in this workspace.
- Description (`description`, text): What the action means, for your team.

**Outputs**

- `action_id` (text): User action ID. Use with Delete a user action.
- `created_at` (text): When it was created
- `description` (text): What the action means
- `key` (text): The key your app tracks, for a code action
- `name` (text): The action's name
- `type` (text): code for an action your app tracks, noCode for one set up in Formbricks

**Example output**

```json
{
  "action_id": "cm2wt4b2c0007abcd3456qrst",
  "created_at": "2026-10-19T11:30:00.000Z",
  "description": "Fires when a customer finishes paying",
  "key": "checkout-completed",
  "name": "Checkout completed",
  "type": "code"
}
```

### Create a webhook

Have Formbricks send responses to an address of your own as they arrive.

**Inputs**

- Endpoint URL (`url`, text, required): The public https address Formbricks should send events to.
- Events (`events`, list): What to send. Defaults to completed responses. One or more of: `responseFinished` (Response completed), `responseCreated` (Response started), `responseUpdated` (Response updated).
- Surveys (`survey_ids`, list): Only send events for these surveys. Leave empty for every survey.
- Name (`name`, text): A name to recognise the webhook by in Formbricks.

**Outputs**

- `all_surveys` (true/false): Whether it sends for every survey in the workspace
- `created_at` (text): When it was created
- `events` (list): What it sends: responseFinished, responseCreated or responseUpdated
- `name` (text): The webhook's name
- `signing_secret` (text): The secret your endpoint uses to check that a delivery came from Formbricks. Formbricks shows it only this once.
- `survey_ids` (list): The surveys it sends for. Empty means every survey.
- `updated_at` (text): When it last changed
- `url` (text): Where Formbricks sends events
- `webhook_id` (text): Webhook ID. Use with Update or Delete a webhook.

**Example output**

```json
{
  "all_surveys": true,
  "created_at": "2026-10-19T11:00:00.000Z",
  "events": [
    "responseFinished"
  ],
  "name": "Responses to the CRM",
  "signing_secret": "whsec_c2VjcmV0",
  "survey_ids": [],
  "updated_at": "2026-10-19T11:00:00.000Z",
  "url": "https://example.com/hooks/formbricks",
  "webhook_id": "cm2ws0p7e0005abcd9012mnop"
}
```

### Create single-use links

Make survey links that each accept one response, to send to people one by one. The survey's single-use links must be on.

**Inputs**

- Survey (`survey_id`, text, required): The survey. Pick one, or give its ID from an earlier step.
- How many (`count`, number): How many links to make, 1 to 5000. From 1 to 5000. Default: `1`.

**Outputs**

- `links` (list): The links, each good for one response
- `survey_id` (text): The survey the links open

**Example output**

```json
{
  "links": [
    "https://app.formbricks.com/s/cm2wq3k9x0001abcd1234efgh?suId=1a2b3c&suToken=4d5e6f"
  ],
  "survey_id": "cm2wq3k9x0001abcd1234efgh"
}
```

### Delete a response

Permanently delete one response. This cannot be undone.

**Inputs**

- Response ID (`response_id`, text, required): The response's ID, from 'List responses', a trigger or an earlier step.

**Outputs**

- `deleted` (true/false): True once Formbricks has deleted it
- `response_id` (text): The response that was deleted

**Example output**

```json
{
  "deleted": true,
  "response_id": "cm2wr8d1k0003abcd5678ijkl"
}
```

### Delete a survey

Permanently delete a survey and all of its responses. This cannot be undone.

**Inputs**

- Survey (`survey_id`, text, required): The survey. Pick one, or give its ID from an earlier step.

**Outputs**

- `deleted` (true/false): True once Formbricks has deleted it
- `survey_id` (text): The survey that was deleted

**Example output**

```json
{
  "deleted": true,
  "survey_id": "cm2wq3k9x0001abcd1234efgh"
}
```

### Delete a user action

Remove a user action. Surveys it shows stop showing on that action.

**Inputs**

- User action (`action_id`, text, required): The user action. Pick one, or give its ID from an earlier step.

**Outputs**

- `action_id` (text): The user action that was deleted
- `deleted` (true/false): True once Formbricks has deleted it

**Example output**

```json
{
  "action_id": "cm2wt4b2c0007abcd3456qrst",
  "deleted": true
}
```

### Delete a webhook

Stop a webhook sending events, and remove it.

**Inputs**

- Webhook (`webhook_id`, text, required): The webhook. Pick one, or give its ID from an earlier step.

**Outputs**

- `deleted` (true/false): True once Formbricks has deleted it
- `webhook_id` (text): The webhook that was deleted

**Example output**

```json
{
  "deleted": true,
  "webhook_id": "cm2ws0p7e0005abcd9012mnop"
}
```

### Get a response

Fetch one response and all of its answers.

**Inputs**

- Response ID (`response_id`, text, required): The response's ID, from 'List responses', a trigger or an earlier step.

**Outputs**

- `answers` (object): The answers keyed by question, such as {'How likely are you to recommend us?': 9}. The quickest way to read one answer.
- `answers_by_id` (object): The same answers keyed by question ID, with hidden field values under their own IDs
- `completed` (true/false): Whether the person finished the survey
- `contact_id` (text): The Formbricks contact who answered, if known
- `created_at` (text): When it was started
- `language` (text): The language code the survey was taken in, if set
- `metadata` (object): Where the response came from: the page url, source, country and the person's browser, OS and device
- `response_id` (text): Response ID. Use with Get, Update or Delete a response.
- `survey_id` (text): The survey it answers
- `updated_at` (text): When it last changed
- `variables` (object): The survey's variables, such as a calculated score

**Example output**

```json
{
  "answers": {
    "How likely are you to recommend us?": 9,
    "What should we improve?": "Faster exports",
    "source": "newsletter"
  },
  "answers_by_id": {
    "q1": 9,
    "q2": "Faster exports",
    "source": "newsletter"
  },
  "completed": true,
  "contact_id": "",
  "created_at": "2026-10-19T10:02:11.000Z",
  "language": "",
  "metadata": {
    "url": "https://app.formbricks.com/s/cm2wq3k9x0001abcd1234efgh"
  },
  "response_id": "cm2wr8d1k0003abcd5678ijkl",
  "survey_id": "cm2wq3k9x0001abcd1234efgh",
  "updated_at": "2026-10-19T10:03:40.000Z",
  "variables": {}
}
```

### Get a survey

Fetch one survey: its status, link and questions.

**Inputs**

- Survey (`survey_id`, text, required): The survey. Pick one, or give its ID from an earlier step.

**Outputs**

- `created_at` (text): When it was created
- `hidden_fields` (list): The IDs of the survey's hidden fields
- `name` (text): The survey's name
- `questions` (list): The survey's questions, in order
- `single_use_links` (true/false): Whether the survey only accepts single-use links
- `status` (text): draft, scheduled, inProgress, paused or completed
- `survey_id` (text): Survey ID. Use with the other survey and response steps.
- `survey_url` (text): The link people open to take the survey. Empty for an in-app survey.
- `type` (text): link for a shareable link survey, app for an in-app one
- `updated_at` (text): When it last changed

**Example output**

```json
{
  "created_at": "2026-10-19T09:30:00.000Z",
  "hidden_fields": [
    "source"
  ],
  "name": "Customer feedback",
  "questions": [
    {
      "choices": [],
      "headline": "How likely are you to recommend us?",
      "question_id": "q1",
      "range": 10,
      "required": true,
      "type": "nps"
    },
    {
      "choices": [],
      "headline": "What should we improve?",
      "question_id": "q2",
      "required": false,
      "type": "openText"
    }
  ],
  "single_use_links": false,
  "status": "inProgress",
  "survey_id": "cm2wq3k9x0001abcd1234efgh",
  "survey_url": "https://app.formbricks.com/s/cm2wq3k9x0001abcd1234efgh",
  "type": "link",
  "updated_at": "2026-10-19T09:30:00.000Z"
}
```

### Get a webhook

Fetch one webhook: where it sends, what, and for which surveys.

**Inputs**

- Webhook (`webhook_id`, text, required): The webhook. Pick one, or give its ID from an earlier step.

**Outputs**

- `all_surveys` (true/false): Whether it sends for every survey in the workspace
- `created_at` (text): When it was created
- `events` (list): What it sends: responseFinished, responseCreated or responseUpdated
- `name` (text): The webhook's name
- `survey_ids` (list): The surveys it sends for. Empty means every survey.
- `updated_at` (text): When it last changed
- `url` (text): Where Formbricks sends events
- `webhook_id` (text): Webhook ID. Use with Update or Delete a webhook.

**Example output**

```json
{
  "all_surveys": true,
  "created_at": "2026-10-19T11:00:00.000Z",
  "events": [
    "responseFinished"
  ],
  "name": "Responses to the CRM",
  "survey_ids": [],
  "updated_at": "2026-10-19T11:00:00.000Z",
  "url": "https://example.com/hooks/formbricks",
  "webhook_id": "cm2ws0p7e0005abcd9012mnop"
}
```

### List responses

List survey responses, newest first, with every answer.

**Inputs**

- Survey (`survey_id`, text): Only responses to this survey. Leave empty for every survey.
- From (`start_date`, date and time): Only responses on or after this moment.
- Until (`end_date`, date and time): Only responses on or before this moment.
- Dates mean (`date_field`, text): Whether From, Until and the order go by when a response was started or last changed. Defaults to started. One of: `createdAt` (When it was started), `updatedAt` (When it was last changed).
- Order (`order`, text): Which end of the list to start from. One of: `desc` (Newest first), `asc` (Oldest first). Default: `desc`.
- Maximum responses (`limit`, number): How many to return, 1 to 250. From 1 to 250. Default: `50`.
- Skip (`skip`, number): Skip this many before returning any, to read the next page. At least 0.

**Outputs**

- `responses` (list): The matching responses
- `total` (number): How many responses match in total. Walk them with Skip.

**Example output**

```json
{
  "responses": [
    {
      "answers": {
        "How likely are you to recommend us?": 9,
        "What should we improve?": "Faster exports",
        "source": "newsletter"
      },
      "answers_by_id": {
        "q1": 9,
        "q2": "Faster exports",
        "source": "newsletter"
      },
      "completed": true,
      "contact_id": "",
      "created_at": "2026-10-19T10:02:11.000Z",
      "language": "",
      "metadata": {
        "url": "https://app.formbricks.com/s/cm2wq3k9x0001abcd1234efgh"
      },
      "response_id": "cm2wr8d1k0003abcd5678ijkl",
      "survey_id": "cm2wq3k9x0001abcd1234efgh",
      "updated_at": "2026-10-19T10:03:40.000Z",
      "variables": {}
    }
  ],
  "total": 1
}
```

### List surveys

List the surveys in your Formbricks workspace, with their questions and links.

**Inputs**

- Maximum surveys (`limit`, number): How many to return, 1 to 250. Leave empty for all. From 1 to 250.
- Skip (`skip`, number): Skip this many before returning any, to read the next page. At least 0.

**Outputs**

- `surveys` (list): The workspace's surveys, newest first

**Example output**

```json
{
  "surveys": [
    {
      "created_at": "2026-10-19T09:30:00.000Z",
      "hidden_fields": [
        "source"
      ],
      "name": "Customer feedback",
      "questions": [
        {
          "choices": [],
          "headline": "How likely are you to recommend us?",
          "question_id": "q1",
          "range": 10,
          "required": true,
          "type": "nps"
        },
        {
          "choices": [],
          "headline": "What should we improve?",
          "question_id": "q2",
          "required": false,
          "type": "openText"
        }
      ],
      "single_use_links": false,
      "status": "inProgress",
      "survey_id": "cm2wq3k9x0001abcd1234efgh",
      "survey_url": "https://app.formbricks.com/s/cm2wq3k9x0001abcd1234efgh",
      "type": "link",
      "updated_at": "2026-10-19T09:30:00.000Z"
    }
  ]
}
```

### List user actions

List the user actions that can show an in-app survey, such as a page view or an event your app tracks.

**Inputs**: None.

**Outputs**

- `actions` (list): The workspace's user actions

**Example output**

```json
{
  "actions": [
    {
      "action_id": "cm2wt4b2c0007abcd3456qrst",
      "created_at": "2026-10-19T11:30:00.000Z",
      "description": "Fires when a customer finishes paying",
      "key": "checkout-completed",
      "name": "Checkout completed",
      "type": "code"
    }
  ]
}
```

### List webhooks

List the webhooks that send this workspace's responses elsewhere.

**Inputs**: None.

**Outputs**

- `webhooks` (list): The workspace's webhooks

**Example output**

```json
{
  "webhooks": [
    {
      "all_surveys": true,
      "created_at": "2026-10-19T11:00:00.000Z",
      "events": [
        "responseFinished"
      ],
      "name": "Responses to the CRM",
      "survey_ids": [],
      "updated_at": "2026-10-19T11:00:00.000Z",
      "url": "https://example.com/hooks/formbricks",
      "webhook_id": "cm2ws0p7e0005abcd9012mnop"
    }
  ]
}
```

### Update a response

Change answers on a response, or mark it completed. Answers left empty keep their current value.

**Inputs**

- Survey (`survey_id`, text, required): The survey. Pick one, or give its ID from an earlier step.
- Response ID (`response_id`, text, required): The response's ID, from 'List responses', a trigger or an earlier step.
- Answers (`answers`, object): The answers to change. Leave a question empty to keep its answer. For multiple choice, separate the choices with commas.
- Status (`completed`, text): Mark the response completed or in progress. One of: `true` (Completed), `false` (In progress).

**Outputs**

- `answers` (object): The answers keyed by question, such as {'How likely are you to recommend us?': 9}. The quickest way to read one answer.
- `answers_by_id` (object): The same answers keyed by question ID, with hidden field values under their own IDs
- `completed` (true/false): Whether the person finished the survey
- `contact_id` (text): The Formbricks contact who answered, if known
- `created_at` (text): When it was started
- `language` (text): The language code the survey was taken in, if set
- `metadata` (object): Where the response came from: the page url, source, country and the person's browser, OS and device
- `response_id` (text): Response ID. Use with Get, Update or Delete a response.
- `survey_id` (text): The survey it answers
- `updated_at` (text): When it last changed
- `variables` (object): The survey's variables, such as a calculated score

**Example output**

```json
{
  "answers": {
    "How likely are you to recommend us?": 9,
    "What should we improve?": "Faster exports",
    "source": "newsletter"
  },
  "answers_by_id": {
    "q1": 9,
    "q2": "Faster exports",
    "source": "newsletter"
  },
  "completed": true,
  "contact_id": "",
  "created_at": "2026-10-19T10:02:11.000Z",
  "language": "",
  "metadata": {
    "url": "https://app.formbricks.com/s/cm2wq3k9x0001abcd1234efgh"
  },
  "response_id": "cm2wr8d1k0003abcd5678ijkl",
  "survey_id": "cm2wq3k9x0001abcd1234efgh",
  "updated_at": "2026-10-19T10:03:40.000Z",
  "variables": {}
}
```

### Update a survey

Rename a survey, open, pause or close it, or turn its single-use links on or off. Empty fields stay as they are.

**Inputs**

- Survey (`survey_id`, text, required): The survey. Pick one, or give its ID from an earlier step.
- New name (`name`, text): The survey's new name.
- Status (`status`, text): Active collects responses, Paused stops for now, and Closed ends the survey. One of: `inProgress` (Active), `paused`, `completed` (Closed).
- Single-use links (`single_use_links`, text): On makes the survey accept only links made by Create single-use links, each good for one response. One of: `on`, `off`.

**Outputs**

- `created_at` (text): When it was created
- `hidden_fields` (list): The IDs of the survey's hidden fields
- `name` (text): The survey's name
- `questions` (list): The survey's questions, in order
- `single_use_links` (true/false): Whether the survey only accepts single-use links
- `status` (text): draft, scheduled, inProgress, paused or completed
- `survey_id` (text): Survey ID. Use with the other survey and response steps.
- `survey_url` (text): The link people open to take the survey. Empty for an in-app survey.
- `type` (text): link for a shareable link survey, app for an in-app one
- `updated_at` (text): When it last changed

**Example output**

```json
{
  "created_at": "2026-10-19T09:30:00.000Z",
  "hidden_fields": [
    "source"
  ],
  "name": "Customer feedback",
  "questions": [
    {
      "choices": [],
      "headline": "How likely are you to recommend us?",
      "question_id": "q1",
      "range": 10,
      "required": true,
      "type": "nps"
    },
    {
      "choices": [],
      "headline": "What should we improve?",
      "question_id": "q2",
      "required": false,
      "type": "openText"
    }
  ],
  "single_use_links": false,
  "status": "inProgress",
  "survey_id": "cm2wq3k9x0001abcd1234efgh",
  "survey_url": "https://app.formbricks.com/s/cm2wq3k9x0001abcd1234efgh",
  "type": "link",
  "updated_at": "2026-10-19T09:30:00.000Z"
}
```

### Update a webhook

Change a webhook's name, address, events or surveys. Empty fields stay as they are.

**Inputs**

- Webhook (`webhook_id`, text, required): The webhook. Pick one, or give its ID from an earlier step.
- Endpoint URL (`url`, text): The new public https address to send events to.
- Events (`events`, list): What to send from now on. One or more of: `responseFinished` (Response completed), `responseCreated` (Response started), `responseUpdated` (Response updated).
- Surveys (`survey_ids`, list): Only send events for these surveys from now on.
- Name (`name`, text): The webhook's new name.

**Outputs**

- `all_surveys` (true/false): Whether it sends for every survey in the workspace
- `created_at` (text): When it was created
- `events` (list): What it sends: responseFinished, responseCreated or responseUpdated
- `name` (text): The webhook's name
- `survey_ids` (list): The surveys it sends for. Empty means every survey.
- `updated_at` (text): When it last changed
- `url` (text): Where Formbricks sends events
- `webhook_id` (text): Webhook ID. Use with Update or Delete a webhook.

**Example output**

```json
{
  "all_surveys": true,
  "created_at": "2026-10-19T11:00:00.000Z",
  "events": [
    "responseFinished"
  ],
  "name": "Responses to the CRM",
  "survey_ids": [],
  "updated_at": "2026-10-19T11:00:00.000Z",
  "url": "https://example.com/hooks/formbricks",
  "webhook_id": "cm2ws0p7e0005abcd9012mnop"
}
```
