Skip to main content
Question

API Support for "Determine Recipients at Send Time"?


Forum|alt.badge.img+1
  • Contributor II
  • 4 replies

Hey everyone,

I’m looking for a way to schedule an email campaign in advance while still being able to adjust the recipient list right up until the moment it’s sent. In the UI, there’s an option called “Determine Recipients at Send Time,” but I can’t find any reference to it in the API documentation.

For example, let’s say I’m planning a special product launch campaign. I want to schedule the campaign now, but as more people sign up for the product launch or some drop out, I need to keep the recipient list up to date. Ideally, I’d like to handle these additions and removals through the API so that, when the campaign finally goes out, it reflects everyone’s current status.

Is there a known approach or workaround for achieving this via the API? Any pointers would be really helpful. Thanks!

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

8 replies

MANSIR2094
Problem Solver IV
Forum|alt.badge.img+13
  • Problem Solver IV
  • 189 replies
  • February 12, 2025

Hello ​@Jukka , Klaviyo’s API doesn’t directly support “Determine Recipients at Send Time,” but you can achieve this by using a dynamic segment. Create a segment that updates based on your product launch criteria, then schedule the campaign via API (/api/campaigns/) with that segment as the recipient. The segment will keep updating until the campaign is sent, ensuring the right people receive it. This avoids the need for manual API adjustments. Let me know if you need help setting it up!


Amos Peace
Problem Solver III
Forum|alt.badge.img+5
  • Problem Solver III
  • 60 replies
  • February 12, 2025

Hello ​@Jukka,

As a Klaviyo expert, I can confirm that while the "Determine Recipients at Send Time" option exists in the UI, it is not currently exposed in the API. This means that when scheduling a campaign via the API, the recipient list is locked in at the time of scheduling.

 

But then, since the API does not natively support adjusting the list after scheduling, you have two main approaches:

Option 1: Use a Dynamic Segment for Recipients

Instead of specifying a static list of recipients when scheduling, create a segment in Klaviyo that dynamically updates based on conditions like sign-ups, engagement, or custom properties.

  1. Create a segment in Klaviyo based on your criteria (e.g., users who signed up for the product launch).
  2. When scheduling the campaign via the API, set this segment as the recipient list.
  3. Since segments update in real-time, your campaign will always target the most up-to-date list at the moment of sending.

Ensure the segment refresh rate aligns with your needs. Klaviyo updates segments frequently, but if you need last-minute sign-ups to be included, test how quickly your segment updates before relying on this method.

Option 2: Automate the Rescheduling Process

If you must use a static list and can't rely on segments, you can automate the process of keeping the list updated:

  1. Schedule the campaign initially using the API.
  2. Monitor changes to the recipient list (e.g., new sign-ups, unsubscribes).
  3. Cancel and reschedule the campaign periodically via API to ensure the list stays updated.
    • Use the Cancel Campaign API to stop an existing scheduled campaign.
    • Use the Update Campaign API to modify recipients before rescheduling.

Set a cron job or scheduled task to automate this rescheduling process up until just before send time.

Note this:

  • If your recipient list is based on clear rules (e.g., "All users who signed up for the product launch"), use a dynamic segment.
  • If your recipient list needs manual updates, automate the rescheduling via API.

Hope you find this helpful?

For further assistance you can reach out.

 

Best Regards,


hani
Contributor II
  • 2025 Champion
  • 4 replies
  • February 13, 2025

Check out: https://developers.klaviyo.com/en/reference/create_campaign

You can include a segment ID as an audience in the POST request. Segments will automatically update.


Adunni
Contributor II
Forum|alt.badge.img
  • Contributor II
  • 13 replies
  • February 14, 2025

Hi ​@Jukka ,

You're thinking strategically, and Klaviyo does offer a way to achieve this! While the "Determine Recipients at Send Time" option is available in the UI, it's not explicitly documented in the API. However, you can accomplish the same result with a smart approach.

