Skip to content
DTCSKILLS

Build a Black Friday Campaign in Klaviyo From Claude (Klaviyo MCP Walkthrough)

Jake Ballard·

TL;DR: The Klaviyo MCP server lets Claude create email templates and draft campaigns in your account, send you a preview, and, if you let it, schedule and send. This walkthrough builds one send from a Black Friday plan, the VIP early-access email that goes out November 20. The Email Campaign Engine writes the brief and copy from your brand files. Claude then creates the template and a draft campaign against the VIP segment, excludes recent buyers and new subscribers, and sends a preview to you. You review it in Klaviyo and schedule it yourself. Klaviyo's connector asks for your confirmation before any preview, schedule, or send. The Claude connector can't create flows or segments, so those stay manual.

Most of what ranks for "klaviyo mcp" is Klaviyo's own docs and announcements, plus a few general explainers. None of them shows the whole path from approved copy to a draft campaign sitting in the account, and none applies it to Black Friday, where the hard part is the exclusions on each send.

This is for Shopify operators who use Klaviyo and Claude and have a BFCM send calendar to build. If you don't have the calendar yet, the BFCM 2026 operator plan writes it. This post builds the sends.

What the Klaviyo MCP can write, and what it can't

Klaviyo's server (https://mcp.klaviyo.com/mcp) gives Claude tools for almost everything in a campaign. As of November 2, 2026, the Klaviyo connector in Claude's directory includes these.

Job Tool Notes
Create an email template create_email_template HTML, as a code-only or hybrid editable template. Must include Klaviyo's unsubscribe tag. A separate tool builds drag-and-drop templates.
Check how it renders render_email_template Read-only. Sends nothing.
Create a draft campaign create_campaign Audiences (segments and lists to include and exclude), messages, and content in one call. Always created as a draft.
Change subject, preview text, sender update_campaign_variation These live on the message's "variation," not on the message itself.
Send a test create_template_preview_send_job Up to 5 addresses per request. Asks for your confirmation first.
Schedule or send schedule_campaign_message, send_campaign Both ask for your confirmation first. Klaviyo notes a send can't be undone once recipients start receiving it.

Two things aren't on that list. The Claude connector has no tool for creating segments, so you build those in Klaviyo. And for flows it only has read tools. Klaviyo's tool documentation lists create_flow and a few flow-editing tools on its server, but they weren't in the Claude directory connector on November 2, 2026. Plan flow changes as a document and make them in Klaviyo.

Then there's the rule this walkthrough adds on top of Klaviyo's. Claude builds drafts and sends previews to you. It never schedules or sends to customers, even though the tools exist and the confirmation step would let it. You do the scheduling in Klaviyo, where you can see the final audience count. A confirmation dialog in a chat is easy to approve without reading.

Connect the Klaviyo MCP to Claude

The quick way. In Claude, go to Settings, then Connectors, then Browse Connectors, find Klaviyo, and connect. Approve Claude's access, then approve the Klaviyo permissions. Klaviyo's setup page says only users with the Owner, Admin, or Manager role can use the server. Connectors you add in Claude also load in Claude Code.

The careful way, for routine runs. The directory connector always loads the write tools. For anything that only needs to read, such as weekly digests, audits, or a scheduled run nobody is watching, add a custom connector instead with the read-only setting.

https://mcp.klaviyo.com/mcp?read-only=true

Klaviyo says that setting "disables any tools which can perform write actions on your Klaviyo account." Custom connectors need a Claude Pro, Max, Team, or Enterprise plan, and the directory listing can't take the setting. If you manage several Klaviyo accounts, the same page shows a company parameter for adding one custom connector per account.

A setup that works well is a read-only connector you leave on, and the write-enabled one you switch on only for a build session like this one.

Build the Black Friday campaign, step by step

The send we're building is the VIP early-access email from the BFCM plan's calendar. It goes out November 20 to VIPs only, with the offer live for them before anyone else.

1. Write the brief and copy from your brand files

Start with the Email Campaign Engine. It reads your Brand Brain (voice, personas, offers, guardrails), and with Klaviyo connected it reads your segments and past campaign results too. It confirms the account name with you before it reads anything. Then it writes the campaign as files.

  • The audience, meaning your VIP segment plus who to exclude and why
  • Three subject lines and preview text for each
  • The body copy, written to its VIP rules, which open by recognizing the customer, say plainly what they get that the list doesn't, give a deadline, and sign off from a person rather than the brand
  • The CTA and the landing URL
  • The suppression rules for this send

