Skip to main content
Solved

How to throttle a flow that contains web hooks

  • February 13, 2025
  • 7 replies
  • 49 views

Forum|alt.badge.img

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 

View original
Did this topic or the replies in the thread help you find an answer to your question?

7 replies

MANSIR2094
Problem Solver IV
Forum|alt.badge.img+15
  • Problem Solver IV
  • 236 replies
  • 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!


Amos Peace
Problem Solver III
Forum|alt.badge.img+5
  • Problem Solver III
  • 62 replies
  • 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,


Adunni
Active Contributor II
Forum|alt.badge.img+1
  • Active Contributor II
  • 21 replies
  • February 14, 2025

Hi ​@Guides for Brides ,

You're making a smart move by implementing a sunset flow to clean up disengaged profiles. Your concern is valid—Klaviyo’s webhook and API calls can hit rate limits if too many requests are sent at once.

How to Throttle the Flow

  1. Use Time Delays – Add a delay (e.g., 1-5 minutes) between each step in the flow to naturally spread out API calls.
  2. Batch Processing – Instead of sending requests instantly, consider exporting profiles in batches and using a script to process them gradually.
  3. Leverage Klaviyo Segmentation – Create smaller segmented groups (e.g., 5K-10K profiles at a time) and trigger the flow separately for each.
  4. Use an External Queue System – If you have control over the webhook, implement a queue (e.g., AWS Lambda, Zapier, or a custom script) to regulate API calls before sending them to your CRM.

Next Steps

If you need help optimizing the setup or finding the best batching method, let me know—I’d be happy to assist! 🚀

Cheers,
Adunni


ross_hopkins
Active Contributor I
Forum|alt.badge.img+5
  • 2025 Champion
  • 10 replies
  • 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
Forum|alt.badge.img+11
  • Community Manager
  • 64 replies
  • 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
Forum|alt.badge.img+45
  • Champion & Partner
  • 735 replies
  • Answer
  • 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 


Forum|alt.badge.img+2
  • Contributor I
  • 2 replies
  • February 20, 2025

Hi, @Giudes for Brides

 Klaviyo doesn’t have built-in throttling for flows, but you can manage this by:

  1. Batch Processing: Segment profiles and trigger the flow in smaller batches over time.
  2. Delay Steps: Add a time delay between webhook calls to control the request rate.
  3. Use a Middleware: A tool like Zapier or a custom server can queue requests and enforce rate limits before sending them to your CRM.
  4. API Rate Limits: If using the Klaviyo API, implement a script to track and pause requests to stay within limits.