Guide
Saving
| Save a YouTube video | The red Save YouTube button, or the save shortcut. It stores the current time. |
| Save any page | Save current tab, or right-click and choose Save to Better Watchlist. |
| Add a link or note | Paste or type in the box and press Enter. |
| Resume | Click the thumbnail or title. The video opens at the saved time. |
Saving the same video again updates its timestamp instead of adding a duplicate.
Shortcuts
| Option / Alt + O | Open or close the panel. Closing with a shortcut needs Chrome 141+. |
| Option / Alt + S | Save the current tab and open the panel. |
| Esc | Close the panel while it has focus. |
If a shortcut does nothing, open
chrome://extensions/shortcuts. Chrome doesn't always assign suggested keys, and it skips keys another extension already uses. Set them there by hand.Webhook
- Get a webhook URL from your tool (see the recipes).
- In the panel, open Webhook settings and paste the URL.
- Click Save and allow access to that host when Chrome asks.
- Click Send test to confirm it arrives.
With Send automatically on, every save is posted. Failed sends are retried every minute while the browser is open. Each item also has a Send / Resend button.
Payload
{
"source": "better-watchlist",
"event": "item.saved",
"text": "Video title @ 7:31\nhttps://www.youtube.com/watch?v=VIDEO_ID&t=451s",
"item": {
"id": "uuid",
"type": "youtube",
"url": "https://www.youtube.com/watch?v=VIDEO_ID&t=451s",
"title": "Video title",
"note": "",
"channel": "Channel name",
"videoId": "VIDEO_ID",
"seconds": 451,
"timestamp": "7:31",
"createdAt": "2026-11-14T02:40:08.014Z",
"updatedAt": "2026-11-14T02:40:08.014Z"
}
}
textis a ready-to-send message.item.typeisyoutube,linkornote. Notes put their content initem.note.- Re-saving a video sends the same
item.idwith a newerseconds. Use the id to de-duplicate. - Answer with a 2xx status, or the extension will retry.
AI prompt
Not sure how to wire it up? Paste this into ChatGPT, Claude or your agent. It's also in the panel under How to use it.
I use a browser extension called "Better Watchlist". Each time I save a YouTube video (with the timestamp where I stopped), a link, or a note, it sends an HTTP POST with a JSON body to a webhook URL that I configure.
Help me connect that webhook to something useful. First ask me which tool I use for the webhook (n8n, Zapier, Make, IFTTT, a custom server, or an AI agent) and where I want the items to go (WhatsApp, Telegram, email, SMS, Slack, Notion, a Google Sheet, etc.). Then give me clear, numbered, beginner-friendly steps, including:
1. How to create the webhook trigger and which URL to paste into the extension (POST, JSON, no authentication).
2. How to map the fields below into the next step.
3. How to test it using the extension's "Send test" button.
4. Common pitfalls (test vs production webhook URLs in n8n, the workflow needing to be active, delivery limits or approval needed for WhatsApp/SMS).
Notes about the data:
- "text" is a ready-to-send message; "item.*" are structured fields.
- item.type is "youtube", "link" or "note". For YouTube, item.seconds / item.timestamp is where I stopped, and item.url opens the video at that moment.
- The extension retries failed sends every minute, so the endpoint should return a 2xx status on success.
Example payload:
{
"source": "better-watchlist",
"event": "item.saved",
"text": "Test item from Better Watchlist @ 1:23\nhttps://www.youtube.com/watch?v=dQw4w9WgXcQ&t=83s",
"item": {
"id": "test",
"type": "youtube",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ&t=83s",
"title": "Test item from Better Watchlist",
"note": "",
"channel": "Test",
"videoId": "dQw4w9WgXcQ",
"seconds": 83,
"timestamp": "1:23",
"createdAt": "2026-11-14T02:43:09.459Z",
"updatedAt": "2026-11-14T02:43:09.459Z"
}
}
Troubleshooting
- Nothing arrives: in n8n use the Production URL with the workflow activated, or the Test URL while listening. In the panel, Send means the item is still unsent and Resend means it went out.
- Permission denied: click Save in Webhook settings again and allow access to the host.
- Inspect requests: use webhook.site with its unique URL (not the viewer page link).
- Service worker logs:
chrome://extensions→ service worker on the extension card.