KDPika Licensing Sign inStart free
API v1
Show all languages
Browse documentation

Choose a page in the navigation drawer.

KDPika Licensing · API v1 Intermediate

Troubleshoot webhook notifications

Diagnose routing gaps, HMAC failures, stale requests, duplicates, delivery timeouts and exhausted retries using verified sender behavior.

On this page
Updated 2026-10-18 UTCDownload Markdown

Find the failed boundary before retrying a notification or changing a license.

What you will learn

  • Separate routing, authentication, persistence and business-processing failures.
  • Recognize documented gaps rather than relying on misleading retry assumptions.
  • Collect minimal evidence for support without disclosing credentials.

Prerequisites

Check the boundaries in order

  1. Confirm the business operation actually emits the expected event.
  2. Check organization, environment, product, endpoint status and subscribed event.
  3. Match the event ID in Delivery history to your receiver inbox.
  4. Verify transport/HTTP status and attempt count.
  5. Check authentication against the exact raw request bytes.
  6. Check the durable inbox/work transaction.
  7. Reconcile current API state before repeating a business action.

Expected result: you identify the first failed boundary. Do not repeat create or renew just because an alert email or HTTP acknowledgement is missing.

Routing and missing notifications

SymptomVerified cause or boundaryFix
No history row for an ordinary eventEndpoint did not match active status, environment, product or subscriptionCheck setup before repeating the business operation
No notification after developer device releaseThat developer Devices action does not emit license.deactivatedRead current device/license state and use an audit workflow
No notification for every validationlicense.validated is not an eventUse API logs for diagnosis, not a nonexistent event subscription
Events are missing across a disabled periodOrdinary publications do not target disabled endpointsReconcile your own records; enabling is not backfill
Send test queues but does not sendDisabled endpoint, deferred processing or delivery failureEnable, inspect status/count/next attempt and test again
No reminder after another renewalReminder marker uses license and day count, not expiration revisionSchedule billing reminders in your backend and reconcile expiry
No expiration notification immediately after API refusalThe persistent expired transition is performed by maintenanceEnforce the API/signed validity decision without waiting for notification

Signature and envelope failures

SymptomVerified cause or boundaryFix
HMAC mismatchSecret or raw bytes differCapture raw bytes before middleware and use the correct endpoint secret
Signature fails after RotateNew attempts immediately use the replacement secretCoordinate receiver configuration and run Send test
Old event passes freshnessIts delivery attempt was freshly signedCheck attempt timestamp, not event.created_at
Future/stale signature refusedReceiver clock or request freshness is outside policyCorrect clock synchronization; regenerate only synthetic local requests
Header ID/name differs from bodyUntrusted or malformed envelope metadataRefuse or quarantine; do not route by the header alone
Sandbox notification reaches Live handlerReceiver URL/configuration overlaps environmentsPin expected signed environment and separate endpoint secrets
Same signature appears in two requestsPossible replay inside toleranceVerify and deduplicate the authenticated event ID durably

Transport and processing failures

SymptomVerified cause or boundaryFix
301 or 302 in historySender does not follow redirectsConfigure the final HTTPS URL
No HTTP status, timeout errorConnection or total request timeoutCheck TLS/DNS and acknowledge after fast durable persistence
Receiver returns 429The sender still follows its fixed retry delaysReduce work per request; do not depend on Retry-After being honored
HTTP 200 but no durable workHandler acknowledged before commit or lost its in-memory queueUse a durable transactional inbox before sending 2xx
Repeated emails or renewalsAuthentication was mistaken for business deduplicationUse a separate durable order/invoice effect key
Same event ID, different authenticated bodyConflicting reuse of an IDQuarantine and investigate; do not apply a second action
Older state overwrites newer stateDelivery order is not guaranteedReconcile current scoped API state before updating your view
Key email contains a maskWebhook payloads never contain the complete license keyUse your secured issuance outbox; do not reconstruct the key

Retry and history limitations

SymptomVerified cause or boundaryFix
Retry does nothing at attempt 6Count is not reset; exhausted delivery is still guardedReconcile affected resource and contact support for investigation
Delivered notification cannot replaySender skips Delivered rowsTest locally with a synthetic fixture; do not repeat a real business effect
Next attempt is later than the listed delayDue work waits for maintenance processingInspect next attempt and receiver health; the delay is a minimum
An old Delivered row is absentLatest-250 view or 30-day delivered cleanupUse your own minimal durable event/business ledger
Response body is truncatedOnly a capped excerpt is retainedLog a safe correlation ID, never credentials or complete keys

Prepare a support request

  1. Record the environment, affected endpoint host and approximate UTC time.
  2. Include the authenticated event ID and dashboard attempt count/status.
  3. Describe the expected event and the operation that triggered it.
  4. Include only safe HTTP/error codes and your own correlation ID.
  5. Contact hi@kdpika.com without attaching keys, signatures, complete payloads or customer payment details.

Expected result: support can identify the delivery without obtaining a secret. Do not ask a buyer for card details or paste a developer API key into a ticket.

Expected result

You can distinguish a missed notification from an uncertain licensing operation and avoid compounding a failure with a duplicate mutation.

Common mistakes

  • Repeatedly pressing Retry after the attempt budget is exhausted.
  • Repeating renew to compensate for a missing webhook.
  • Assuming Delivered proves the receiver's business task finished.
  • Treating a stale status in an event as the current authoritative license state.

Security notes

Keep signature rejection responses generic. Never turn off authentication to make a callback succeed. A correct support/reconciliation workflow does not require changing the licensing API contract or sharing private keys.

Troubleshooting

If none of the symptom tables identifies the issue, reproduce it with the local synthetic inbox. Compare raw-byte verification, durable receipt and business processing independently before escalating.

Next steps

Run local signature and replay tests, then retest only the eligible failed delivery after fixing its cause.

Was this page helpful?

Choose an answer

Do not include personal data, license keys or credentials. Retained for up to 30 days. This is not a support inbox.

Search documentation

Arrow keys to move, Enter to open, Escape to close. Search stays in your browser.

Cookie settings