Skip to main content
Glama

create_webhook

Set up automated event notifications from Klaviyo to your application by configuring webhook endpoints and subscribing to specific marketing events.

Input Schema

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

Implementation Reference

  • Executes the tool logic: constructs Klaviyo webhook payload with endpoint and events (optionally profile), posts to /webhooks/ via klaviyoClient, returns result or error.
    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 }; } },
  • Zod schema for tool inputs: required URL endpoint and events array, 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") },
  • Registers the 'create_webhook' tool on the MCP server with name, input schema, handler function, and description.
    // Create webhook 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)
    Invokes registerWebhookTools which includes the 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