# AddFormPlacement

> Place a form on a connection surface (storefront, email or QR). Write access, forms toolset, MCP tool add_form_placement.

**Access:** [Write](https://developer.missin.co.uk/get-started/authentication.md#access-levels)

## Variables

| Variable | Type | Required | Accepts | Description |
|---|---|---|---|---|
| `input` | `AddFormPlacementInput!` | yes | Input object, below |  |

## Input types

### AddFormPlacementInput

| Field | Type | Required | Accepts | Description |
|---|---|---|---|---|
| `channelId` | `UUID!` | yes |  | The channel to deliver on. Its surface decides whether a connection is required. |
| `config` | `JSON!` | yes | Any JSON value | Per-channel settings, shaped by the channel's own slug. |
| `connectionId` | `UUID` | no |  | The target connection, or null for a MISSIN-hosted channel. Must belong to the caller's active workspace. |
| `formId` | `UUID!` | yes |  |  |

## Call it

```bash curl
curl https://api.missin.co.uk/graphql/v1 \
  -H "Authorization: Bearer $MISSIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"operationName":"AddFormPlacement","variables":{"input":{"channelId":"00000000-0000-0000-0000-000000000000","config":"…","formId":"00000000-0000-0000-0000-000000000000"}},"extensions":{"persistedQuery":{"version":1,"sha256Hash":"ff2dade786db915ce804cfe83085b87a602cc07011fd1e9b92fb31c8003cbe2d"}}}'
```

## Document

```graphql
mutation AddFormPlacement($input: AddFormPlacementInput!) { __typename addFormPlacement(input: $input) { __typename formId placementId userErrors { __typename code field message } } }
```

Source: https://developer.missin.co.uk/reference/forms/add-form-placement
