Hi Klaviyo Community,
I’m working on a flow that uses a webhook to preserve the source and campaign data for where users initially signed up. Here’s what I’m trying to achieve:
- All new signups have two properties:
recent_signup_sourceandrecent_signup_campaign. - The webhook should take these values and store them in the properties
initial_signup_sourceandinitial_signup_campaign, ensuring we track where users originally signed up from.
Here’s the setup I’m using:
Headers and Keys:
Authorization: Klaviyo-API-Key YOUR_PRIVATE_API_KEY
Content-Type: application/json
Accept: application/json
revision: 2024-07-15
JSON
{ "data": { "type": "profile", "attributes": { "email": "{{ person.email }}", "properties": { "initial_signup_source": "{{ person.recent_signup_source }}", "initial_signup_campaign": "{{ person.recent_signup_campaign }}" } } } }
Problem:
When the flow runs and the webhook attempts to update an existing profile, I receive an HTTP 409 Conflict error.
- I’ve already verified that there are no duplicate users with the same email or phone number in my account.
- The error persists, even though the intent is only to update the properties
initial_signup_sourceandinitial_signup_campaign.
Questions:
- Is my payload correctly structured for this use case?
- Are there additional headers or steps required to avoid the conflict?
- Could there be another reason the 409 error is triggered, despite no duplicates being present?

