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
- MCP
campaigns_list - MCP
campaign_queue - MCP
sender_accounts - MCP
campaign_analysis - MCP
campaign_step_funnel - MCP
campaign_sender_breakdown - MCP
personalization_quality - MCP
search_victoria_help - MCP
find_leads - MCP
add_leads_from_search - MCP
update_campaign - MCP
update_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
- MCP
campaigns_list - MCP
list_sequence_recipes - MCP
get_sequence_template - MCP
create_campaign - MCP
update_sequence - MCP
create_personalization_field - MCP
sender_accounts - MCP
check_domain_dns - MCP
assign_sender_accounts - MCP
update_appointment_setter - MCP
campaign_preflight - MCP
activate_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
- MCP
sender_accounts - MCP
reconnect_sender - MCP
campaigns_list - MCP
campaign_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
- MCP
campaigns_list - MCP
campaign_analysis - MCP
campaign_queue - MCP
campaign_step_funnel - MCP
campaign_sender_breakdown - MCP
sender_accounts - MCP
deals_lookup