Pocket

Webhooks

Receive real-time notifications when recordings are processed

Pocket sends webhook notifications to your endpoint when recording events occur. Use webhooks to trigger automations in tools like n8n, Zapier, and Make, or in your own backend.

Supported Events

Processing Events

EventFired When
transcription.completedTranscript generation is complete
summary.completedFull post-processing is complete (summary, actions, tags, and related outputs)
summary.regeneratedFull summary package is regenerated
summary.updatedSummary text is regenerated
mind_map.completedMind map generation is complete
action_items.regeneratedAction items are regenerated
tags.generatedAI tags are generated and saved
speakers.labeledSpeaker labels are resolved in the transcript

User Actions

EventFired When
transcript.editedA user edits transcript text or speaker labels
action_items.updatedA user edits or completes an action item
recording.createdA recording is created or uploaded
recording.deletedA recording is deleted
recording.mergedTwo or more recordings are merged
translation.completedTranscript translation is complete

Setup

Configure webhook destinations in the Pocket app integrations UI.

Delivery

SettingValue
HTTP methodPOST
Content-Typeapplication/json
User-AgentHeyPocket-Webhook/1.0
Timeout30 seconds
Retries3 attempts (exponential backoff 1s–30s)
Delivery guaranteeAt-least-once

Payload Structure

{
  "event": "summary.completed",
  "timestamp": "2026-02-18T12:00:00.000Z",
  "recording": {
    "id": "rec_abc123",
    "title": "Team Standup",
    "description": "Weekly sync",
    "duration": 1800,
    "language": "English",
    "createdAt": "2026-02-18T11:30:00.000Z"
  },
  "summarizations": {
    "sum_456": {
      "id": "row_789",
      "summarizationId": "sum_456",
      "processingStatus": "completed",
      "v2": {
        "summary": {
          "title": "Team Standup",
          "emoji": "šŸ“‹",
          "markdown": "## Key Decisions\n\n...",
          "bulletPoints": ["Ship v2 by Friday", "Review design docs"]
        },
        "actionItems": {
          "version": "3",
          "actionItems": [
            {
              "id": "subtask_1",
              "parentTaskId": "task_1",
              "title": "Ship v2 by Friday",
              "dueDate": "2026-02-20",
              "status": "TODO",
              "globalActionItemId": "gai_001",
              "isCompleted": false,
              "is_completed": false
            }
          ]
        },
        "mindMap": { "nodes": [], "edges": [] },
        "speakerMindMap": null,
        "clusterMindMap": null,
        "contextMindMap": null,
        "flowMindMap": null
      },
      "settings": {
        "modelId": "gpt5",
        "themeId": "auto_detect",
        "language": "English"
      },
      "autoInitiated": true,
      "createdAt": "2026-02-18T12:00:00.000Z",
      "updatedAt": "2026-02-18T12:00:05.000Z"
    }
  },
  "transcript": [
    {
      "speaker": "Alice",
      "text": "Let's go over this week's priorities.",
      "start": 0.0,
      "end": 3.5
    }
  ]
}

Signature Verification

If you configure a webhook secret, each delivery includes HMAC-SHA256 signature headers:

HeaderDescription
X-HeyPocket-SignatureHMAC-SHA256 of {timestamp}.{payload} using your secret
X-HeyPocket-TimestampUnix timestamp (ms) of the delivery

Verify each request by computing HMAC-SHA256(secret, "{timestamp}.{body}") and comparing it to X-HeyPocket-Signature.

const crypto = require('crypto');

function verifySignature(secret, timestamp, body, signature) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(`${timestamp}.${body}`)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(signature)
  );
}

When Webhooks Fire

Webhooks fire for processing completion events and user-driven updates (recordings, transcripts, action items, and translations).

On this page