Partnerships

Templates and workflows for co-marketing campaigns, development integrations, partner intros, and customer-sharing arrangements.

Partnership Types

Not all partnerships are the same. Track them separately because the workflow, value exchange, and success metrics are completely different:

  • Co-Marketing — Joint content, campaigns, events. Shared audiences, shared costs. Value: brand exposure and lead generation for both sides.
  • Development / Integration — Building technical connections between products. Shared API, data sync, embedded features. Value: better product for mutual customers.
  • Referral / Intros — Partners send you qualified leads (and vice versa). May include commission. Value: warm leads with built-in trust.
  • Customer Sharing — Complementary products serving the same customer base. Bundle deals, cross-sell, shared onboarding. Value: lower CAC, higher LTV for both.
  • Channel / Reseller — They sell your product under their brand or alongside their services. Value: distribution you couldn't build alone.
  • Ecosystem / Alliance — Long-term strategic alignment. Joint roadmap, shared customers, co-investment. Value: market positioning and competitive moat.

Page Structure

🤝 Partnerships
│
├── 📊 Overview
│   ├── Callout: Active partners count, revenue attributed, intros made
│   ├── DataTable: partners/ (all partners)
│   │   Columns: company, type, status, contactName, revenueAttributed, lastSync
│   └── Kanban: partners/ grouped by status
│       prospect → negotiating → onboarding → active → expanding → churned
│
├── 📝 Co-Marketing
│   ├── Active Campaigns (DataTable: campaigns/ filtered by type=co_marketing)
│   │   Columns: name, partner, channel, status, startDate, budget, leads
│   ├── Campaign Templates
│   │   ▶ Joint Webinar Template
│   │       Partner: [name], Topic: [topic], Date: [date]
│   │       Checklist:
│   │       □ Agree on topic and audience
│   │       □ Create shared landing page
│   │       □ Draft email sequences (both sides)
│   │       □ Prepare slides / content
│   │       □ Promote to respective audiences
│   │       □ Host event
│   │       □ Share leads and follow up
│   │       □ Measure results and debrief
│   │
│   │   ▶ Joint Blog Post Template
│   │       □ Agree on topic and angle
│   │       □ Decide: co-authored or guest post exchange?
│   │       □ Draft and review
│   │       □ Cross-publish / cross-link
│   │       □ Promote on social (tag each other)
│   │
│   │   ▶ Social Media Swap Template
│   │       □ Exchange brand assets and messaging
│   │       □ Agree on posting schedule
│   │       □ Create posts highlighting each other's product
│   │       □ Track engagement metrics
│   │
│   │   ▶ Bundle / Discount Promotion Template
│   │       □ Define bundle offer (your product + theirs)
│   │       □ Set discount structure and revenue split
│   │       □ Create co-branded landing page
│   │       □ Agree on promotion window
│   │       □ Track redemptions by partner
│   │
│   └── Past Campaign Results
│       DataTable: campaigns/ filtered by status=completed
│       Columns: name, partner, leads, conversions, revenue, roi
│
├── 🔧 Integrations
│   ├── Active Integrations (DataTable: integrations/)
│   │   Columns: partner, type, status, apiVersion, sharedCustomers, health
│   ├── Integration Playbook
│   │   ▶ Phase 1: Discovery (1-2 weeks)
│   │       □ Technical call: understand their API and data model
│   │       □ Map use cases: what do shared customers need?
│   │       □ Define scope: one-way sync? bidirectional? embedded?
│   │       □ Agree on timeline and resources
│   │
│   │   ▶ Phase 2: Build (2-8 weeks)
│   │       □ Exchange API credentials / sandbox access
│   │       □ Define data mapping and transformation rules
│   │       □ Build integration (webhooks, polling, or SDK)
│   │       □ Handle auth (OAuth, API keys, JWT)
│   │       □ Error handling and retry logic
│   │       □ Write tests
│   │
│   │   ▶ Phase 3: Test (1-2 weeks)
│   │       □ End-to-end testing in sandbox
│   │       □ Invite beta customers to test
│   │       □ Fix edge cases
│   │       □ Load test if applicable
│   │
│   │   ▶ Phase 4: Launch (1 week)
│   │       □ Co-create announcement (blog, email, social)
│   │       □ Update respective marketplaces / directories
│   │       □ Enable for all customers
│   │       □ Monitor for errors
│   │
│   │   ▶ Phase 5: Maintain (ongoing)
│   │       □ Monthly health check on error rates
│   │       □ API version updates
│   │       □ Quarterly sync on feature requests
│   │       □ Track shared customer growth
│   │
│   └── Integration Ideas / Backlog
│       DataTable: integration-ideas/ sorted by customerRequestCount desc
│       Columns: partner, description, customerRequests, effort, priority
│
├── 🔄 Referrals & Intros
│   ├── Referral Partner List (DataTable: partners/ filtered by type=referral)
│   │   Columns: company, contactName, referrals, conversions, commissionPaid
│   ├── Inbound Referrals (DataTable: referrals/ filtered by direction=inbound)
│   │   Columns: leadName, referredBy, date, status, dealValue
│   ├── Outbound Referrals (DataTable: referrals/ filtered by direction=outbound)
│   │   Columns: referredTo, partner, date, status, reciprocated
│   ├── Referral Agreement Template
│   │   ▶ Parties: [Your Company] and [Partner]
│   │   ▶ Scope: mutual referral of qualified leads
│   │   ▶ Commission: X% of first-year revenue (or flat fee)
│   │   ▶ Tracking: referral code / UTM / intro email CC
│   │   ▶ Payment terms: net 30 after customer pays
│   │   ▶ Duration: 12 months, auto-renew
│   │   ▶ Exclusions: existing pipeline, self-sourced leads
│   └── Intro Request Template
│       "Hi [Partner Contact],
│       Would love to introduce [Lead Name] at [Lead Company] to you.
│       They're looking for [what partner provides] and I think you'd
│       be a great fit. Want me to make the intro?
│       [context on the lead]"
│
├── 👥 Customer Sharing
│   ├── Shared Customer Map (DataTable: shared-customers/)
│   │   Columns: customer, yourProduct, partnerProduct, jointRevenue, health
│   ├── Cross-Sell Playbook
│   │   ▶ Identify overlapping customer base
│   │   ▶ Agree on messaging: how to position each other's product
│   │   ▶ Create shared onboarding flow for mutual customers
│   │   ▶ Set up revenue attribution and reporting
│   │   ▶ Monthly sync on shared customer health
│   └── Bundle Offer Template
│       ▶ Your product + their product at combined discount
│       ▶ Revenue split: [X%/Y%]
│       ▶ Co-branded landing page
│       ▶ Shared success metrics
│
├── 📋 Partner Onboarding
│   ├── New Partner Checklist
│   │   ▶ Introductory call completed
│   │   ▶ Mutual value proposition defined (what each side gets)
│   │   ▶ Partnership type classified (co-marketing, integration, referral, etc.)
│   │   ▶ Agreement / MOU signed
│   │   ▶ Partner added to CRM (partners/ entity created)
│   │   ▶ Shared Slack channel or communication channel set up
│   │   ▶ First joint activity scheduled
│   │   ▶ Success metrics agreed upon
│   │   ▶ Quarterly review cadence set
│   └── Partner Offboarding
│       ▶ Notify shared customers (if applicable)
│       ▶ Disable integrations
│       ▶ Final commission settlement
│       ▶ Update partner status to "churned"
│       ▶ Retrospective: what worked, what didn't
│
└── 📊 Partner Performance
    ├── DataTable: partners/ with calculated metrics
    │   Columns: company, type, referrals, revenue, campaigns, sharedCustomers, roi
    ├── Quarterly Review Template
    │   ▶ What worked this quarter
    │   ▶ Key metrics vs targets
    │   ▶ Customer feedback on integration/partnership
    │   ▶ Next quarter priorities
    │   ▶ Expansion opportunities
    └── Partnership ROI Calculator Notes

