Webhooks

Webhooks allow you to receive real-time notifications when certain events occur in your Readwise account. This enables you to integrate Readwise with external services and automate workflows based on your reading activity.

Overview

Readwise supports two types of webhook integrations:

  1. Zapier Webhooks - Automatically managed through Zapier's platform
  2. Custom Webhooks - Manually configured endpoints for direct integrations

Zapier Webhooks

Zapier webhooks are automatically created and managed when you set up a Zap that uses Readwise as a trigger. These webhooks are handled entirely through Zapier's interface and don't require manual configuration.

Features

  • Automatic Management: Created and deleted automatically by Zapier
  • Built-in Authentication: Uses Zapier's OAuth flow
  • No Manual Setup: Configuration happens through Zapier's interface
  • Reliable Delivery: Benefits from Zapier's retry mechanisms

Setting Up Zapier Integration

  1. Go to Zapier and create a new Zap
  2. Choose Readwise as your trigger app
  3. Select the event you want to trigger on
  4. Follow Zapier's authentication flow to connect your Readwise account
  5. Configure your action app and complete the Zap setup

Custom Webhooks

Custom webhooks allow you to send notifications directly to your own endpoints, giving you full control over how you handle Readwise events.

Features

  • Direct Integration: Send events directly to your endpoints
  • Custom Processing: Handle events exactly how you need
  • Webhook Signatures: Secure your endpoints with secret verification
  • Multiple Event Types: Subscribe to specific events that matter to you

Setting Up Custom Webhooks

  1. Navigate to Readwise Webhooks page
  2. Click "Create New Webhook"
  3. Fill in the required information:
    • Name: A descriptive name for your webhook
    • URL: The endpoint where you want to receive notifications
    • Event Types: Select which events you want to subscribe to
    • Description (optional): Additional notes about this webhook

Webhook Security

Each custom webhook includes a secret key for verifying the authenticity of requests:

  • Secret Generation: Automatically generated 32-character secret (sent in POST request data)
  • Signature Verification: Use the secret to verify webhook payloads
  • HTTPS Recommended: Always use HTTPS endpoints for security

Testing Webhooks

Before creating a webhook, you must test your endpoint:

  1. Enter your webhook URL
  2. Click "Test Endpoint"
  3. Ensure your endpoint returns a successful response
  4. Only after successful testing can you create the webhook

Available Event Types

Readwise supports the following webhook event types:

Readwise Events

readwise.highlight.created

Triggered when a new highlight is created in your Readwise library.

Reader Events

reader.any_document.created

Triggered when any new document is added to Reader (articles, PDFs, etc.).

reader.feed_document.created

Triggered when a new document is added from an RSS feed or newsletter subscription.

reader.non_feed_document.created

Triggered when a new document is manually added (not from feeds).

reader.document.tags_updated

Triggered when tags are added, removed, or modified on a document.

reader.document.finished

Triggered when a document is marked as finished/read.

reader.document.archived

Triggered when a document is archived.

reader.document.moved_to_later

Triggered when a document is moved to the "Later" queue.

reader.document.moved_to_inbox

Triggered when a document is moved back to the inbox.

reader.document.shortlisted

Triggered when a document is added to your shortlist/favorites.

Webhook Payload Format

All webhooks send JSON payloads with the structure differring based on the entity we are sending.

Document

{
  "id": "01kb5cap1wy21zp37bc2rjj",
  "url": "https://read.readwise.io/read/01kb5cap1wy21zp37bc2rjj",
  "title": "Our Black Friday sale ends soon! Subscribe now",
  "author": "The Verge",
  "source": null,
  "category": "email",
  "location": "feed",
  "tags": {
    "media": {
      "name": "Media",
      "type": "generated",
      "created": 1764338530643
    },
  },
  "site_name": "The Verge",
  "word_count": 174,
  "reading_time": "1 min",
  "created_at": "2025-11-28T14:02:02.213618+00:00",
  "updated_at": "2025-11-28T14:02:10.648147+00:00",
  "published_date": "2025-11-28",
  "summary": "The Verge is offering a limited-time Black Friday discount on its subscription. For $4 a month or 40% off a yearly plan, you get ad-free podcasts, premium newsletters, and exclusive Q&As. The deal ends soon, so act fast.",
  "image_url": null,
  "content": null,
  "source_url": "mailto:reader-forwarded-email/90049694f7dbf92219bf18a1f6a",
  "notes": "",
  "parent_id": null,
  "reading_progress": 0,
  "first_opened_at": null,
  "last_opened_at": null,
  "saved_at": "2025-11-28T14:02:02.173000+00:00",
  "last_moved_at": "2025-11-28T14:02:02.173000+00:00",
  "event_type": "reader.any_document.created",
  "secret": "lphrx901Iq3kzswFSth5ST"
}

Highlight

{
  "id": 954480,
  "text": "Most Amazing Highlight Ever",
  "note": "",
  "location": null,
  "location_type": "page",
  "highlighted_at": "2025-11-27T18:55:56.719036Z",
  "url": null,
  "color": "",
  "updated": "2025-11-27T18:55:56.867572Z",
  "book_id": 8237,
  "tags": [],
  "event_type": "readwise.highlight.created",
  "secret": "8mFG0SsX8Xe199sRG2A3"
}

Have a suggestion?

We're pretty familiar with our product, so we occasionally fall victim to the Curse of Knowledge. If any part of this documentation confuses you or seems incomplete, please let us know!