CONNECT APP
Build with ConvertKit
Marketing
- API key
MCP
Give your agent ConvertKit tools
Every ConvertKit action is exposed as an MCP tool on Pipedream's remote server. Point a client at it with your end user's ID and Connect resolves that user's ConvertKit account for each tool call — you store no tokens.
// accessToken: mint a short-lived token with the Connect SDK — see the MCP guide
const transport = new StreamableHTTPClientTransport(
new URL("https://remote.mcp.pipedream.net/v3"),
{
requestInit: {
headers: {
Authorization: `Bearer ${accessToken}`,
"x-pd-project-id": "{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": "convertkit",
},
},
},
)
const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)
const { tools } = await mcp.listTools()
// e.g. run Add subscriber to a form:
const result = await mcp.callTool({
name: "convertkit-add-subscriber-to-form",
arguments: {
subscriber: "Subscriber",
form: 10,
},
})# access_token: mint a short-lived token with the Connect SDK — see the MCP guide
headers = {
"Authorization": f"Bearer {access_token}",
"x-pd-project-id": "{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": "convertkit",
}
async with streamablehttp_client("https://remote.mcp.pipedream.net/v3", headers=headers) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
# e.g. run Add subscriber to a form:
result = await session.call_tool("convertkit-add-subscriber-to-form", {
"subscriber": "Subscriber",
"form": 10,
})API PROXY
Call the ConvertKit API directly
For an endpoint with no pre-built tool, the Connect proxy forwards your request to the ConvertKit API with the connected user's credentials attached. You store no tokens and write no refresh logic.
const resp = await pd.proxy.get({
externalUserId: "{external_user_id}", // any stable ID for this user in your system
accountId: "apn_xxxxxxx",
url: "https://api.convertkit.com/v3/account",
})
// Any allowed ConvertKit endpoint works here. Pipedream attaches the
// connected account's credentials to the outgoing request.# The path segment is the target URL, URL-safe base64 encoded:
# https://api.convertkit.com/v3/account
curl "https://api.pipedream.com/v1/connect/{project_id}/proxy/aHR0cHM6Ly9hcGkuY29udmVydGtpdC5jb20vdjMvYWNjb3VudA?external_user_id={external_user_id}&account_id=apn_xxxxxxx" \
-H "Authorization: Bearer {access_token}" \
-H "x-pd-environment: production"SDK
Run ConvertKit actions from your backend
Connect a user's ConvertKit account once, then run Add subscriber to a form on their behalf from your own code — TypeScript, Python, or plain HTTP.
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: "convertkit-add-subscriber-to-form",
externalUserId: "{external_user_id}", // any stable ID for this user in your system
configuredProps: {
convertkit: { authProvisionId: "apn_xxxxxxx" },
subscriber: "Subscriber",
form: 10,
},
})from pipedream import Pipedream
pd = Pipedream(
client_id="{oauth_client_id}",
client_secret="{oauth_client_secret}",
project_id="{project_id}",
project_environment="production",
)
result = pd.actions.run(
id="convertkit-add-subscriber-to-form",
external_user_id="{external_user_id}", # any stable ID for this user in your system
configured_props={
"convertkit": {"authProvisionId": "apn_xxxxxxx"},
"subscriber": "Subscriber",
"form": 10,
},
)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": "convertkit-add-subscriber-to-form",
"configured_props": {
"convertkit": { "authProvisionId": "apn_xxxxxxx" },
"subscriber": "Subscriber",
"form": 10
}
}'TOOLS
ConvertKit actions
On-demand operations your product or agent can configure and run on behalf of a connected user.
-
Add subscriber to a form
actionAdd subscriber to a form. See docs hereWritev0.0.3 -
Add tag to a subscriber
actionAdd tag to a subscriber. See docs hereWritev0.0.2 -
List Form Options
actionRetrieves available options for the Form field.Read-onlyv0.0.1 -
List subscribers
actionReturns a list of your subscribers. See docs hereRead-onlyv0.0.3 -
List Tag Options
actionRetrieves available options for the Tag field.Read-onlyv0.0.1 -
View a Single Subscribers
actionReturns data for a single subscriber. See docs hereRead-onlyv0.0.3
EVENTS
ConvertKit triggers
Event sources your backend can deploy for users and receive through a webhook.
-
New Subscriber Activation (Instant)
triggerEmit new event when a new subscriber is activated. See docs hereInstantv0.0.2 -
New Unsubscriber Activation (Instant)
triggerEmit new event when a user unsubscribers. See docs hereInstantv0.0.2 -
New Webhook Event (Instant)
triggerEmit new event for each selected event types. See docs hereInstantv0.0.2
MULTI-APP
Use ConvertKit with other popular apps
Most products don't stop at one integration. Pair ConvertKit with the other apps your users rely on, and ship use cases that span both.
- App slug
- convertkit
- Authentication
- API key
- Categories
- Marketing
- Actions
- 6
- Triggers
- 3
- API proxy
- Available