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

# Импорт ответов Typeform в Twenty

> Обработайте полезную нагрузку вебхука Typeform, чтобы создавать лиды из отправок формы.

Для стандартной настройки вебхука см. [Настройка триггера вебхука](/ru/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger). В этой статье рассматривается специальная обработка, требуемая для пользовательской структуры полезной нагрузки Typeform.

### Шаг 1: Создайте рабочий процесс с вебхуком

1. Перейдите в **Настройки → Рабочие процессы**
2. Нажмите **+ Новый рабочий процесс**
3. Выберите **Webhook** в качестве триггера
4. Скопируйте URL вебхука

### Шаг 2: Настройте Typeform

1. В Typeform откройте свою форму
2. Перейдите в **Connect → Webhooks**
3. Вставьте URL вебхука Twenty
4. Сохранить

### Шаг 3: Разберитесь в полезной нагрузке Typeform

Typeform отправляет вложенную структуру JSON. Вот упрощенный пример:

```json theme={null}
{
  "event_type": "form_response",
  "form_response": {
    "form_id": "abc123",
    "submitted_at": "2025-01-15T10:30:00Z",
    "answers": [
      {
        "text": "Jane",
        "type": "text",
        "field": { "id": "field1", "type": "short_text", "title": "First Name" }
      },
      {
        "text": "Smith",
        "type": "text",
        "field": { "id": "field2", "type": "short_text", "title": "Last Name" }
      },
      {
        "text": "Acme Corp",
        "type": "text",
        "field": { "id": "field3", "type": "short_text", "title": "Company" }
      },
      {
        "email": "jane@acme.com",
        "type": "email",
        "field": { "id": "field4", "type": "email", "title": "Email" }
      },
      {
        "type": "choice",
        "field": { "id": "field5", "type": "dropdown", "title": "Team Size" },
        "choice": { "label": "10-50" }
      }
    ]
  }
}
```

Ключевые моменты:

* Данные формы находятся в `form_response`
* **Ответы возвращаются в виде массива**, а не именованных полей
* Каждый ответ включает тип поля и его заголовок для справки

### Шаг 4: Извлеките поля из массива ответов

Поскольку `answers` — это массив, на последующих шагах можно выбрать только весь массив, а не отдельные поля. Добавьте действие **Code** для извлечения нужных полей:

```javascript theme={null}
export const main = async (params: {
  answers: any;
}): Promise<object> => {
  const { answers } = params;

  // Handle input that may come as a string or an array
  const answersFormatted = typeof answers === "string"
    ? JSON.parse(answers)
    : answers;

  // Extract fields by position or by finding the field type
  const firstName = answersFormatted[0]?.text || "";
  const lastName = answersFormatted[1]?.text || "";
  const company = answersFormatted[2]?.text || "";
  const email = answersFormatted.find(a => a.type === "email")?.email || "";
  const teamSize = answersFormatted.find(a => a.type === "choice")?.choice?.label || "";

  return {
    contact: {
      firstName,
      lastName,
      company,
      email,
      teamSize
    }
  };
};
```

На последующих шагах теперь можно выбирать отдельные поля, такие как `contact.firstName` и `contact.email`, в селекторе переменных.

<Tip>
  Для получения подробностей об обработке массивов в действиях Code см. [Обработка массивов в действиях Code](/ru/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions).
</Tip>

### Шаг 5: Создайте запись

Добавьте действие **Создать запись**:

| Поле                  | Значение                                                  |
| --------------------- | --------------------------------------------------------- |
| **Объект**            | Люди                                                      |
| **Имя**               | `{{code.contact.firstName}}`                              |
| **Фамилия**           | `{{code.contact.lastName}}`                               |
| **Электронная почта** | `{{code.contact.email}}`                                  |
| **Компания**          | Найдите или создайте на основе `{{code.contact.company}}` |

### Шаг 6: Протестируйте и активируйте

1. Отправьте тестовый ответ в Typeform
2. Проверьте запуск рабочего процесса, чтобы убедиться, что данные были получены
3. Активируйте рабочий процесс

## Связанные материалы

* [Настройка триггера вебхука](/ru/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger)
* [Обработка массивов в действиях Code](/ru/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)
