Describe the problem/error/question
I am building an automation where upon registration via a formular a person gets their profile created in rewardful and after that I want them to get signed up into a Klaviyo list.
I worked on this using ChatGPT for some time (I am not a developer btw), also have been trying with the API endpoint add profiles to list described in the convo here (I get the error message that list does not exist) and finally have the following setup:
{
“data”: {
“type”: “profile-subscription-bulk-create-job”,
“attributes”: {
“profiles”: {
“data”: [
{
“type”: “profile”,
“attributes”: {
“email”: “XXXXXX”,
“subscriptions”: {
“email”: {
“marketing”: {
“consent”: “SUBSCRIBED”
}
}
}
}
}
]
}
},
“relationships”: {
“list”: {
“data”: {
“type”: “list”,
“id”: “XXXXX”
}
}
}
}
}
There is now no error message anymore, the node is said to be operated successfully, but still there are no emails added to the list.
What is the error message (if any)?
Please share your workflow
(Select the nodes on your canvas and use the keyboard shortcuts CMD+C/CTRL+C and CMD+V/CTRL+V to copy and paste the workflow.)
Share the output returned by the last node
Output:
[
{}
]
Information on your n8n setup
- n8n version:
- Database (default: SQLite):
- n8n EXECUTIONS_PROCESS setting (default: own, main):
- Running n8n via (Docker, npm, n8n cloud, desktop app):
- Operating system:
The issue here is with the API endpoint and request structure you’re using. The profile-subscription-bulk-create-job endpoint is for bulk operations and requires checking the job status separately. For adding a single profile to a list, you should use a simpler approach.
Recommended Solution: Use the Profiles API
Here’s the correct setup:
1. API Endpoint:
https://a.klaviyo.com/api/list/{LIST_ID}/relationships/profiles/
Replace {LIST_ID} with your actual Klaviyo list ID.
2. Method: POST
3. Headers (Critical!):
You need to add these headers:
Authorization: Klaviyo-API-Key YOUR_PRIVATE_API_KEY
Content-Type: application/json
revision: 2024-10-15 (or latest Klaviyo API version)
4. Request Body:
{
"data": [
{
"type": "profile",
"id": "PROFILE_ID"
}
]
}
The Problem with Your Current Setup:
-
Missing Authorization Header: Your screenshot shows “Authentication: None” which won’t work. Klaviyo requires API key authentication.
-
Wrong Endpoint: The bulk-create-job endpoint creates an asynchronous job that you need to poll for status. It doesn’t immediately add profiles.
-
Missing Profile ID: You need to either:
- First create/get the profile ID, then add it to the list
- OR use the Subscribe endpoint (see alternative below)
Better Alternative: Create Profile + Subscribe in One Call
Endpoint:
https://a.klaviyo.com/api/profile-subscription-bulk-create-jobs/
Headers:
Authorization: Klaviyo-API-Key YOUR_PRIVATE_API_KEY
Content-Type: application/json
revision: 2024-10-15
Body:
{
"data": {
"type": "profile-subscription-bulk-create-job",
"attributes": {
"profiles": {
"data": [
{
"type": "profile",
"attributes": {
"email": "{{$json.email}}",
"phone_number": "{{$json.phone}}",
"first_name": "{{$json.firstName}}",
"last_name": "{{$json.lastName}}"
}
}
]
}
},
"relationships": {
"list": {
"data": {
"type": "list",
"id": "YOUR_LIST_ID"
}
}
}
}
}
Simplest Solution: Use n8n’s Klaviyo Node
Instead of using HTTP Request, use the built-in Klaviyo node in n8n:
- Add a “Klaviyo” node
- Set up Klaviyo credentials with your API key
- Choose operation: “Add Profile to List”
- Select your list
- Map the email and other profile fields
This handles all the API versioning and authentication automatically!
Troubleshooting Your Current Setup:
The output [{}] means the request succeeded but returned empty data, which typically happens when:
- The job was created but you’re not checking its status
- OR the authentication failed silently
Let me know which approach you’d like to use and I can provide more specific setup instructions!