Cookbook
View as Markdown

Cookbook

End-to-end recipes that combine the API, webhooks and the MCP server with the tools you already use, with complete code you can adapt.

Essentials

Get leads in and replies out: the first integrations most teams build.

Add CRM contacts to a campaign

A script that adds contacts exported from your CRM to a Victoria AI campaign, safe to re-run, handling existing leads, invalid rows and rate limits.

  • GET/v1/campaigns
  • POST/v1/leads

Post prospect replies to Slack

A small server that receives the prospect_response webhook, verifies its signature, skips duplicates, and posts the reply to a Slack channel.

  • Slack
  • POST/v1/campaigns/{campaign_id}/webhooks
  • GET/v1/webhooks/examples

Receive replies once and fan them out

A webhook receiver that verifies each prospect_response delivery, stores it, answers at once, then runs any number of handlers, with replay for failures.

  • Slack
  • POST/v1/campaigns/{campaign_id}/webhooks
  • GET/v1/campaigns/{campaign_id}/webhooks
  • POST/v1/campaigns/{campaign_id}/webhooks/{webhook_id}/secret
  • GET/v1/webhooks/examples

Log prospect replies to Google Sheets

A handler for the webhook receiver that appends one row per prospect reply to a Google Sheet through the Sheets API, using a service account and no library.

  • Google Sheets
  • POST/v1/campaigns/{campaign_id}/webhooks
  • GET/v1/webhooks/examples

Add leads from Google Sheets to a campaign

A Google Apps Script that adds each new row of a sheet to a campaign on a schedule, writes the lead id back, and keeps extra columns as custom fields.

  • Google Sheets
  • Google Apps Script
  • POST/v1/leads
  • GET/v1/leads

Route prospect replies and add leads with n8n

Two importable n8n workflows for Victoria AI, a reply hub that verifies the webhook signature and routes replies by sentiment, and one that adds leads.

  • n8n
  • Slack
  • Google Sheets
  • POST/v1/campaigns/{campaign_id}/webhooks
  • GET/v1/webhooks/examples
  • POST/v1/leads

Route prospect replies and add leads with Zapier

Two Zaps for Victoria AI, a reply hub that verifies the webhook signature in a Code step and routes replies to Slack, Sheets or email, and one that adds leads.

  • Zapier
  • Slack
  • Google Sheets
  • POST/v1/campaigns/{campaign_id}/webhooks
  • GET/v1/webhooks/examples
  • POST/v1/leads

Route prospect replies and add leads with Make

Two Make scenarios for Victoria AI, a reply hub that verifies the webhook signature with sha256 and routes replies by sentiment, and a scenario that adds leads.

  • Make
  • Slack
  • Google Sheets
  • POST/v1/campaigns/{campaign_id}/webhooks
  • GET/v1/webhooks/examples
  • POST/v1/leads

Operate

Scheduled scripts that watch campaigns, senders and tests so you don't have to.

Post a daily campaign digest to Slack

A scheduled script that posts one Slack message a day with each active campaign's numbers, its lead runway, idle senders and AI fields that keep falling back.

  • Slack
  • GitHub Actions
  • cron
  • GET/v1/campaigns
  • GET/v1/campaigns/{campaign_id}/daily-stats
  • GET/v1/campaigns/{campaign_id}/queue
  • GET/v1/campaigns/{campaign_id}/senders/breakdown
  • GET/v1/campaigns/{campaign_id}/personalization-quality

Alert on disconnected senders with a reconnect link

A scheduled script that finds disconnected senders, mints a reconnect link for each, posts it to Slack once, and can pause campaigns left without a sender.

  • Slack
  • cron
  • GitHub Actions
  • GET/v1/accounts
  • POST/v1/accounts/connect-link
  • GET/v1/campaigns
  • GET/v1/campaigns/{campaign_id}/queue
  • PATCH/v1/campaigns/{campaign_id}

Keep campaigns fed from your own lead list

A scheduled script that checks each active campaign's days of runway and, when it drops below a threshold, enrols the next batch from your own list, once.

  • cron
  • GitHub Actions
  • GET/v1/campaigns
  • GET/v1/campaigns/{campaign_id}/queue
  • POST/v1/leads
  • PATCH/v1/campaigns/{campaign_id}

Turn Appointment Setter hand-offs into Linear or Asana tasks

A handler for the webhook receiver that creates a Linear issue or an Asana task when the Appointment Setter hands a conversation to a person, with the brief.

  • Linear
  • Asana
  • POST/v1/campaigns/{campaign_id}/webhooks
  • GET/v1/webhooks/examples

Create and advance CRM deals from replies and meetings

A webhook handler that opens a CRM deal on a lead's first positive reply, and a scheduled poll of bookings that moves the deal on when a meeting is booked.

  • Victoria CRM
  • cron
  • GET/v1/leads
  • GET/v1/crm/deals
  • GET/v1/crm/pipelines
  • GET/v1/crm/pipelines/{pipeline_id}
  • POST/v1/crm/deals
  • GET/v1/campaigns
  • GET/v1/campaigns/{campaign_id}/bookings
  • PATCH/v1/crm/deals/{deal_id}

Stop outreach to people who became customers

A script that removes a person, or everyone at a company, from every campaign the moment they sign up or ask to be left alone, by hand or from a webhook.

  • Stripe
  • GET/v1/campaigns
  • GET/v1/leads
  • DEL/v1/leads/{lead_id}

