# Create Invite Message — SurveyMonkey

> Create an invite message on an email or SMS collector. Add recipients with Add Message Recipients, then deliver it with Send Invite Message. See the documentation

- Key: `survey_monkey-create-invite-message`
- Type: Action (Write)
- Version: 0.0.2
- App: SurveyMonkey (`survey_monkey`) — https://pipedream.com/apps/survey-monkey.md
- This page (HTML): https://pipedream.com/apps/survey-monkey/actions/create-invite-message
- Hints: open-world
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/survey_monkey/actions/create-invite-message/create-invite-message.mjs

## Description

Create an invite message on an email or SMS collector. Add recipients with **Add Message Recipients**, then deliver it with **Send Invite Message**. [See the documentation](https://api.surveymonkey.com/v3/docs?javascript#api-endpoints-post-collectors-collector_id-messages)

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `survey` | `string` | Yes | Select a Survey from the list. Alternatively, you can provide a custom Survey ID. Options are loaded from the connected account. |
| `collectorId` | `string` | Yes | Select one of the above survey's Collectors to get details of. Alternatively, you can provide a custom Collector ID. Options are loaded from the connected account. |
| `type` | `string` | No | The type of message to create. Use sms for SMS collectors and invite for email collectors. |
| `subject` | `string` | No | Subject line of the email message. Not used for SMS messages. |
| `bodyText` | `string` | No | The plain text body of the message, and the only body an SMS message can use. SurveyMonkey advises keeping an SMS body to 30 characters or fewer, including spaces, so the invitation stays a single text. Include the [SurveyLink] placeholder, or recipients get an invitation with no way to reach the survey. Per SurveyMonkey's Anti-Spam Policy the [OptOutLink] must stay visible and its purpose clearly explained. |
| `bodyHtml` | `string` | No | The HTML body of an email message, and email-only — it does not apply to sms messages, and it overrides Body Text when both are set. The same placeholders apply as for Body Text — [SurveyLink], [OptOutLink], [PrivacyLink] and [FooterLink] — and the Anti-Spam Policy requires that the opt-out link stay visible rather than being hidden in the markup. |
| `fromMessageId` | `string` | No | The ID of an existing message on this collector to copy the new message from, e.g. to reuse a template. Run List Invite Messages to find valid message IDs. |
| `fromCollectorId` | `string` | No | Copy the message from the most recent message on another collector. |
| `includeRecipients` | `boolean` | No | Whether to copy the recipients of the message being copied from. |
| `recipientStatus` | `string` | No | The set of recipients to send to. |
| `embedFirstQuestion` | `boolean` | No | Whether to embed the survey's first question in an email invitation. |
| `isBrandingEnabled` | `boolean` | No | Whether SurveyMonkey branding is shown in the message. |

## Run it

**MCP**

```ts
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const accessToken = await pd.rawAccessToken

const transport = new StreamableHTTPClientTransport(
  new URL("https://remote.mcp.pipedream.net/v3"),
  {
    requestInit: {
      headers: {
        Authorization: `Bearer ${accessToken}`,
        "x-pd-project-id": process.env.PIPEDREAM_PROJECT_ID!,
        "x-pd-environment": "production",
        "x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
        "x-pd-app-slug": "survey_monkey",
      },
    },
  },
)

const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)

const { tools } = await mcp.listTools()

// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
  name: "survey_monkey-create-invite-message",
  arguments: {
    survey: "Survey",
    collectorId: "Collector",
  },
})
```

**TypeScript**

```ts
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const result = await pd.actions.run({
  id: "survey_monkey-create-invite-message",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    survey_monkey: { authProvisionId: "apn_xxxxxxx" },
    survey: "Survey",
    collectorId: "Collector",
  },
})

console.log(result)
```

**cURL**

```bash
curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
  -H "Content-Type: application/json" \
  -H "X-PD-Environment: production" \
  -H "Authorization: Bearer {access_token}" \
  -d '{
    "external_user_id": "{external_user_id}",
    "id": "survey_monkey-create-invite-message",
    "configured_props": {
      "survey_monkey": { "authProvisionId": "apn_xxxxxxx" },
      "survey": "Survey",
      "collectorId": "Collector"
    }
  }'
```

---

- App: https://pipedream.com/apps/survey-monkey.md · All apps: https://pipedream.com/apps