The prompt can be as short as this one.

"Use the Campaign Engine to write the VIP early-access email for our BFCM calendar. Offer: [your offer]. Early access opens November 20 and the list gets it November 24. Pull the VIP segment's size and last year's BFCM VIP results from Klaviyo."

The Campaign Engine only reads Klaviyo. It never creates anything there, and that's deliberate. The copy gets reviewed as a document first, where edits are cheap. Approve the copy before you build anything.

2. Check the segments the campaign will use

Start a fresh chat for the build, with the approved files attached. That keeps the Campaign Engine's read-only rule out of the way and gives Claude a clean task. Then ask for the segments.

"List my Klaviyo segments. Find the VIP segment, a segment of people who placed an order in the last 3 days, and a segment of people in the welcome flow. Show me each one's ID and name."

Claude calls get_segments and shows you what exists. This is the step where segment names cause trouble, because "VIP" in your account might be "Champions," "High value," or three overlapping segments from different agencies. Pick the right one by name and ID, not by a guess.

If the exclusion segments don't exist, build them in Klaviyo, since the connector can't create segments. Klaviyo's help article on excluding recent purchasers uses "Placed Order at least once in the last 3 days" and puts it under "Don't send to." For BFCM, also exclude anyone who joined in the last seven days, because the welcome flow is already talking to them.

3. Create the template

"Create a Klaviyo email template from the approved body copy. Use our brand colors from the Brand Brain, a single CTA button, and the unsubscribe link. Name it 'BFCM 2026 - VIP early access.' Then render it and show me the plain-text version."

Claude calls create_email_template with the HTML, as a hybrid template, so the copy blocks stay editable in Klaviyo's editor. Klaviyo's tool requires the {% unsubscribe 'Unsubscribe' %} tag, and images have to be uploaded to Klaviyo first with upload_image_from_url, so give Claude image URLs from your Shopify files rather than pasting images. The call returns a template ID and a link to the template in Klaviyo's editor.

Then render_email_template shows the rendered result without sending anything. Read the plain-text version as well. It's what some inboxes show, and it's where broken merge tags show up.

4. Create the draft campaign

"Create a draft campaign named 'BFCM 2026 - VIP early access live.' Include the VIP segment. Exclude the recent-purchasers and welcome-flow segments. Use subject line option 2 and its preview text, from name '[Founder] at [Brand]', and the template you just made. Send in each recipient's local time. Don't schedule it."

The core of the call Claude makes looks like this, trimmed.

{
  "audiences": [
    {
      "temporary_id": "vip",
      "included": ["VIP_SEGMENT_ID"],
      "excluded": ["RECENT_PURCHASERS_SEGMENT_ID", "WELCOME_FLOW_SEGMENT_ID"]
    }
  ],
  "definition": {
    "name": "BFCM 2026 - VIP early access live",
    "send_settings": { "send_strategy": "timezone", "send_timezone": "UTC" }
  },
  "messages": [
    {
      "audience_temporary_id": "vip",
      "name": "VIP early access - email",
      "variations": [
        {
          "definition": {
            "details": {
              "channel": "email",
              "subject": "SUBJECT_OPTION_2",
              "preview_text": "PREVIEW_TEXT_2",
              "from_label": "FOUNDER at BRAND",
              "from_email": "FROM_ADDRESS",
              "template_id": "TEMPLATE_ID"
            }
          }
        }
      ]
    }
  ]
}

Three details from Klaviyo's schema matter here. The campaign is created as a draft. The subject, preview text, and sender sit on the variation, so if you change them later Claude uses update_campaign_variation, not the message tool. And "send in local time" is the timezone strategy, which Klaviyo requires to be paired with UTC.

The result comes back with a campaign ID and a link to the campaign in Klaviyo. Then ask Claude for get_campaign_recipient_estimation, which says roughly how many people the audience reaches after exclusions. If the number is close to your whole list, an include or exclude went wrong.

5. Send yourself a preview and review it in Klaviyo

"Send a preview of the template to me at [your address], with first_name set to 'Sam'."

create_template_preview_send_job sends to up to five addresses. Klaviyo's connector stops the first call and asks for your confirmation before it sends anything, so you'll see a prompt. That's expected. Open the preview in Gmail and Apple Mail at least, on your phone as well as a laptop.

