evernote-webhooks-events
Set up webhook endpoints to receive notifications of note changes and sync events from Evernote.
Install
mkdir -p .claude/skills/evernote-webhooks-events && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/6024" && unzip -o skill.zip -d .claude/skills/evernote-webhooks-events && rm skill.zipInstalls to .claude/skills/evernote-webhooks-events
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Implement Evernote webhook notifications and sync events.Key capabilities
- →Create Express endpoints for webhook notifications
- →Manage sync state using USN tracking
- →Fetch changes using getFilteredSyncChunk
- →Route sync events to typed handlers
- →Implement polling fallback for non-webhook environments
How it works
The skill uses webhooks to receive change notifications and then utilizes the sync API to fetch only the modified data since the last synchronization.
Inputs & outputs
When to use evernote-webhooks-events
- →Implement webhook endpoint
- →Handle sync events
- →Real-time note updates
About this skill
Evernote Webhooks & Events
Overview
Implement Evernote webhook notifications for real-time change detection. Evernote webhooks notify your endpoint that changes occurred, but you must use the sync API to retrieve the actual changed data.
Prerequisites
- Evernote API key with webhook permissions
- HTTPS endpoint accessible from the internet
- Understanding of Evernote sync API
Instructions
Step 1: Webhook Endpoint
Create an Express endpoint that receives webhook POST requests. Evernote sends userId, guid (notebook GUID), and reason (create, update, notebook) as query parameters. Respond with HTTP 200 immediately, then process asynchronously.
app.post('/evernote/webhook', (req, res) => {
const { userId, guid, reason } = req.query;
res.sendStatus(200); // Respond immediately
// Process asynchronously
processWebhook({ userId, notebookGuid: guid, reason })
.catch(err => console.error('Webhook processing failed:', err));
});
Step 2: Webhook Reasons
Handle three webhook reasons: create (new note created), update (note modified), and notebook (notebook-level change). Each triggers a sync of the affected notebook.
Step 3: Sync State Management
Store the last sync USN per user. On webhook receipt, call getSyncState() to get the current server USN, then getFilteredSyncChunk() to fetch only the changes since your last sync.
const syncState = await noteStore.getSyncState();
const chunk = await noteStore.getFilteredSyncChunk(
lastUSN,
100, // maxEntries
new Evernote.NoteStore.SyncChunkFilter({
includeNotes: true,
includeNotebooks: true,
includeTags: true
})
);
Step 4: Event Processing and Handlers
Route sync chunk entries to typed handlers: onNoteCreated, onNoteUpdated, onNoteDeleted, onNotebookChanged. Implement idempotency by tracking processed USNs to handle duplicate webhook deliveries.
Step 5: Polling Fallback
Implement a polling fallback for environments where webhooks are unavailable. Poll getSyncState() on a timer (e.g., every 5 minutes) and sync when updateCount changes.
For the full webhook server, sync manager, event handlers, and polling implementations, see Implementation Guide.
Output
- Express webhook endpoint with async processing
- Sync state manager with USN tracking
- Event router for create, update, and delete operations
- Idempotent event processing (handles duplicate deliveries)
- Polling fallback for non-webhook environments
Error Handling
| Issue | Cause | Solution |
|---|---|---|
| Webhook not received | URL not reachable from Evernote servers | Verify HTTPS endpoint is publicly accessible |
| Duplicate webhooks | Network retries by Evernote | Track processed USNs for idempotency |
| Missing changes | Race condition between webhook and sync | Re-sync with small delay after webhook |
| Sync timeout | Large change set in chunk | Reduce maxEntries per chunk, paginate |
Resources
- Webhooks Overview
- Synchronization
- Developer Portal
Next Steps
For performance optimization, see evernote-performance-tuning.
Examples
Real-time note sync: Receive webhook on note update, fetch the sync chunk, update local database, and notify connected clients via WebSocket.
Polling-based sync: For environments behind firewalls, poll getSyncState() every 5 minutes and process any changes via the same handler pipeline used by webhooks.
When not to use it
- →When ignoring idempotency for duplicate deliveries
Prerequisites
Limitations
- →Requires publicly accessible HTTPS endpoint
How it compares
This enables real-time synchronization compared to manual or full-state polling.
Compared to similar skills
evernote-webhooks-events side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| evernote-webhooks-events (this skill) | 1 | 27d | Review | Intermediate |
| telegram-bot-builder | 106 | 6mo | Review | Intermediate |
| n8n-expression-syntax | 6 | 4mo | No flags | Beginner |
| reddit-api | 3 | 4mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by jeremylongshore
View all by jeremylongshore →You might also like
telegram-bot-builder
davila7
Expert in building Telegram bots that solve real problems - from simple automation to complex AI-powered bots. Covers bot architecture, the Telegram Bot API, user experience, monetization strategies, and scaling bots to thousands of users. Use when: telegram bot, bot api, telegram automation, chat bot telegram, tg bot.
n8n-expression-syntax
czlonkowski
Validate n8n expression syntax and fix common errors. Use when writing n8n expressions, using {{}} syntax, accessing $json/$node variables, troubleshooting expression errors, or working with webhook data in workflows.
reddit-api
alinaqi
Reddit API with PRAW (Python) and Snoowrap (Node.js)
mcporter
openclaw
Use the mcporter CLI to list, configure, auth, and call MCP servers/tools directly (HTTP or stdio), including ad-hoc servers, config edits, and CLI/type generation.
calcom-api
calcom
Interact with the Cal.com API v2 to manage scheduling, bookings, event types, availability, and calendars. Use this skill when building integrations that need to create or manage bookings, check availability, configure event types, or sync calendars with Cal.com's scheduling infrastructure.
instantly-webhooks-events
jeremylongshore
Implement Instantly webhook signature validation and event handling. Use when setting up webhook endpoints, implementing signature verification, or handling Instantly event notifications securely. Trigger with phrases like "instantly webhook", "instantly events", "instantly webhook signature", "handle instantly events", "instantly notifications".