Skip to main content
Contributor I
April 22, 2025
Solved

Simple webhook or custom api for subscription for consent status change?

  • April 22, 2025
  • 3 replies
  • 241 views

I’m looking for some advice with a Klaviyo flow + webhook/api.

Here’s what we want to happen:
We currently have a "subscribe" button which customers click, and once they do that, it changes a custom property in their profile. This will add them to the "trigger" list shown below. From there we need this:
Trigger: Added to Email Subscribers_Klaviyo Consent Button list
Action #1: Update consent status to green (subscribed)
Action #2: Add them to a list

Is it possible to do this within Klaviyo with a webhook? Or do we need an api and to deploy this on a server?

    Best answer by retention

    In addition to what ​@MANSIR2094, there may be another way depending on your use case.  I’m not super clear why you want to subscribe them to your first List, and then subsequently add them to another List. But here’s how to do it within Klaviyo.

    If a user is initially Subscribed to a List based on your API action when click on the button, you can create a Flow that simply adds them to another List all within Klaviyo so you don’t have to make a roundtrip API call to subscribe them to yet another List.

    For example in your case, when they click on the button, you Subscribed them to a List (“Subscribers_Klaviyo Button” List). If you use the “Subscribed” API call, that will automatically mark the consent status (Action #1) and it will abide by whatever List settings you have for single or double-optin.  

    Then build a a List Triggered Flow off of that initial List subscription.  The only purpose of this Flow is (your Action #2) to add them to your target List using the “List Update” action in that initial Flow. You can add additional Flow Filters or conditional branches as a sanity check before adding them to your target List.

    You can read more about that here:

    Does this help or make sense?

    3 replies

    MANSIR2094
    Expert Problem Solver IV
    Expert Problem Solver IV
    April 22, 2025

    Hello ​@starsupport 

    all you have to do is:

    1. Setup a flow that triggers when a subscriber joins the email subscribers klaviyo consent button list.

     

    2. Use a webhook to notify your server when this happens. Thou on the server you will make two API calls *update the consent status. *Add the person to a new list.

     

    With this the webhook tells your server when someone subscribes, and your server then uses the klaviyo API to update their status and add them to another list.

    Mansir Digital Portfolio
    retention
    Partner - Platinum
    retentionAnswer
    2025 Champion
    April 22, 2025

    In addition to what ​@MANSIR2094, there may be another way depending on your use case.  I’m not super clear why you want to subscribe them to your first List, and then subsequently add them to another List. But here’s how to do it within Klaviyo.

    If a user is initially Subscribed to a List based on your API action when click on the button, you can create a Flow that simply adds them to another List all within Klaviyo so you don’t have to make a roundtrip API call to subscribe them to yet another List.

    For example in your case, when they click on the button, you Subscribed them to a List (“Subscribers_Klaviyo Button” List). If you use the “Subscribed” API call, that will automatically mark the consent status (Action #1) and it will abide by whatever List settings you have for single or double-optin.  

    Then build a a List Triggered Flow off of that initial List subscription.  The only purpose of this Flow is (your Action #2) to add them to your target List using the “List Update” action in that initial Flow. You can add additional Flow Filters or conditional branches as a sanity check before adding them to your target List.

    You can read more about that here:

    Does this help or make sense?

    Joseph Hsieh // retentioncommerce.com // X: @retention
    Contributor I
    April 25, 2025

    So it sounds like we need a server to make this happen?