Skip to main content
Contributor I
February 13, 2025
Solved

How to throttle a flow that contains web hooks

  • February 13, 2025
  • 5 replies
  • 290 views

I am creating a sunset flow for profiles who have not engaged for some time, the flow will use a web hook to inform our CRM and use the Klaviyo API to suppress them. My concern is the first run will breach the web hook limits, is there any way to throttle a flow so we don’t send more than 75/second 700/minute

    Best answer by bluesnapper

    Hi ​@Guides for Brides 

    As ​@emma.owens recommends, my approach for a sunset flow using webhooks is to use that moving forward for profiles who enter your sunset segment. That way the profiles are drip fed in to the flow so there shouldn’t be a large volume of webhooks calls at that flow step. 

    As a sunset flow is targeting disengaged profiles, your profiles who have “not engaged for some time” are unlikely to re-engage anyway. So, best to idenfity those and suppress them manually rather then feed them into a sunset flow.

    Hope that helps

    Andy 

    5 replies

    MANSIR2094
    Expert Problem Solver IV
    Expert Problem Solver IV
    February 13, 2025

    Hello ​@Guides for Brides ,

    You can manage the webhook rate by batching requests in your sunset flow. Klaviyo doesn’t have built-in throttling, but you can use a delay before the webhook action or segment profiles into smaller groups to control the flow rate. Another option is using an intermediary server or script to queue and send requests at your desired rate (e.g., AWS Lambda, Zapier, or a custom script). This ensures you stay within the webhook limits while still suppressing inactive profiles efficiently. Let me know if you need help setting this up!

    Mansir Digital Portfolio
    Amos Peace
    Problem Solver III
    Problem Solver III
    February 14, 2025

    Hello ​@Guides for Brides,

    Yes! You can throttle your Klaviyo sunset flow to stay within webhook limits using these methods:

    1. Add a Time Delay in the Flow

    • Insert a time delay between steps to slow down the webhook execution.
    • Example: If you set a 1-minute delay for every 500 contacts, you’ll prevent overloading the system.

    2. Use Klaviyo’s Batch Processing with Segments

    • Instead of triggering the webhook for all profiles at once, create segments based on engagement and process them in smaller batches.
    • Example:
      • Segment 1: Last engaged 6–12 months ago → Process Week 1
      • Segment 2: Last engaged 12+ months ago → Process Week 2

    3. Use a Third-Party Queueing System

    • Instead of directly calling the webhook, send events to an intermediate system (e.g., AWS Lambda, Zapier, or a custom queue service).
    • The queue can then process and send requests at a controlled rate.

    4. Klaviyo API Rate Limiting (For Suppression)

    • If using the Klaviyo API to suppress profiles, ensure you stay within Klaviyo’s rate limits (10 requests per second).
    • If needed, use a script with a retry mechanism to handle API throttling.

     

    Kindly reach out if you need further help.

    Best Regards,

    Peace - Turning Emails Into Opportunities 💼 Email Marketing Specialist | 🚀 Klaviyo Expert 📧 amosfolashade2@email.com WhatsApp -+2349023453575 “Delivering the right message, to the right person, at the right time.”
    ross_hopkins
    Expert Problem Solver II
    2025 Champion
    February 16, 2025

    I think your approach may depend on your technical expertise, or what you have available to you. If you have the tech resource available, then MANSIR2094’s guidance is great.

    If you don’t, one approach I’ve taken to spread the load on external systems when calling webhooks via backdating a Flow is to use a Conditional Split, and use the Random Sample filter. Then add different time delays to spread the calls over time. It’s perhaps not the most efficient approach and you can’t be specific about how you adhere to the rate limits.

    How many profiles are we talking here? Another approach is to create a segment and then sample it. Within the flow after the webhook set a profile property that indicates that the webhook took place. Make that property an exception in the main segment, and then sample again.

    emma.owens
    Community Manager
    Community Manager
    February 18, 2025

    Hi ​@Guides for Brides ! 

    I see you’ve received a few great workarounds above. Another option I will suggest is manually suppressing your Sunset segment first - that way that large number of profiles will be suppressed before your flow is set to live, and you won’t risk breaching web hook limits. Then, anyone who enters that segment moving forward will enter your flow and be suppressed through the webhook. 

    bluesnapper
    Partner
    Champion & Partner
    February 19, 2025

    Hi ​@Guides for Brides 

    As ​@emma.owens recommends, my approach for a sunset flow using webhooks is to use that moving forward for profiles who enter your sunset segment. That way the profiles are drip fed in to the flow so there shouldn’t be a large volume of webhooks calls at that flow step. 

    As a sunset flow is targeting disengaged profiles, your profiles who have “not engaged for some time” are unlikely to re-engage anyway. So, best to idenfity those and suppress them manually rather then feed them into a sunset flow.

    Hope that helps

    Andy 

    https://bluesnapper.com - Klaviyo Champion '24 & Partner