Klaviyo campaign calendar and draft studio for marketing teams

By General Input

Plan every email and SMS send on one calendar, see how past campaigns performed inline, and let an assistant write and file the next draft in Klaviyo.

Integrations

  • Klaviyo
  • Slack Bot

Type

App

Categories

  • Marketing

Build me a Klaviyo campaign calendar and draft studio that my marketing team opens every week instead of the planning spreadsheet we keep alongside Klaviyo. It should be the single surface where we see what already went out, plan what is coming, and kick off the writing.

The main view is a calendar with a month tab and a week tab. Pull every email and SMS campaign from Klaviyo with Get Campaigns (run it once per channel, since the operation filters by channel) and place each one on its send date. Colour code the cards by campaign status so draft, scheduled, sending, sent and cancelled are all visually distinct, and show the channel on the card too so an SMS send never gets mistaken for an email. Clicking a campaign opens a side panel with its name, audience, status and, for anything already sent, its numbers.

Past sends show open rate, click rate and attributed revenue inline on the calendar card, sourced from Query Campaign Values. That reporting operation is heavily rate limited on Klaviyo's side, so request the whole visible date range in as few calls as possible rather than one call per campaign, and cache the results in the app so scrolling between months does not re-query. If numbers are still loading or a campaign is too recent to have them, show the card without metrics rather than blocking the calendar.

Every date that has no campaign on it is a planning slot the team can fill in. Clicking an empty day opens a form where they enter a theme, an offer, a target audience in their own words, the intended channel and any notes. The app stores these planned slots itself, in its own storage, because they do not exist in Klaviyo yet. Planned slots render on the calendar in a distinct style from real Klaviyo campaigns so nobody confuses a plan with a scheduled send. Team members can edit a slot, move it to another date, or delete it.

Each planned slot has a Draft this campaign button that kicks off a background agent. The agent should: review how similar past campaigns performed using Get Campaigns and Query Campaign Values, focusing on sends with a comparable theme, offer or audience; read the copy used in those campaigns through Get Messages for Campaign so the new draft matches the voice that worked; choose an audience by reviewing Get Lists and Get Segments against the target audience the planner described; write several subject line options plus preview text and full body copy; then create the campaign in Klaviyo as a draft with Create Campaign, set the message content with Update Campaign Message, and attach a template with Assign Template to Campaign Message.

This is the hard rule and it must be enforced in the agent's instructions: the agent never schedules and never sends. It creates campaigns with no send time attached and leaves them sitting in draft for a human to review, adjust and send from Klaviyo. It must not call any send, schedule or activation operation under any circumstances, even if a user asks it to in the slot notes.

When the agent finishes, it writes its output back into the calendar slot so the app can show it: the finished brief explaining which past campaigns it learned from and why it picked that audience, the subject line options, the body copy, and a link straight to the draft campaign in Klaviyo. The slot changes state from planned to drafted, and the calendar card reflects that. If the agent fails partway, the slot should show what went wrong instead of silently staying in planned. While the agent is running, the slot shows a running state so two people do not kick it off twice.

After the draft is filed, the agent posts a short heads up to the team's Slack channel using the Slack Bot Send a Message operation: which slot was drafted, the date it is planned for, the chosen audience, the leading subject line, and the link to the Klaviyo draft, with a clear note that it is a draft awaiting human review. Let the user configure the channel in an app settings view, and let them turn the notification off.

The calendar also warns about two kinds of trouble. First, collisions: when two campaigns or planned slots land on the same day against overlapping segments or lists, flag both cards, since that means some subscribers get hit twice in one morning. Let the user tell the app which of their audiences overlap in a settings view, and also treat the obvious case of the same list or segment appearing twice as an automatic collision. Second, frequency: when a week contains more sends than the team's send frequency cap, mark that week in both the month and week views. The cap is a number the team sets in settings. Both warnings are advisory, shown as banners and card badges, and never block anyone from planning anything.

Round it out with a settings view holding the send frequency cap, the overlapping audience pairs, the Slack channel, and the tone and length guidance the drafting agent should follow when it writes. Keep the calendar fast and readable at a glance, since the whole point is that a team can run their weekly planning meeting off this one screen.

Related prompts

Explore more prompts
A brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasonLiveChat coverage board for planning next week's shiftsPhone routing control panel for LiveKit voice agentsLinkedIn Ads budget pacing dashboard for every client accountGive your team Looker numbers without buying more seatsPause marketing emails to escalated customers, then restore them