Then open the draft in Klaviyo and check what a chat can't show well.

  • The audience panel, with the included segment and both exclusions
  • The subject line as it appears in the inbox list
  • Every link, including the one that should land on the early-access page and not the homepage
  • Whether the offer code is live in Shopify for VIPs only

6. Schedule it yourself

Schedule the campaign in Klaviyo's campaign wizard. Two settings matter for a Black Friday send. Turn on "Determine recipients at send time," so someone who bought this morning is excluded at send time and not at build time. Klaviyo finalizes recipients shortly before the first messages go out, so a purchase after that point won't remove someone. And skip Smart Send Time for this one. Klaviyo's own guidance is to avoid it for time-sensitive sends like a sale, and early access starts at a fixed time.

That's one send. The rest of the calendar works the same way.

The rest of the BFCM sequence, built the same way

Every send in the calendar follows the same steps. The copy comes from the Campaign Engine, then Claude builds one template, one draft campaign, and one preview, and you schedule it. What changes from send to send is the audience and the exclusions, which is where most BFCM mistakes happen.

Send Include Exclude
Tease (Nov 17-19) VIP and engaged Purchasers in the last 3 days, welcome flow
VIP early access (Nov 20-23) VIP Anyone who bought since early access opened, welcome flow
List early access (Nov 24-25) Engaged and lapsed BFCM purchasers, welcome flow
Black Friday launch (Nov 27) Full engaged list BFCM purchasers
Reminder (Nov 28-29) Opened the launch, didn't buy BFCM purchasers, lapsed
Cyber Monday final hours (Nov 30) Openers who haven't bought BFCM purchasers
Thank-you (Dec 2-7) BFCM purchasers Everyone else

"BFCM purchasers" is one segment you build once in Klaviyo, made of everyone who placed an order since early access opened. Every promotional send excludes it from November 20 on. That single exclusion prevents the email that does the most damage in BFCM week, a "last chance" sent to someone who bought that morning.

The reminder audiences ("opened the launch, didn't buy") have to be segments too, and they only fill up after the launch goes out, so build those drafts on Black Friday itself.

One tip for the build session is to have Claude create all the templates first, review them together, and only then create the campaigns. Writing copy and creating campaigns in the same pass is where mismatched subject lines and templates come from.

Guardrails for letting Claude build in Klaviyo

Drafts only. Claude creates templates and draft campaigns and sends previews to you. You schedule. The confirmation Klaviyo's connector asks for on previews, schedules, and sends is a backstop, not the plan.

Confirm the account before writing. If you manage more than one brand, start every build by having Claude call get_account_details and repeat the account name back to you. The Campaign Engine already does this before it reads.

Keep a ship log. Ask Claude to write every object it creates to a file, including the template name and ID, the campaign name and ID, the segments it used, and the Klaviyo links. When something looks wrong on November 20, you'll know exactly what was built and from which copy.

Leave live flows alone. The connector can't edit flows anyway, but the same rule applies to your own instructions. Flow changes for the BFCM window (pausing the welcome discount, holding review requests) belong in a document you apply by hand. The Flow Architect and the BFCM plan's flow section write that document.

Use the read-only connector when nobody is watching. Unattended runs, digests, and audits don't need write tools, so don't give them write tools.

Respect the volume ramp. BFCM is when brands email people they haven't emailed in months, and that's when deliverability breaks. Klaviyo's inbox guidance for BFCM is to grow volume gradually and never send to more than twice your average volume in one send. Claude can check your recent send sizes before you widen an audience.

Where this trips people up

These come from how Klaviyo's tools are documented and built, not from a single run.

  • The subject line isn't on the message. Changing a campaign message won't change the subject. The subject, preview text, and sender sit on the variation. If an edit doesn't show up, that's usually why.
  • The confirmation step fails on purpose. The first preview or schedule call returns an error that asks for your approval. That's how Klaviyo's confirmation works, and it isn't a broken connection.
  • Preview sends are labeled beta. Klaviyo's docs mark the preview tool as beta, which on a custom connector means adding beta=true to the URL. The directory connector included it on November 2, 2026.
  • Segments can't be created from Claude. Build exclusion and reminder segments in Klaviyo, then give Claude their names.
  • Recipients lock shortly before sending. "Determine recipients at send time" helps, but a purchase after Klaviyo finalizes the list won't remove someone. For the final-hours send, keep the purchaser window generous.
  • Images need a Klaviyo URL. Upload them through the connector first, or reference images already in your Klaviyo library.

