View Categories

21. External Integrations: Troubleshooting

Errors, Messages, and Common Fixes #

Issue / MessageWhy It HappensHow to Fix
401 UnauthorizedMissing or invalid tokenCheck token in Settings; ensure correct Bearer format
403 ForbiddenToken exists but lacks required scopeRegenerate token in Settings
400 Bad Request: missing externalEventIdRequired field omittedInclude externalEventId in payload
400 Bad Request: signature invalidHMAC verification failedCheck signature algorithm; use raw token as HMAC key
400 Bad Request: timestamp expiredRequest timestamp outside allowed windowSync your server clock; send request immediately after signing
400 Bad Request: nonce reusedSame nonce sent within replay windowUse a unique nonce per request (UUID or random string)
429 Too Many RequestsRate limit hitSlow down the event stream; implement backoff
workflowDispatchStatus: feature_disabledAutomation not in planUpgrade to Enterprise plan
workflowDispatchStatus: no_matching_workflowsNo active workflows matchCreate and activate a matching workflow
workflowDispatchStatus: rate_limitedAutomation rate limitWait for the rate limit window to reset

Diagnosis Flow: Event sent but nothing happened #

  1. Confirm the external system received a successful response.
  2. If the response says duplicate, send a genuinely new event.
  3. If the response says no_matching_workflows, activate or create a matching workflow.
  4. If the response says triggered, check workflow execution history for step-level failures.
  5. If WordPress is the source, verify Peikly -> Request Tracking before changing Application configuration.

Diagnosis Flow: WordPress request failed #

  1. Open Peikly -> Request Tracking.
  2. Read the HTTP code on the failed row.
  3. Match it to the next action:
    • 401 -> replace the token.
    • 403 -> confirm token scope/feature access and reconnect.
    • 400 signature invalid -> fix the plugin configuration or reconnect using a fresh token.
    • 429 -> reduce event volume and retry later.
    • 5xx or network failure -> the plugin retries on its own; if it keeps failing, check that the WordPress server can reach Application.
  4. Retry one event only after the underlying cause is fixed.

Best Practices #

  • Use a UUID v4 as the externalEventId — this guarantees uniqueness and deduplication.
  • Sign requests immediately before sending to avoid timestamp expiry.
  • Implement exponential backoff for 429 responses.
  • On specific store-event triggers (for example Cart Abandoned), put Add/Upsert Contact before any step that references contact data. Each event also fires External Integration Event Received, so avoid running both kinds of workflow for the same event (11.8).
  • Monitor the webhook monitoring widget on your Home Dashboard for event delivery stats.
Scroll to Top