Entity Schemas

{
  "Partner": {
    "path": "@partners/(id:nanoid)",
    "file": "[data].json",
    "fields": {
      "company": { "type": "string", "required": true },
      "contactName": { "type": "string", "required": true },
      "contactEmail": { "type": "string", "required": true },
      "contactPhone": { "type": "string" },
      "type": { "type": "string", "required": true },
      "status": { "type": "string", "default": "prospect" },
      "tier": { "type": "string", "default": "standard" },
      "ownerUserId": { "type": "string" },
      "agreementUrl": { "type": "string" },
      "commissionRate": { "type": "string" },
      "referralsMade": { "type": "number", "default": 0 },
      "referralsReceived": { "type": "number", "default": 0 },
      "revenueAttributed": { "type": "number", "default": 0 },
      "sharedCustomers": { "type": "number", "default": 0 },
      "integrationStatus": { "type": "string" },
      "lastSync": { "type": "string" },
      "nextReview": { "type": "string" },
      "notes": { "type": "string" }
    },
    "oplog": true,
    "softDelete": true
  },
  "Campaign": {
    "path": "@campaigns/(id:nanoid)",
    "file": "[data].json",
    "fields": {
      "name": { "type": "string", "required": true },
      "partnerId": { "type": "string", "required": true },
      "type": { "type": "string", "required": true },
      "channel": { "type": "string" },
      "status": { "type": "string", "default": "planning" },
      "startDate": { "type": "string" },
      "endDate": { "type": "string" },
      "budget": { "type": "number" },
      "budgetSplit": { "type": "string" },
      "leads": { "type": "number", "default": 0 },
      "conversions": { "type": "number", "default": 0 },
      "revenue": { "type": "number", "default": 0 },
      "deliverables": { "type": "array" },
      "notes": { "type": "string" }
    },
    "refs": {
      "partner": { "model": "Partner", "field": "partnerId", "type": "belongsTo" }
    },
    "oplog": true,
    "softDelete": true
  },
  "Referral": {
    "path": "@referrals/(id:nanoid)",
    "file": "[data].json",
    "fields": {
      "partnerId": { "type": "string", "required": true },
      "direction": { "type": "string", "required": true },
      "leadName": { "type": "string", "required": true },
      "leadCompany": { "type": "string" },
      "leadEmail": { "type": "string" },
      "status": { "type": "string", "default": "introduced" },
      "dealValue": { "type": "number" },
      "commissionAmount": { "type": "number" },
      "commissionPaid": { "type": "boolean", "default": false },
      "referredDate": { "type": "string" },
      "convertedDate": { "type": "string" },
      "notes": { "type": "string" }
    },
    "refs": {
      "partner": { "model": "Partner", "field": "partnerId", "type": "belongsTo" }
    },
    "oplog": true,
    "softDelete": true
  }
}

