---
title: PaperTube ABM Campaign Automation
type: article
created: '2026-04-05'
updated: '2026-04-05'
source_docs:
- raw/2026-02-06-weekly-call-w-120526026.md
tags:
- abm
- papertube
- salesforce
- account-engagement
- pardot
- ai-agents
- automation
- api
- mcp
layer: 2
client_source: null
industry_context: null
transferable: true
---

# PaperTube ABM Campaign Automation

## Overview

PaperTube is executing an Account-Based Marketing (ABM) strategy targeting ~256 companies sourced from ZoomInfo and loaded into Salesforce. The core challenge: ABM requires personalized, company-specific outreach — not bulk email blasts — making manual campaign creation at this scale impractical. The solution is a two-stage AI automation pipeline: (1) generate deep account research reports per company, then (2) use those reports to produce personalized campaign sequences, with campaigns created programmatically via the Salesforce API.

This work is tracked under [[clients/papertube/index]].

---

## Stage 1: AI-Generated Account Research

### What It Does

An AI agent (running locally with ~100 MCP servers providing web scraping and document tooling) processes a deduplicated list of target companies and produces a structured research report for each one.

**Input:** A Google Sheet of ~350 rows (with duplicates) → deduplicated to **256 unique companies**, each with company name and website URL.

**Output:** One Markdown (`.md`) file per company, saved to a local `PaperTube Research/` folder.

### Report Contents

Each report covers:
- Company overview (HQ, website, industry)
- Recent product launches, rebrands, or product changes
- Sustainability commitments and packaging strategy
- Distribution strategy and growth signals
- Decision-making unit: key contacts, roles, and recommended engagement order

### Why Markdown

Reports are generated as `.md` files because:
- AI models (Claude, etc.) can read and process Markdown faster than `.docx` or `.pdf`
- Clean import into Google Docs via **Edit → Paste from Markdown** produces fully formatted output (headers, tables, checkmarks) with no manual cleanup
- Files are portable and reusable as inputs to downstream automation steps

### Runtime

Each report takes approximately 2 minutes to generate. The agent runs sequentially through all 256 companies, posting progress updates as it goes. Total runtime is several hours for the full batch.

---

## Stage 2: Personalized Campaign Sequence Generation

Once a research report exists for a company, it is fed to Claude with a prompt instructing it to generate a full ABM campaign document for that target. The output includes:

- **Strategy summary:** primary and secondary contacts to target, who to avoid initially, and rationale
- **Sequence overview:** 4–5 touches across email and LinkedIn, with specific send-day cadence
- **Guardrails:** e.g., never send two emails in the same week to the same person; pause and go conversational if a contact engages
- **Individual message drafts:** subject lines and full body copy for each email; connection note text for LinkedIn touches

Emails are plain-text (no HTML template), which simplifies campaign creation and improves deliverability for cold outreach.

---

## Stage 3: Automated Campaign Creation via Salesforce API

### The Problem

Creating 256 individual campaigns manually in Salesforce Account Engagement (Pardot) is prohibitively slow. Each campaign requires: creating the campaign record, creating a folder, and adding the associated emails/list sends.

### The Solution

Use the **Salesforce REST API** to programmatically create campaigns. When Connected Campaigns is enabled (the standard Salesforce configuration), campaigns are created through the Salesforce API and sync automatically to Account Engagement.

### Connected App Setup (Completed)

A Connected App named **"Asymmetric API Integration"** was created in Salesforce Setup:

| Field | Value |
|---|---|
| App Name | Asymmetric API Integration |
| Contact Email | mark.hope@asymmetric.pro |
| Callback URL | https://auto.asymmetric.pro |
| OAuth Scopes | `managed_pardot_services`, `refresh_token` |

Credentials retrieved:
- **Consumer Key** (active)
- **Consumer Secret** (active)
- **Staged Consumer Key / Secret** (generated and applied)
- **Business Unit ID** (from Marketing Setup → Pardot Account Setup)
- **Security Token** (generated from user profile settings)

### Current Blocker

Mark's Salesforce user account requires **SSO enablement for Account Engagement** before the OAuth connection can be completed. This is a Salesforce admin action.

**Owner:** Karly to request SSO enablement from the Salesforce admin.

---

## Data Enrichment Requirements

For the automation to generate high-quality personalized sequences, contact records in Salesforce need LinkedIn profile URLs. ZoomInfo data was imported with up to 3 contacts per company, but LinkedIn URLs may not have been included in the initial import due to a missing field.

**Action items:**
- Add a LinkedIn Profile field to Salesforce Contacts (may already exist as a standard field)
- Re-import ZoomInfo data with LinkedIn URLs mapped to that field

---

## Related Work

- [[clients/papertube/index]] — client overview
- [[clients/papertube/domain-email-setup]] — `papertube.pro` DNS and email sending configuration
- [[knowledge/outbound-sales/salesforce-api-connected-app-setup]] — reusable notes on Salesforce Connected App and OAuth credential retrieval
- [[knowledge/tracking/automated-website-tracking-audits]] — parallel automation work discussed in the same session

---

## Open Action Items

- [ ] Karly: Request Salesforce admin enable SSO for Account Engagement on Mark's user account
- [ ] Mark: Complete Salesforce OAuth connection once SSO is enabled
- [ ] Mark: Build and test campaign creation automation via Salesforce API
- [ ] Karly: Add LinkedIn Profile field to Salesforce Contacts; import ZoomInfo LinkedIn URLs
- [ ] Mark: Schedule call with Parag to discuss website/SEO services expansion