Skip to main content
Glama

create_webhook

Set up a webhook on the Klaviyo MCP Server by specifying a URL endpoint and events to subscribe to, enabling automated real-time data updates.

Input Schema

NameRequiredDescriptionDefault
endpointYesURL endpoint for the webhook
eventsYesEvents to subscribe to
profile_idNoProfile ID for authentication

Input Schema (JSON Schema)

{ "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "endpoint": { "description": "URL endpoint for the webhook", "format": "uri", "type": "string" }, "events": { "description": "Events to subscribe to", "items": { "type": "string" }, "type": "array" }, "profile_id": { "description": "Profile ID for authentication", "type": "string" } }, "required": [ "endpoint", "events" ], "type": "object" }

Implementation Reference

  • Handler function that constructs the webhook payload and calls the Klaviyo API to create the webhook.
    async (params) => { try { const payload = { data: { type: "webhook", attributes: { endpoint: params.endpoint, events: params.events } } }; if (params.profile_id) { payload.data.relationships = { profile: { data: { type: "profile", id: params.profile_id } } }; } const result = await klaviyoClient.post('/webhooks/', payload); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: `Error creating webhook: ${error.message}` }], isError: true }; } }, { description: "Create a new webhook in Klaviyo" }
  • Zod input schema defining parameters for the create_webhook tool: endpoint, events, and optional profile_id.
    { endpoint: z.string().url().describe("URL endpoint for the webhook"), events: z.array(z.string()).describe("Events to subscribe to"), profile_id: z.string().optional().describe("Profile ID for authentication") },
  • Registration of the create_webhook tool via server.tool, including name, schema, handler, and description.
    server.tool( "create_webhook", { endpoint: z.string().url().describe("URL endpoint for the webhook"), events: z.array(z.string()).describe("Events to subscribe to"), profile_id: z.string().optional().describe("Profile ID for authentication") }, async (params) => { try { const payload = { data: { type: "webhook", attributes: { endpoint: params.endpoint, events: params.events } } }; if (params.profile_id) { payload.data.relationships = { profile: { data: { type: "profile", id: params.profile_id } } }; } const result = await klaviyoClient.post('/webhooks/', payload); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: `Error creating webhook: ${error.message}` }], isError: true }; } }, { description: "Create a new webhook in Klaviyo" } );
  • src/server.js:43-43 (registration)
    Top-level call to registerWebhookTools, which includes registration of create_webhook.
    registerWebhookTools(server);

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ivan-rivera-projects/Klaviyo-MCP-Server-Enhanced'

If you have feedback or need assistance with the MCP directory API, please join our Discord server