canva-webhooks-events

Featured

Implement Canva Connect API webhook handling with JWK signature verification. Use when setting up webhook endpoints, handling Canva event notifications, or implementing real-time design collaboration features. Trigger with phrases like "canva webhook", "canva events", "canva notifications", "handle canva events", "canva JWK".

AI & Automation 2,359 stars 334 forks Updated today MIT

Install

View on GitHub

Quality Score: 99/100

Stars 20%
100
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
50
License 10%
100
Description 5%
100

Skill Content

# Canva Webhooks & Events ## Overview Receive real-time notifications from Canva via webhooks when users comment on designs, request folder access, share designs, or interact with your integration. Canva sends signed JWT payloads verified with public JWK keys. ## Prerequisites - Canva integration with `collaboration:event` scope enabled - HTTPS endpoint accessible from the internet - JWK verification library (`jose` recommended) - Webhook URL configured in your integration settings ## Setup ### Step 1: Configure Webhooks in Canva 1. Go to your integration settings at [canva.dev](https://www.canva.dev) 2. Under **Notifications**, enable **collaboration:event** 3. Enter your webhook URL: `https://your-app.com/webhooks/canva` 4. Save the configuration ### Step 2: Implement JWK Signature Verification ```typescript // src/canva/webhooks.ts import { createRemoteJWKSet, jwtVerify, JWTPayload } from 'jose'; // Canva publishes public keys at this endpoint // GET https://api.canva.com/rest/v1/connect/keys const CANVA_JWKS = createRemoteJWKSet( new URL('https://api.canva.com/rest/v1/connect/keys') ); interface CanvaWebhookPayload extends JWTPayload { notification_type: string; notification: Record<string, any>; timestamp: string; user_id: string; team_id: string; } export async function verifyCanvaWebhook( rawBody: string ): Promise<CanvaWebhookPayload | null> { try { const { payload } = await jwtVerify(rawBody, CANVA_JWKS, { issuer: 'canva', })...

Details

Author
jeremylongshore
Repository
jeremylongshore/claude-code-plugins-plus-skills
Created
8 months ago
Last Updated
today
Language
Python
License
MIT

Integrates with

Similar Skills

Semantically similar based on skill content — not just same category