{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-gensail-analytics/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Webhook Credential Configuration","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"webhook-credential-configuration","__idx":0},"children":["Webhook Credential Configuration"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Configure how Gensail authenticates when sending webhooks to your server. This allows you to secure your webhook endpoint by requiring authentication on incoming requests from the pipeline."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"overview","__idx":1},"children":["Overview"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When you configure webhook credentials, the pipeline will include authentication headers when delivering webhooks to your endpoint. This is the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["outbound"]}," authentication (pipeline → your server), complementing the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/gensail-analytics/guides/webhook-authentication"},"children":["webhook signature verification"]}," which verifies the payload integrity."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"authentication-types","__idx":2},"children":["Authentication Types"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"none-default","__idx":3},"children":["None (Default)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["No authentication headers are added to webhook requests. Use this only for development or if your endpoint is secured by other means (e.g., IP allowlisting)."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"bearer-token","__idx":4},"children":["Bearer Token"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Sends an API key or token in the Authorization header:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"Authorization: Bearer <your-token>\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Use cases:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["API key authentication"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["JWT tokens"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["OAuth2 access tokens"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"hmac-signature","__idx":5},"children":["HMAC Signature"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Sends an HMAC-SHA256 signature of the request body:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"X-Signature: t=1734789600,v1=<hmac-signature>,key=<key-id>\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Use cases:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Stripe-style webhook verification"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Custom signature validation"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["High-security requirements"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"basic-auth","__idx":6},"children":["Basic Auth"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Sends Base64-encoded username:password credentials:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"Authorization: Basic <base64(username:password)>\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Use cases:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Legacy systems"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Simple authentication requirements"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Basic HTTP authentication"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"api-endpoints","__idx":7},"children":["API Endpoints"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"get-current-credential","__idx":8},"children":["Get Current Credential"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"http","header":{"controls":{"copy":{}}},"source":"GET /api/v1/config/{entity_type}/{entity_id}/webhook-credential\nAuthorization: Bearer <platform-token>\n","lang":"http"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Path Parameters:"]}]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Parameter"},"children":["Parameter"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["entity_type"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["One of: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["partner"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["organization"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["workspace"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["entity_id"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["uuid"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The entity's unique identifier"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Response (200 OK):"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"credential_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"credential_hint\": \"...x7f9\",\n  \"auth_type\": \"bearer\",\n  \"header_name\": \"Authorization\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Response (404 Not Found):"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"detail\": \"No webhook credential configured\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"create-or-update-credential","__idx":9},"children":["Create or Update Credential"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"http","header":{"controls":{"copy":{}}},"source":"POST /api/v1/config/{entity_type}/{entity_id}/webhook-credential\nAuthorization: Bearer <platform-token>\nContent-Type: application/json\n","lang":"http"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Request Body:"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"auth_type\": \"bearer\",\n  \"credential\": \"your-api-key-or-token\",\n  \"secret\": null,\n  \"header_name\": \"Authorization\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Request Fields:"]}]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Required"},"children":["Required"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["auth_type"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["One of: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["bearer"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["hmac"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["basic"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["credential"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["API key (bearer), key ID (hmac), or username (basic)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["secret"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Conditional"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["HMAC secret or password (required for ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["hmac"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["basic"]},")"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["header_name"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Custom header name (defaults: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Authorization"]}," for bearer/basic, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["X-Signature"]}," for hmac)"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Response (200 OK):"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"credential_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"credential_hint\": \"...x7f9\",\n  \"auth_type\": \"bearer\",\n  \"header_name\": \"Authorization\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"delete-credential","__idx":10},"children":["Delete Credential"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"http","header":{"controls":{"copy":{}}},"source":"DELETE /api/v1/config/{entity_type}/{entity_id}/webhook-credential\nAuthorization: Bearer <platform-token>\n","lang":"http"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Response (200 OK):"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"message\": \"Webhook credential deleted\",\n  \"auth_type\": \"none\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"configuration-examples","__idx":11},"children":["Configuration Examples"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"bearer-token-authentication","__idx":12},"children":["Bearer Token Authentication"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"curl -X POST \\\n  \"https://analytics-api.gensail.com/api/v1/config/partner/YOUR_PARTNER_ID/webhook-credential\" \\\n  -H \"Authorization: Bearer $PLATFORM_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"auth_type\": \"bearer\",\n    \"credential\": \"sk_live_abc123xyz789\"\n  }'\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your webhook endpoint will receive:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"http","header":{"controls":{"copy":{}}},"source":"POST /your-webhook-endpoint HTTP/1.1\nAuthorization: Bearer sk_live_abc123xyz789\nContent-Type: application/json\nX-Signature: t=1734789600,v1=...\n\n{\"job_id\": \"...\", \"status\": \"completed\", ...}\n","lang":"http"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"hmac-signature-authentication","__idx":13},"children":["HMAC Signature Authentication"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"curl -X POST \\\n  \"https://analytics-api.gensail.com/api/v1/config/partner/YOUR_PARTNER_ID/webhook-credential\" \\\n  -H \"Authorization: Bearer $PLATFORM_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"auth_type\": \"hmac\",\n    \"credential\": \"key_production_001\",\n    \"secret\": \"whsec_supersecretkey123\"\n  }'\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your webhook endpoint will receive:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"http","header":{"controls":{"copy":{}}},"source":"POST /your-webhook-endpoint HTTP/1.1\nX-Signature: t=1734789600,v1=a3b2c1d4e5f6...,key=key_production_001\nContent-Type: application/json\n\n{\"job_id\": \"...\", \"status\": \"completed\", ...}\n","lang":"http"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"basic-auth-1","__idx":14},"children":["Basic Auth"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"curl -X POST \\\n  \"https://analytics-api.gensail.com/api/v1/config/partner/YOUR_PARTNER_ID/webhook-credential\" \\\n  -H \"Authorization: Bearer $PLATFORM_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"auth_type\": \"basic\",\n    \"credential\": \"webhook_user\",\n    \"secret\": \"secure_password_123\"\n  }'\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your webhook endpoint will receive:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"http","header":{"controls":{"copy":{}}},"source":"POST /your-webhook-endpoint HTTP/1.1\nAuthorization: Basic d2ViaG9va191c2VyOnNlY3VyZV9wYXNzd29yZF8xMjM=\nContent-Type: application/json\n\n{\"job_id\": \"...\", \"status\": \"completed\", ...}\n","lang":"http"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"custom-header-name","__idx":15},"children":["Custom Header Name"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For endpoints that expect authentication in a non-standard header:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"curl -X POST \\\n  \"https://analytics-api.gensail.com/api/v1/config/partner/YOUR_PARTNER_ID/webhook-credential\" \\\n  -H \"Authorization: Bearer $PLATFORM_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"auth_type\": \"bearer\",\n    \"credential\": \"api_key_12345\",\n    \"header_name\": \"X-API-Key\"\n  }'\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your webhook endpoint will receive:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"http","header":{"controls":{"copy":{}}},"source":"POST /your-webhook-endpoint HTTP/1.1\nX-API-Key: api_key_12345\nContent-Type: application/json\n\n{\"job_id\": \"...\", \"status\": \"completed\", ...}\n","lang":"http"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"configuration-hierarchy","__idx":16},"children":["Configuration Hierarchy"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Webhook credentials follow the standard configuration hierarchy:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"Platform → Partner → Organization → Workspace\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Credentials configured at a lower level override those at higher levels. For example:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A partner-level credential applies to all organizations and workspaces"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["An organization can override with its own credential"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A workspace can have its own specific credential"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"security-considerations","__idx":17},"children":["Security Considerations"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"credential-storage","__idx":18},"children":["Credential Storage"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["All credentials are encrypted at rest using Fernet symmetric encryption. Only the last 4 characters are stored as a hint for identification purposes."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"credential-rotation","__idx":19},"children":["Credential Rotation"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To rotate credentials:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Generate a new credential on your server"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Update the credential via the API"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Verify webhooks are being received with the new credential"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Revoke the old credential on your server"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"best-practices","__idx":20},"children":["Best Practices"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Use HTTPS"]},": Always configure webhook URLs with HTTPS"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Rotate regularly"]},": Rotate credentials periodically (e.g., every 90 days)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Use strong secrets"]},": Generate cryptographically random secrets"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Monitor failures"]},": Watch for webhook delivery failures after credential changes"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Test first"]},": Configure in test environment before production"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"troubleshooting","__idx":21},"children":["Troubleshooting"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"401-unauthorized-on-webhook-delivery","__idx":22},"children":["\"401 Unauthorized\" on Webhook Delivery"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Verify credential is set"]},": Use GET to check current configuration"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Check credential value"]},": Ensure the credential matches what your server expects"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Verify header name"]},": Confirm your server checks the correct header"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Check encoding"]},": For basic auth, ensure proper Base64 handling"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"no-webhook-credential-configured","__idx":23},"children":["\"No webhook credential configured\""]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The entity doesn't have a credential set. Either:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Configure one using POST"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Or the entity inherits from a parent (check parent entity)"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"credential-not-taking-effect","__idx":24},"children":["Credential Not Taking Effect"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Wait a few seconds for cache invalidation"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Trigger a new webhook (e.g., reprocess a job)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Check webhook delivery logs for the auth header"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"related-documentation","__idx":25},"children":["Related Documentation"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/gensail-analytics/guides/webhook-authentication"},"children":["Webhook Authentication (Signature Verification)"]}," - Verify incoming webhook payloads"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"support","__idx":26},"children":["Support"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For questions about webhook credential configuration, contact ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"mailto:support@gensail.com"},"children":["support@gensail.com"]},"."]}]},"headings":[{"value":"Webhook Credential Configuration","id":"webhook-credential-configuration","depth":1},{"value":"Overview","id":"overview","depth":2},{"value":"Authentication Types","id":"authentication-types","depth":2},{"value":"None (Default)","id":"none-default","depth":3},{"value":"Bearer Token","id":"bearer-token","depth":3},{"value":"HMAC Signature","id":"hmac-signature","depth":3},{"value":"Basic Auth","id":"basic-auth","depth":3},{"value":"API Endpoints","id":"api-endpoints","depth":2},{"value":"Get Current Credential","id":"get-current-credential","depth":3},{"value":"Create or Update Credential","id":"create-or-update-credential","depth":3},{"value":"Delete Credential","id":"delete-credential","depth":3},{"value":"Configuration Examples","id":"configuration-examples","depth":2},{"value":"Bearer Token Authentication","id":"bearer-token-authentication","depth":3},{"value":"HMAC Signature Authentication","id":"hmac-signature-authentication","depth":3},{"value":"Basic Auth","id":"basic-auth-1","depth":3},{"value":"Custom Header Name","id":"custom-header-name","depth":3},{"value":"Configuration Hierarchy","id":"configuration-hierarchy","depth":2},{"value":"Security Considerations","id":"security-considerations","depth":2},{"value":"Credential Storage","id":"credential-storage","depth":3},{"value":"Credential Rotation","id":"credential-rotation","depth":3},{"value":"Best Practices","id":"best-practices","depth":3},{"value":"Troubleshooting","id":"troubleshooting","depth":2},{"value":"\"401 Unauthorized\" on Webhook Delivery","id":"401-unauthorized-on-webhook-delivery","depth":3},{"value":"\"No webhook credential configured\"","id":"no-webhook-credential-configured","depth":3},{"value":"Credential Not Taking Effect","id":"credential-not-taking-effect","depth":3},{"value":"Related Documentation","id":"related-documentation","depth":2},{"value":"Support","id":"support","depth":2}],"frontmatter":{"seo":{"title":"Webhook Credential Configuration"}},"lastModified":"2026-06-11T05:03:06.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/gensail-analytics/guides/webhook-credential-configuration","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}