- Always list secrets in
sensitiveKeys— they are never sent to the browser - Use OAuth 2.0 with
auto_refresh: truewhen your provider issues refresh tokens - Store webhook signing secrets in credentials or
auth.configand reference viasecretKey - Document which values tenants must provide vs Karzoun-managed OAuth client IDs
- Use
renderStrategy: 'auto'so forms generate fromparametersJSON Schema - Use RPC sources (
x-source) for IDs users should not paste manually - Always set
x-fallback: 'input'when RPC sources may fail - Chain requests when later steps need IDs from earlier responses
- Use array
mappingon intermediate requests, objectmappingon the final response
- Match the exact event string your webhook extraction produces
- Write clear
labelanddescriptiontext for the Automation Builder - Use Lucide icon names for
icon
- Require HMAC verification in production (
hmac-sha256when supported) - Set
transactionIdto deduplicate provider retries - Respond with
response.statusCode: 200and a minimal body — Karzoun acknowledges quickly
- Use sync for bulk import and realtime handlers
- Align
sync.webhooks.handlerskeys withtriggers[].event - Use
joinCodesfor discount arrays andmapItemsfor line items - Use
customerExtraction.overrideswhen customer JSON differs per event
- Do not embed tenant production secrets in submitted JSON
- Document sandbox test accounts for reviewers
- Keep
docsUrlpointed at your integration guide for end users - Bump
versionon every approved change
Rate limiting (30 requests / 60 seconds per user per app) is enforced on action execution automatically.