Introduction
Podcast sponsorships are where many creators find sustainable revenue, but the sales process remains remarkably manual. You're sitting on rich listener analytics—download counts, listener locations, engagement patterns, demographic data—yet you're probably still writing generic sponsorship pitches to potential partners. Each proposal takes hours to customise, and by the time you've finished one, your analytics have shifted again.
The real problem is that good sponsorship proposals need specificity. Sponsors want to see who's listening, where they are, and how engaged they are. Generic pitches get rejected. But creating dozens of tailored proposals by hand is exhausting, especially when your listener data changes weekly. You need a system that ingests your analytics, understands what makes your audience valuable, and generates compelling sponsor-specific proposals automatically.
This workflow solves that by combining three focused tools: Shownotes AI pulls your podcast data and listener analytics, Deepnote transforms that raw data into meaningful sponsorship metrics, and Copy AI generates persuasive proposals customised for each potential sponsor. Orchestrated together, you run it once a week and have fresh, data-backed proposals ready to send.
The Automated Workflow
Why this tool combination
Shownotes AI handles podcast ingestion natively, which saves you from building custom scrapers. Deepnote gives you a Python environment to actually analyse and reshape your listener data into sponsorship-friendly formats. Copy AI's API lets you generate proposals at scale without spending hours in its interface. For orchestration, n8n works well here because it supports scheduled triggers, has good API integrations, and you can self-host it if you need to avoid vendor lock-in; Make (formerly Integromat) is quicker to set up if you prefer a managed solution; Zapier is the most accessible but slowest for complex data transformations.
I'll walk through this using n8n since it gives you the most control over data transformations without leaving the platform for Python.
Step 1: Trigger and fetch podcast analytics
Your workflow starts with a scheduled trigger. You want this running weekly, pulling fresh listener data.
Workflow trigger: Schedule (every Monday at 09:00 UTC)
→ Webhook to Shownotes AI API to fetch latest episode data
First, you'll need your Shownotes AI API key. Once you have it, create an HTTP request node in n8n:
GET https://api.shownotes.ai/v1/podcast/{{podcastId}}/analytics
Headers:
Authorization: Bearer YOUR_SHOWNOTES_API_KEY
Content-Type: application/json
Query Parameters:
period: last_7_days
metrics: listeners,locations,engagement_rate,demographics
This returns something like:
{
"podcast_id": "your_podcast_id",
"period": "last_7_days",
"total_listeners": 12400,
"listener_breakdown": {
"United States": 8200,
"United Kingdom": 1800,
"Canada": 950,
"Australia": 680,
"Other": 770
},
"engagement_rate": 0.68,
"average_listener_duration": 2840,
"demographics": {
"age_18_24": 0.15,
"age_25_34": 0.38,
"age_35_44": 0.28,
"age_45_54": 0.12,
"age_55_plus": 0.07
},
"top_episodes": [
{
"episode_id": "ep_001",
"title": "Interview with Sustainability Expert",
"downloads": 3200,
"engagement": 0.72
}
]
}
Store this response in n8n for the next step.
Step 2: Transform analytics into sponsorship metrics
Raw listener numbers don't sell sponsorships. You need to reshape this data into sponsorship propositions. This is where Deepnote comes in. You'll create a Deepnote notebook that takes your podcast data and outputs structured sponsorship metrics.
Create a new Deepnote notebook and connect your data source (you can paste the JSON or connect via API). Here's the Python logic:
import pandas as pd
import json
from datetime import datetime
analytics = {
"total_listeners": 12400,
"listener_breakdown": {
"United States": 8200,
"United Kingdom": 1800,
"Canada": 950,
"Australia": 680,
"Other": 770
},
"engagement_rate": 0.68,
"average_listener_duration": 2840,
"demographics": {
"age_18_24": 0.15,
"age_25_34": 0.38,
"age_35_44": 0.28,
"age_45_54": 0.12,
"age_55_plus": 0.07
}
}
# Calculate sponsorship-relevant metrics
weekly_downloads = analytics["total_listeners"]
engagement_percentage = analytics["engagement_rate"] * 100
primary_demographic = "25-34 year olds"
primary_demo_percentage = analytics["demographics"]["age_25_34"] * 100
# Determine tier based on downloads
if weekly_downloads >= 10000:
tier = "Premium"
estimated_impressions = weekly_downloads * 1.15
elif weekly_downloads >= 5000:
tier = "Standard"
estimated_impressions = weekly_downloads * 1.10
else:
tier = "Emerging"
estimated_impressions = weekly_downloads * 1.05
# Build sponsorship profile
sponsorship_profile = {
"weekly_downloads": weekly_downloads,
"monthly_estimated_downloads": weekly_downloads * 4.3,
"engagement_rate": f"{engagement_percentage:.1f}%",
"average_listen_time_seconds": analytics["average_listener_duration"],
"average_listen_time_formatted": f"{analytics['average_listener_duration'] // 60} minutes",
"top_markets": [
{"country": "United States", "listeners": 8200, "percentage": 66},
{"country": "United Kingdom", "listeners": 1800, "percentage": 15},
{"country": "Canada", "listeners": 950, "percentage": 8}
],
"primary_demographic": primary_demographic,
"primary_demographic_percentage": f"{primary_demo_percentage:.0f}%",
"tier": tier,
"estimated_monthly_impressions": int(estimated_impressions * 4.3)
}
# Output as JSON for the next step
output_json = json.dumps(sponsorship_profile, indent=2)
print(output_json)
In n8n, add an HTTP request node that calls your Deepnote notebook:
POST https://api.deepnote.com/v1/notebooks/{{notebookId}}/run
Headers:
Authorization: Bearer YOUR_DEEPNOTE_API_KEY
Content-Type: application/json
Body:
{
"analytics_data": {{previousNodeOutput}}
}
Deepnote will return your sponsorship metrics as structured JSON. Parse this response in n8n and store it for the proposal generation step.
Step 3: Generate customised proposals with Copy AI
Now you have clean sponsorship metrics. Use Copy AI to generate proposals tailored to different sponsor types. You'll likely want multiple proposals targeting different industries: fitness brands, productivity tools, education platforms, etc.
In n8n, create a loop node that iterates over your sponsor categories. For each category, call Copy AI's API:
POST https://api.copy.ai/api/v1/generate
Headers:
Authorization: Bearer YOUR_COPY_AI_API_KEY
Content-Type: application/json
Body:
{
"prompt": "Write a professional podcast sponsorship proposal for a {{sponsorCategory}} brand. Use these podcast metrics: {{sponsorshipMetrics}}. The proposal should highlight listener engagement rate, primary demographic ({{primaryDemographic}}), and monthly impressions ({{monthlyImpressions}}). Include a call to action suggesting a single-episode sponsorship at ${{rate}} and a multi-episode package at ${{packageRate}}. Keep it to 150 words.",
"model": "gpt-4",
"temperature": 0.7,
"max_tokens": 400
}
Map your sponsor categories as a list in n8n:
- Fitness and wellness brands
- SaaS and productivity tools
- Online education platforms
- Sustainable products and services
- Career development services
For each iteration, Copy AI returns a generated proposal. Store each one as a separate output file or document.
Here's what a generated proposal might look like:
Subject: Partnership Opportunity with [Podcast Name]
Dear [Sponsor],
We're reaching out with an exciting partnership opportunity. Our podcast reaches 12,400 engaged listeners weekly, with a 68% engagement rate and an average listen time of 47 minutes per episode.
Your target audience is listening. 66% of our listeners are based in the United States, with 38% between ages 25-34, a demographic deeply aligned with forward-thinking brands. We're generating an estimated 53,300 monthly impressions.
We'd love to introduce [Sponsor] to our community through a dedicated host-read sponsorship, bringing authentic brand integration to listeners who trust our recommendations.
Single-episode sponsorship: $500
Multi-episode package (4 episodes): $1,600 (20% discount)
Let's talk about how we can work together.
Best,
[Your Name]
Step 4: Store and deliver proposals
The final step routes your generated proposals somewhere accessible. You have several options:
Option A: Email them to yourself for review before sending.
Send Email Node:
To: your.email@example.com
Subject: [Weekly] Sponsorship Proposals Generated - {{date}}
Body: {{allGeneratedProposals}}
Option B: Save them to Google Drive or Dropbox for organisation.
Create File in Google Drive:
Folder: /Sponsorship Proposals/
Filename: {{sponsorCategory}}_proposal_{{date}}.txt
Content: {{generatedProposal}}
Option C: Post them to a CRM if you're tracking outreach.
POST to Pipedrive or HubSpot:
Create Deal with:
- Deal name: "{{sponsorCategory}} - {{date}}"
- Deal value: {{estimatedSponsorshipValue}}
- Deal note: {{generatedProposal}}
The complete n8n workflow looks like this:
1. Schedule Trigger (Weekly)
↓
2. HTTP Request to Shownotes AI (Fetch Analytics)
↓
3. HTTP Request to Deepnote (Transform Data)
↓
4. Loop over Sponsor Categories
├─ HTTP Request to Copy AI (Generate Proposal)
└─ Store/Send Result
↓
5. Final Delivery (Email / Drive / CRM)
The Manual Alternative
If you prefer not to automate this, you're essentially doing what the workflow does by hand each week. Pull your analytics from your podcast host (Transistor, Buzzsprout, Anchor, etc.), open a spreadsheet, manually calculate engagement metrics and sponsorship value, then write or copy-paste templates for each sponsor type. It takes three to four hours weekly, and the proposals are less data-specific because you're less likely to customise them extensively. You'll also miss updating proposals when your analytics shift mid-week. That said, if you only reach out to sponsors once a month or have fewer than five active sponsor outreach campaigns, the manual approach might actually be less overhead than maintaining automation. The break-even point is roughly five to seven sponsorship proposals per month.
Pro Tips
Rate limiting and API quotas
Copy AI's API has rate limits depending on your plan; typically 100 requests per minute on the starter tier. If you're generating proposals for more than 20 sponsor categories, you'll hit this. Solution: stagger your requests using n8n's delay nodes (add a 2-second pause between Copy AI calls) or upgrade to a higher Copy AI tier. Deepnote doesn't have strict rate limits on notebook runs, but keep executions under 10 per day to avoid unnecessary compute charges.
Handling missing analytics data
Some weeks your podcast might not have complete demographic data, especially if your listener base is small or if your podcast host hasn't fully synced it yet. Build error handling into your n8n workflow: add a conditional node checking whether your analytics payload includes demographics. If demographics are missing, use fallback values (e.g., "Our audience spans multiple age groups and markets") rather than letting the workflow fail silently.
Customising Copy AI's tone for different audiences
Your fitness brand proposal should sound different from your SaaS proposal. Rather than one generic prompt, create sponsor-specific prompts in n8n. Store these as variables:
sponsorPromptsMap:
fitness: "Write a sponsorship proposal emphasising listener health consciousness and wellness engagement..."
saas: "Write a sponsorship proposal emphasising listener productivity focus and professional demographics..."
education: "Write a sponsorship proposal emphasising listener knowledge-seeking behaviour and educational commitment..."
This adds complexity, but significantly improves proposal quality.
Cost management
Copy AI charges per API call, typically $0.001-0.01 per generation depending on token usage. If you're generating 20 proposals weekly, that's roughly $0.20-2.00 per week, which is negligible. However, if you're iterating and regenerating proposals multiple times, costs creep up. Solution: test your prompts thoroughly in Copy AI's interface first, then lock in your production prompts. Regenerate only when your analytics significantly change.
Validation before sending
Never automatically send proposals without human review. The workflow should generate them and store them (email to yourself, Google Drive, or a staging CRM), but you should read through at least one proposal per sponsor category to ensure the data and tone are appropriate. Occasionally Copy AI will hallucinate percentages or create awkward phrasing that needs correction before it represents your podcast.
Cost Breakdown
| Tool | Plan Needed | Monthly Cost | Notes |
|---|---|---|---|
| Shownotes AI | Pro | £19 | Includes API access and 100k monthly API requests |
| Deepnote | Standard | $20 | Includes 100 monthly notebook runs, shared notebooks |
| Copy AI | Professional | $49 | Unlimited generations via interface; API costs £0.01-0.10 per request depending on tokens |
| n8n | Self-hosted (Free) or Cloud Pro | £0 or £20 | Self-hosted requires a server (you can use a £3.50/month VPS); Cloud Pro includes 10k monthly workflow executions |
| Make | Standard | £8.99 | 10k operations monthly; sufficient for weekly proposal generation |
| Zapier | Professional | £19.99 | Supports 2-step Zaps; less ideal for this workflow but workable if you prefer managed infrastructure |
Total estimated monthly cost: £48-89 depending on whether you self-host n8n.
If you're already paying for a podcast host like Transistor (£19-99 monthly), these costs layer on top. The ROI comes when you land even one sponsorship deal at £500+, which typically happens within the first month of sending data-backed proposals instead of generic ones.