Best Approach Using the API

  1. Create a Dynamic Segment – Instead of setting a static list, create a segment that updates automatically based on conditions (e.g., "Signed up for product launch").
  2. Schedule the Campaign via API – Use the Create Campaign API to set up your campaign and assign it to this dynamic segment.
  3. Ensure Real-Time Updates – As users sign up or drop out, update their profile properties via the Update Profile API to ensure they’re correctly included/excluded from the segment.
  4. Send the Campaign at the Right Time – When the scheduled time arrives, Klaviyo will pull recipients from the segment in real time, ensuring your list is always up to date.

Next Steps

If you need help setting this up or refining your API integration, let me know—I’d love to assist! 🚀

Cheers,
Adunni


Forum|alt.badge.img+1
  • Author
  • Contributor II
  • 4 replies
  • February 14, 2025

Hi @all

Thanks for the detailed response! However, I want to clarify: Are you certain segments update in real time for campaigns scheduled via the API?

A few months ago, I tested this exact workflow (assigning a segment to a campaign via API), and the segment did not refresh at send time—it only reflected the audience state when the campaign was initially created. And this was specifically for segments, not static lists.

Has Klaviyo changed this behavior recently? I also found an older thread where users reported the same issue: 

 


MANSIR2094
Problem Solver IV
Forum|alt.badge.img+13
  • Problem Solver IV
  • 189 replies
  • February 14, 2025

Hello ​@Jukka 

Thank you for your thoughtful question. You are absolutely right to clarify this, as Klaviyo’s API historically does not update segments dynamically at send time when assigned to a campaign. Instead, the segment reflects the audience state at the time of campaign creation.

One possible workaround is to create and schedule the campaign programmatically closer to the send time. This ensures that the segment is as up-to-date as possible before sending. Alternatively, if the goal is to ensure real-time audience updates, Klaviyo’s flow automation might be a better approach. Flows triggered by segment membership, profile property updates, or specific events allow for more dynamic sending behavior.

For those relying strictly on campaign-based segmentation, a manual refresh by re-saving the segment in the Klaviyo UI before sending can help update the recipient list. While not fully automated, this can ensure the segment captures the latest audience data before the email is sent.

I’ll also verify if Klaviyo has made any recent changes to this behavior and update you accordingly. Let me know how you’d like to proceed—I’d be happy to help refine the workflow further!

 


Forum|alt.badge.img+1
  • Author
  • Contributor II
  • 4 replies
  • February 14, 2025

Thank you for clarifying this! It sounds like my initial observations align with what you’ve confirmed: segments assigned via the API don’t dynamically refresh at send time 😢 unlike the UI’s "Determine Recipients at Send Time" option.

 

For now, we’re using a workaround where we cancel then reschedule campaigns a few hours before sending to "force" the segment to update. While this works sometimes, it’s prone to errors (especially with high campaign volumes), and manual adjustments aren’t sustainable. 😅

 

Would it be possible to share this as feedback for Klaviyo’s product team? A feature like:

  • refresh_segment parameter in the API to trigger updates before sending, or

  • Replicating the UI’s real-time segment evaluation for API-scheduled campaigns

This would be a game-changer for automation-heavy workflows! If there’s already a roadmap update or workaround I’ve missed, I’d love to hear about it.

 

Thanks again for your help ! 🚀


MANSIR2094
Problem Solver IV
Forum|alt.badge.img+13
  • Problem Solver IV
  • 189 replies
  • February 14, 2025

Hello ​@Jukka ,

I really appreciate your detailed response and completely understand the challenges you're facing with automation-heavy workflows. Your workaround makes sense, but I see how it could become unreliable, especially at scale.

I’ll absolutely share this feedback with Klaviyo’s product team. A refresh_segment parameter or real-time segment evaluation for API-scheduled campaigns would indeed be a game-changer for ensuring up-to-date audience targeting without manual intervention.

In the meantime, I’ll also check if there are any undocumented workarounds or recent API updates that might help optimize this process. If I find anything useful, I’ll follow up with you right away.

Thanks again for sharing your experience—it’s valuable feedback that could drive meaningful improvements in Klaviyo’s automation capabilities! Let me know if there’s anything else I can explore for you.