Skip to Content
ChannelsPinterestPinterest — Channel Overview

Pinterest — Channel Overview

Researched: May 2026


Why This Channel

Pinterest is a visual discovery engine — 85% of weekly Pinners have made a purchase based on a Pin. For Leadmetrics clients in e-commerce, home decor, food & beverage, fitness, fashion, and local services, Pinterest is often the highest-intent traffic source. Unlike social media, Pins have a 6-month+ lifespan compared to hours for Instagram or Twitter. Content published once continues driving clicks for months.

Pinterest is the natural complement to Instagram in Leadmetrics’ social publishing stack: same image-first content, different audience intent (discovery vs. community), different content format (vertical images + keyword-rich descriptions). The Social Post Writer and Designer already produce visual content — adapting for Pinterest format is a relatively small extension.


Auth Mechanism

OAuth 2.0 (standard authorization code flow).

  • Auth URL: https://www.pinterest.com/oauth/
  • Token URL: https://api.pinterest.com/v5/oauth/token
  • Scopes: boards:read boards:write pins:read pins:write user_accounts:read
  • Token refresh: access token expires in 30 days; refresh token in 365 days

Sub-channel selection: after OAuth, the user selects which Pinterest Board to publish to (similar to Facebook Page selection). Stored as subChannelInfo.id = boardId.


What It Enables

CapabilityDetail
PublishingCreate Pins on selected board: image + title (100 chars) + description (500 chars) + link
Board managementList boards for selection; create new boards via API
AnalyticsPin impressions, saves (repins), link clicks, engagement rate per Pin
Insight workerTop performing pins; board growth; best content categories; peak save times

Workers Needed

WorkerQueueTrigger
social-publisher.worker.ts — add case "pinterest"agent__social-publisherSocialPost status → scheduled
pinterest-insights.worker.ts (new)agent__pinterest-insightsWeekly

Social Post Writer Integration

The social-post-writer.worker.ts needs a Pinterest content branch:

  • Format: Vertical image (2:3 ratio, 1000×1500px) + keyword-rich title + description with natural language (not hashtag-heavy like Instagram)
  • SEO note: Pinterest descriptions function like Google meta descriptions — keywords matter for discoverability in Pinterest Search
  • Link: Every Pin should include a destination URL (landing page, blog post, or product page)

Add platform: "Pinterest" case to the prompt builder and SCENE_MAP in the Social Post Designer.


Insight Worker Output (ChannelInsight)

  • Total impressions and saves over 30 days
  • Top 5 pins by save rate
  • Board follower growth trend
  • Peak engagement days / hours
  • Most effective content categories (recipes vs. how-to vs. product vs. lifestyle)
  • Suggested: next Pin concept based on top-performing themes

Channel Detail Page — PinterestChannelDetail.tsx

Tabs:

  1. Overview — board stats, follower count, total pins
  2. Top Pins — sorted by saves or impressions; thumbnail preview + metrics
  3. Insights — AI-generated summary of what’s working
  4. Suggestions — action items from the insight worker

Implementation Plan

Phase 1 — Connect + Publish

  1. Create packages/providers/pinterest/src/index.ts:

    • getAuthUrl(callbackUrl, channelId) — auth URL + state
    • exchangeCode(code, callbackUrl) — returns tokens + userId
    • refreshAccessToken(refreshToken) — returns new access token
    • getBoards(accessToken)GET /v5/boards — list user boards
    • createPin(accessToken, boardId, pin)POST /v5/pins with image URL + title + description + link
    • verify()GET /v5/user_account
  2. Add OAuth routes to apps/api/src/routers/channel-connect.ts:

    • GET /pinterest/connect → return auth URL
    • GET /pinterest/callback → exchange code, redirect to board select
    • GET /pinterest/page/select → list boards
    • POST /pinterest/page/select → save selected board as subChannelInfo
  3. Add case "pinterest" to social-publisher.worker.ts

  4. Add platform: "Pinterest" to SocialPost enum in Prisma schema

  5. Add seed entry to packages/db/prisma/seed.ts

  6. Create apps/dashboard/src/app/(dashboard)/channels/[id]/PinterestChannelDetail.tsx

Phase 2 — Analytics + Insights

  1. Create packages/providers/pinterest/src/analytics.ts:

    • getPinMetrics(accessToken, pinIds[]) — batch impressions + saves + clicks
    • getBoardAnalytics(accessToken, boardId, period) — board-level metrics
  2. Create packages/agents/src/workers/insights/pinterest-insights.worker.ts


Seed Entry

// packages/db/prisma/seed.ts — CHANNEL_CATALOGUE { type: "Pinterest", name: "Pinterest", iconKey: "pinterest", description: "Publish Pins to Pinterest boards and track impressions and saves.", authenticationType: "oauth2", requiresUrl: false, isActive: true, categories: ["social_media"], },

© 2026 Leadmetrics — Internal use only