Call A/B test winners on a schedule

A weekly script that reads each campaign's A/B cohorts, applies the app's z-test and 50-lead floor, posts the verdict to Slack, and can promote the winner.

  • Slack
  • cron
  • GET/v1/campaigns
  • GET/v1/campaigns/{campaign_id}
  • GET/v1/campaigns/{campaign_id}/ab-cohorts
  • POST/v1/campaigns/{campaign_id}/ab-testing/promote

Build

Larger integrations: campaigns in git, lead pipelines, warehouses and agency tooling.

Keep campaigns in git and apply them

A tool that keeps a campaign as a JSON file in git. Plan shows what differs, apply writes sequence, AI fields, senders, Setter and webhook, export copies one.

  • GitHub Actions
  • GET/v1/campaigns
  • POST/v1/campaigns
  • GET/v1/campaigns/{campaign_id}
  • PUT/v1/campaigns/{campaign_id}/sequence
  • GET/v1/campaigns/{campaign_id}/ai-fields
  • POST/v1/campaigns/{campaign_id}/ai-fields
  • PATCH/v1/campaigns/{campaign_id}/ai-fields/{field_id}
  • PUT/v1/campaigns/{campaign_id}/senders
  • GET/v1/campaigns/{campaign_id}/responder
  • PATCH/v1/campaigns/{campaign_id}/responder
  • GET/v1/campaigns/{campaign_id}/webhooks
  • POST/v1/campaigns/{campaign_id}/webhooks
  • GET/v1/campaigns/{campaign_id}/preflight
  • PATCH/v1/campaigns/{campaign_id}

Push leads from Clay into a campaign

A Clay HTTP API column that adds each row to a campaign as it's enriched, carrying the enrichment columns as custom fields, with no code between.

  • Clay
  • POST/v1/leads
  • GET/v1/leads

Export campaign analytics to your data warehouse

A nightly script that pulls daily stats, sender breakdown, step funnel and analysis for every campaign into CSVs, with Postgres and BigQuery loaders.

  • Postgres
  • BigQuery
  • Metabase
  • cron
  • GET/v1/campaigns
  • GET/v1/campaigns/{campaign_id}/daily-stats
  • GET/v1/campaigns/{campaign_id}/senders/breakdown
  • GET/v1/campaigns/{campaign_id}/step-funnel
  • GET/v1/campaigns/{campaign_id}/analysis

Start outreach from a product event

An endpoint that turns an event from your product, billing or analytics tool into a lead in the right campaign, with the event's details as custom fields.

  • Stripe
  • PostHog
  • Segment
  • POST/v1/leads

Run agency operations across client workspaces

A script that loops over client workspaces, one API key each, to write a weekly report per client and a roll-up, and to mint connect links for their senders.

  • Slack
  • cron
  • GET/v1/auth/verify
  • GET/v1/campaigns
  • GET/v1/campaigns/{campaign_id}/analysis
  • GET/v1/campaigns/{campaign_id}/queue
  • GET/v1/accounts
  • POST/v1/accounts/connect-link

Work from your AI

Recipes for Claude, ChatGPT, Claude Code and Cursor through the MCP server.

Run a weekly campaign review from Claude or ChatGPT

A prompt that walks Claude or ChatGPT through the diagnose_campaign procedure over every active campaign, plus a prompt pack for the other jobs people ask for.

  • Claude
  • ChatGPT
  • Cursor
  • MCPcampaigns_list
  • MCPcampaign_queue
  • MCPsender_accounts
  • MCPcampaign_analysis
  • MCPcampaign_step_funnel
  • MCPcampaign_sender_breakdown
  • MCPpersonalization_quality
  • MCPsearch_victoria_help
  • MCPfind_leads
  • MCPadd_leads_from_search
  • MCPupdate_campaign
  • MCPupdate_sequence

Build a campaign from a brief with a Claude Code skill

A Claude Code skill that turns a short brief into a draft campaign with its sequence, an AI field and the Setter, runs the preflight, and stops before launch.

  • Claude Code
  • MCPcampaigns_list
  • MCPlist_sequence_recipes
  • MCPget_sequence_template
  • MCPcreate_campaign
  • MCPupdate_sequence
  • MCPcreate_personalization_field
  • MCPsender_accounts
  • MCPcheck_domain_dns
  • MCPassign_sender_accounts
  • MCPupdate_appointment_setter
  • MCPcampaign_preflight
  • MCPactivate_campaign

Check senders and runway on a schedule with Claude Code

A GitHub Actions workflow that runs Claude Code headless with a read-only key, asks which senders are down and which campaigns lack leads, and posts to Slack.

  • Claude Code
  • GitHub Actions
  • Slack
  • MCPsender_accounts
  • MCPreconnect_sender
  • MCPcampaigns_list
  • MCPcampaign_queue

Give your own agent Victoria AI tools

A small agent on the Claude API that attaches the Victoria AI MCP server through the MCP connector, kept read-only by its key and an allow-list of tools.

  • Claude API
  • Slack
  • MCPcampaigns_list
  • MCPcampaign_analysis
  • MCPcampaign_queue
  • MCPcampaign_step_funnel
  • MCPcampaign_sender_breakdown
  • MCPsender_accounts
  • MCPdeals_lookup