Co-Marketing Workflow

Partner Pipeline:

prospect       — Identified, no contact yet
negotiating    — Discussing terms and mutual value
onboarding     — Agreement signed, setting up collaboration
active         — Running campaigns, integrations, or referrals
expanding      — Growing scope (new channels, deeper integration)
churned        — Partnership ended (track why for future reference)

Campaign Lifecycle:

planning       — Defining scope, assets, timeline
creating       — Building content, landing pages, integration
promoting      — Live: emails sent, posts published, event running
completed      — Campaign over, measuring results
archived       — Results documented, lessons learned

Partnership Scoring

Not all partnerships deserve equal time. Score them on three axes to decide where to invest:

Audience Overlap (1-5)
  How much does their audience match your ICP?
  1 = no overlap, 5 = perfect match

Strategic Value (1-5)
  How much does this partnership strengthen your position?
  1 = nice to have, 5 = critical to strategy

Execution Effort (1-5)
  How much work to activate and maintain?
  1 = minimal, 5 = significant ongoing investment

Score = (Audience + Strategic) - Effort

  8+  → Invest heavily (dedicated partner manager)
  5-7 → Active management (monthly syncs)
  2-4 → Lightweight (quarterly check-ins)
  <2  → Deprioritize or sunset

Tips

  • Always define mutual value first. If you can't articulate what the partner gets, the partnership will die.
  • Start small. A single co-marketed blog post tells you more about partnership quality than a 20-page agreement.
  • Track referrals bidirectionally. Partners who only take and never give should be reclassified or sunsetted.
  • Use the nextReview field. Filter your DataTable to see which partners are due for a check-in.
  • When making intros: always do double opt-in. Ask both sides before connecting them.

Related Templates

Based ships built-in templates that complement this playbook:

  • Partnership Pipeline Workflow — identify to launch pipeline
  • Partnership Hub — central page for a strategic partnership
Browse all templates →