Klaviyo AI vs Klaviyo MCP + Claude

Klaviyo has its own AI inside the app. Composer builds the audience and drafts campaigns and flows from a prompt, using your brand styles and past performance in Klaviyo, and Klaviyo says nothing goes live without human approval.

So which do you use? If everything your campaign needs already lives in Klaviyo, Composer is the shorter path. You never leave the app, and it can work on flows, which the Claude connector can't.

Claude with the MCP makes more sense when the inputs live elsewhere. Your voice and guardrails might be in a Brand Brain. The offer math might be in a BFCM plan, and the inventory in Shopify. Claude can read all of those in one session and build the campaign from them. That way the copy follows your Brand Brain's voice and offer rules, which Klaviyo doesn't have.

Using both is reasonable, with Composer for quick sends and Claude for the planned ones.

FAQ

Can Claude create a Klaviyo campaign?

Yes. With Klaviyo's MCP connector, Claude can create an email template, create a draft campaign with included and excluded segments, set the subject and preview text, and send a preview. It can also schedule and send, but Klaviyo's connector asks for your confirmation first, and the safer practice is to schedule in Klaviyo yourself.

Does the Klaviyo MCP work with Claude?

Yes. Klaviyo is in Claude's connector directory, and Klaviyo documents a custom connector setup using https://mcp.klaviyo.com/mcp. You need an Owner, Admin, or Manager role in Klaviyo. Connectors added in Claude also load in Claude Code.

Can the Klaviyo MCP build flows?

Not through the Claude directory connector, as of November 2026. It can read flows and their performance, and it had no flow-editing tools on November 2. Klaviyo's tool docs list flow tools on its server, so check the tools your own connector loads. For BFCM, plan flow changes as a document and make them in Klaviyo.

Is the Klaviyo MCP server free?

Klaviyo announced the server as available to all Klaviyo customers and doesn't list a separate price. On the Claude side, a custom connector needs a Pro, Max, Team, or Enterprise plan.

What's the difference between Klaviyo AI and the Klaviyo MCP?

Klaviyo's AI, Composer, works inside Klaviyo using your account's data and brand styles. The MCP lets an outside assistant such as Claude work in your account, so it can combine Klaviyo with brand files, a BFCM plan, or Shopify data in one session. Both keep a person approving what goes out.

Is it safe to let an AI send emails?

Let it build and preview, not send. Klaviyo's connector asks for confirmation before previews, schedules, and sends, and a send can't be undone once recipients start receiving it. Keep scheduling as a human step in Klaviyo, use a read-only connector for unattended runs, and keep a log of everything the assistant creates.

How do I stop BFCM emails going to people who already bought?

Build a segment of people who placed an order since your sale opened, and add it under "Don't send to" on every promotional send. Turn on "Determine recipients at send time" when you schedule. Klaviyo finalizes recipients shortly before sending, so purchases after that point won't remove someone, which is why the final-hours send needs the widest purchaser window.

Where this leaves you

The useful part of the Klaviyo MCP is the step after the copy is approved. A campaign used to stop at "now go build this in Klaviyo," and now it can stop at a draft waiting for your review. Most of the work in BFCM is still the audience and exclusions on each send, and that part hasn't changed.

To run this for your own calendar, the Email Campaign Engine writes the copy and the segment rules, the BFCM plan and the readiness check cover the rest of the weekend, and the Flow Architect handles the flow changes. All three are part of the DTC Stack. If you want the read-only side of the MCP first, the Klaviyo MCP review covers audits and digests.

JB
Jake Ballard

Builds AI marketing systems for DTC and Shopify brands doing $1M-$50M. Creator of The DTC Stack.

Free Brand Voice File

Make AI sound like your brand, not a bot.

Answer 7 questions, get a custom Brand Voice file you can paste into Claude, Cursor, or any AI tool for instantly better output. It's one piece of the 49-file Brand Brain - free.

Build My Brand Voice - Free

Just want the playbooks? The Operator's Brief - new skill drops and AI workflows for $1M-$50M Shopify brands. No fluff, no spam.

Build your Brand Brain. Ship on-brand content in minutes.

The DTC Stack is a Brand Brain + 21 AI execution skills for product pages, emails, ads, SEO, and more. One purchase, lifetime access. Works with Claude, Cursor, Copilot, and 30+ AI tools.

One-time purchase. Instant access. Lifetime updates.