How to Draft a Weekly Campaign Performance Digest from Klaviyo with AI

Build a Spojit workflow that runs every Monday morning, pulls your recent Klaviyo campaigns and tracked events, has an AI agent summarize open and click trends in plain English, and emails the digest to your marketing team.

What This Integration Does

Marketing teams rarely have time to log into Klaviyo every week, scan each campaign, and write up what moved. This workflow does that for you. On a schedule it lists your recent Klaviyo campaigns and the events Klaviyo has tracked, hands the raw numbers to Miraxa, the intelligent layer across your automation, and asks it to call out which sends performed, where opens and clicks trended up or down, and what to try next. The result is a short, readable digest in your inbox instead of a spreadsheet you have to interpret.

The workflow is driven by a Schedule trigger, so it fires on its own with no manual step. Each run lists campaigns and events from Klaviyo, the AI agent turns them into a structured summary, and a Send Email node delivers the digest. Nothing is written back to Klaviyo, so the workflow is read-only and safe to re-run: every run produces a fresh digest for the current window and leaves no state behind. If a run fails or you want last week's digest again, you can re-run it from the execution history at any time.

Prerequisites

  • A Klaviyo connection in Spojit (added under Connections → Add connection → Klaviyo) using a private API key that can read campaigns and events.
  • The marketing team email addresses that should receive the digest. External recipients must be on your org allowlist under Settings → General → Email recipients.
  • A few sent Klaviyo campaigns and tracked events in your account, so the first run has real data to summarize.
  • Permission to create and enable scheduled workflows in your workspace.

Step 1: Add a Schedule trigger

Start a new workflow and set the trigger node's Trigger Type to Schedule. A Schedule trigger uses a 5-field Unix cron expression plus an IANA timezone. For a Monday 8am digest in Sydney, set the cron to 0 8 * * 1 and the timezone to Australia/Sydney. The trigger output is {{ scheduledAt }}, which you can reference later in the email if you want to stamp the run time. A single trigger can hold more than one schedule, so you could add a second cron later (for example a mid-week check) without building a new workflow.

Step 2: List recent campaigns with a Connector node

Add a Connector node in Direct mode, choose your Klaviyo connection, and select the list-campaigns tool. This returns your email and SMS campaigns. Use the filter field to narrow the list to the channel you care about, for example email only:

equals(messages.channel,"email")

Direct mode is the right choice here because you want a deterministic, single-tool call with no AI cost. Map the node's output to a variable such as campaigns so later steps can read {{ campaigns }}.

Step 3: List tracked events with a second Connector node

Add another Connector node in Direct mode on the same Klaviyo connection, this time selecting list-events. This tool returns tracked events such as opens, clicks, and purchases. Use sort to pull the most recent first and pageSize to cap the volume so the digest stays focused:

sort: -datetime
pageSize: 100
filter: greater-than(datetime,2024-01-01T00:00:00Z)

Set the filter datetime to roughly one week before the run so you summarize only the latest window. Save the output to a variable such as events. Klaviyo paginates results, so if you need more than one page you can read the next cursor from the response and add a Loop node, but for a weekly digest a single page of the most recent events is usually enough.

Step 4: Summarize the numbers with an Agent mode Connector node

Add a Connector node set to Agent mode. Agent mode lets the AI agent reason over the data you pass it and produce a written summary. In the prompt, hand it both variables and describe the digest you want:

You are writing a weekly marketing digest. Here are the recent
Klaviyo campaigns: {{ campaigns }}

Here are the recent tracked events: {{ events }}

Summarize the week: which campaigns went out, how opens and clicks
trended versus what you can infer, the top performer, and one
concrete suggestion for next week. Keep it under 250 words.

To make the output reliable and easy to drop into an email, turn on the node's Response Schema and force structured JSON, for example fields for headline, summary, topCampaign, and recommendation. Save the result to a variable such as digest. Agent mode costs AI credits, so keep the prompt tight and the event volume capped from Step 3.

Step 5: Email the digest to the marketing team

Add a Send Email node, which sends from Spojit's built-in mail service with no extra connection. Set Recipients to your team's comma-separated addresses, give it a templated Subject, and build the Body from the structured digest fields:

Subject: Weekly Klaviyo digest - {{ scheduledAt }}

{{ digest.headline }}

{{ digest.summary }}

Top campaign this week: {{ digest.topCampaign }}

Suggestion for next week: {{ digest.recommendation }}

Set If sending fails to Fail the workflow so a delivery problem shows up clearly in your execution history rather than passing silently. If you would rather send from your own domain instead of Spojit's built-in service, swap this node for a Connector node using the Resend or SMTP connector and its send-email tool.

Step 6: Enable the schedule and confirm timing

Save the workflow and enable it. Double-check the cron and timezone on the trigger so the digest lands when the team wants it, accounting for daylight saving in your chosen IANA zone. If you want to scaffold or tweak any node quickly, ask Miraxa in the designer with a specific instruction such as "Add a Send Email node after the Agent mode Klaviyo node that emails {{ digest.summary }} to the marketing team", and refine the details in the properties panel afterward.

Tips

  • Keep the pageSize on list-events modest. Fewer events means a cheaper, faster Agent mode call and a tighter summary.
  • Use the Response Schema on the Agent mode node so the email body always has the same fields. Free-form AI text is harder to template into a clean email.
  • Reference {{ scheduledAt }} in the subject line so each digest is easy to find and sort in inboxes.
  • Klaviyo's filter uses JSON:API syntax. Build the datetime filter from one week before the run so the digest window always matches the cadence.

Common Pitfalls

  • Cron runs in the timezone you set, not the viewer's. A digest "every Monday" can land on Sunday night for some teammates if the IANA zone is wrong, so confirm the timezone before enabling.
  • If your Klaviyo API key lacks read scope for campaigns or events, the Connector node returns an authorization error. Verify the key's permissions on the connection before the first scheduled run.
  • Without a datetime filter on list-events, you may pull far more history than one week, inflating AI cost and muddying the summary.
  • External recipients that are not on your org allowlist will not receive the email. Add them under Settings → General → Email recipients first.

Testing

Before enabling the schedule, temporarily change the trigger to a Manual trigger (or add a manual run path) and use the Run button so you can validate end to end without waiting for Monday. Confirm the two Klaviyo Direct mode nodes return campaigns and events, open the Agent mode node's output to check the structured digest fields are populated, and verify the test email arrives with the templated body filled in. Send the first test only to your own address, then widen Recipients to the full team and switch the trigger back to Schedule once the digest reads the way you want.

Learn More

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.