About webhooks
Integrations
This guide will walk you through connecting Kinde webhooks to Zapier, allowing you to automate workflows based on events that occur in your Kinde account. When events like user creation or authentication happen in Kinde, they can trigger automated actions in Zapier.
Log in to your Zapier account and select Create > Zaps
In the Trigger step, search for Webhooks and select it.
In the Event dropdown, select Catch Raw Hook, then select Continue
Catch Raw Hook is required for Kinde webhooks because Kinde sends webhook data as a JWT token string. The raw hook will capture the complete webhook payload including the JWT token.
In the Test tab, Zapier will generate a unique webhook URL for your Zap. The URL will look like: https://hooks.zapier.com/hooks/catch/1234567/abcdefg/
Copy this URL - you’ll need it in the next step.
Keep this Zap open - you’ll return to it after configuring the webhook in Kinde.
In your Kinde dashboard, go to Settings > Webhooks
Select Add webhook
Give your webhook a descriptive name (e.g., “Kinde Zapier Google Sheets”)
Enter a description explaining what this webhook is for (e.g., “When user is created”)
In the Endpoint URL field, paste the Zapier webhook URL you copied in Step 1
Select Add event to select which events you want to trigger this webhook
For this example, select user.created to trigger the webhook when a new user is created
Common events you might want to monitor:
user.created - When a new user signs upuser.updated - When user information is updateduser.authenticated - When a user logs inorganization.created - When a new organization is createdFor a complete list of available events, see Add and manage webhooks
Select Save to create the webhook
Since Kinde sends webhook data as a JWT token, you’ll need to decode it to access the user information. Zapier’s Code action allows you to run JavaScript to decode the JWT.
Select Code by Zapier and from the Action event dropdown, select Run JavaScript as the action. Select Continue
In the Input Data field, add a field called jwt and map it to the Raw Body from the webhook trigger
In the Code field, paste the following JavaScript to decode the JWT, replacing the existing code:
// Function to decode a JWT tokenfunction decodeJWT(token) { const parts = token.split('.'); if (parts.length !== 3) { throw new Error('Invalid JWT token'); }
const payload = parts[1].replace(/-/g, '+').replace(/_/g, '/'); const padded = payload + '='.repeat((4 - (payload.length % 4)) % 4); const decoded = JSON.parse(Buffer.from(padded, 'base64').toString('utf-8')); return decoded;}
// Get the JWT from input dataconst jwt = inputData.jwt;
// Decode the JWTconst decoded = decodeJWT(jwt);
// Extract user data from the decoded payloadconst userData = decoded.data.user || {};
// Return the decoded datareturn { firstName: userData.first_name || '', lastName: userData.last_name || '', email: userData.email || '', fullName: `${userData.first_name || ''} ${userData.last_name || ''}`.trim(), userId: userData.id || '', rawData: decoded};Select Continue, then Test step to verify the JWT is decoded correctly.
You should see the decoded user data including first name, last name, and email
Select Publish
The JWT payload structure from Kinde includes a data object containing the user information. The Code action extracts fields like first_name, last_name, and email from this data object. See the webhook payload example for more details.
Now that you have decoded the JWT, you can use the extracted data in your Zap action. For this example, we’ll add the user to a Google Sheet.
In Google Sheets, create a new spreadsheet (e.g. “Kinde Zapier”) with the following columns:
In Zapier, edit your Zap and select the plus icon + to add another step after the Code action
Search for Google Sheets and select it
From the Action event dropdown select Create Spreadsheet Row as the action
Connect your Google account and allow permissions to access your Google Sheets. Select Continue
Select the drive, spreadsheet, and worksheet where you want to add the user data
Map the fields by selecting the plus icon + next to the fields
First Name field from the Code step outputLast Name field from the Code step outputEmail field from the Code step outputSelect Continue
Select Test step to see the Google Sheet populated with the user data
Select Publish to activate your Zap
Now that you’ve successfully connected Kinde webhooks to Zapier, you can extend this integration to automate many other workflows: