create_profile
Create customer profiles in Klaviyo by adding contact details like email, phone number, and personal information for marketing automation.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| No | Email address of the profile | ||
| phone_number | No | Phone number of the profile | |
| external_id | No | External ID for the profile | |
| first_name | No | First name of the profile | |
| last_name | No | Last name of the profile | |
| properties | No | Additional properties for the profile |
Implementation Reference
- src/tools/profiles.js:62-94 (handler)The asynchronous handler function that constructs the profile attributes from input parameters and sends a POST request to the Klaviyo /profiles/ endpoint to create a new profile.async (params) => { try { const attributes = {}; // Add all provided fields to attributes for (const [key, value] of Object.entries(params)) { if (value !== undefined && key !== 'properties') { attributes[key] = value; } } // Add properties if provided if (params.properties) { attributes.properties = params.properties; } const payload = { data: { type: "profile", attributes } }; const result = await klaviyoClient.post('/profiles/', payload); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: `Error creating profile: ${error.message}` }], isError: true }; }
- src/tools/profiles.js:54-60 (schema)Zod schema defining the optional input parameters for the create_profile tool: email, phone_number, external_id, first_name, last_name, and properties.{ email: z.string().email().optional().describe("Email address of the profile"), phone_number: z.string().optional().describe("Phone number of the profile"), external_id: z.string().optional().describe("External ID for the profile"), first_name: z.string().optional().describe("First name of the profile"), last_name: z.string().optional().describe("Last name of the profile"), properties: z.record(z.any()).optional().describe("Additional properties for the profile")
- src/tools/profiles.js:52-97 (registration)The server.tool call that registers the create_profile tool, specifying its name, input schema, handler function, and description.server.tool( "create_profile", { email: z.string().email().optional().describe("Email address of the profile"), phone_number: z.string().optional().describe("Phone number of the profile"), external_id: z.string().optional().describe("External ID for the profile"), first_name: z.string().optional().describe("First name of the profile"), last_name: z.string().optional().describe("Last name of the profile"), properties: z.record(z.any()).optional().describe("Additional properties for the profile") }, async (params) => { try { const attributes = {}; // Add all provided fields to attributes for (const [key, value] of Object.entries(params)) { if (value !== undefined && key !== 'properties') { attributes[key] = value; } } // Add properties if provided if (params.properties) { attributes.properties = params.properties; } const payload = { data: { type: "profile", attributes } }; const result = await klaviyoClient.post('/profiles/', payload); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; } catch (error) { return { content: [{ type: "text", text: `Error creating profile: ${error.message}` }], isError: true }; } }, { description: "Create a new profile in Klaviyo" } );