success, failed, retrying) and any associated error messages. Most issues can be diagnosed in under a minute by filtering the log by the relevant signal ID, account domain, or time window.
Signals Not Arriving
If signals from a connected source are not appearing in Stairoids, work through the following checks in order.Verify the integration is enabled
Verify the integration is enabled
Check that the API key is valid and has write scope
Check that the API key is valid and has write scope
403 Forbidden error when you attempt to create a signal, and the signal will not be recorded.To verify: go to Settings → API Keys and confirm the key you’re using shows Read-Write in the Scope column. If it shows Read-only, generate a new Read-Write key and update your integration. See Rotating Keys for a zero-downtime procedure.Confirm the source tool is sending to the correct URL
Confirm the source tool is sending to the correct URL
Check the Activity Log for errors
Check the Activity Log for errors
failed status and expand them to see the full error message. Common errors include:invalid_payload: The signal body is missing a required field. The error message will specify which field. The most common culprits are a missingtype,account.domain, orcontact.email.domain_excluded: The domain in the signal matches an entry in your Excluded Domains list under Settings → Account Matching. Remove the domain from the exclusion list if this is unintended.rate_limit_exceeded: Your API key has hit its per-minute request limit. Implement backoff and retry logic in your integration.
Outgoing Automation Not Firing
If a configured automation isn’t triggering when you expect it to, step through these checks before raising a support ticket.Verify trigger conditions using Simulate
Verify trigger conditions using Simulate
pageview instead of page_view), referencing a property key with the wrong casing, or setting a score threshold higher than any account in your workspace currently achieves.Check that the destination integration is connected and authorized
Check that the destination integration is connected and authorized
Ensure the automation is enabled
Ensure the automation is enabled
Review execution history in the Activity Log
Review execution history in the Activity Log
failed entry with a detailed error from the downstream API (e.g., a missing required CRM field, an invalid Slack channel ID, or a payload validation error). Fix the underlying issue and use the Retry button to re-run the failed execution against the same signal.API Errors
401 Unauthorized — missing or invalid API key
401 Unauthorized — missing or invalid API key
422 Unprocessable Entity — invalid request payload
422 Unprocessable Entity — invalid request payload
422 response means the API received your request but the payload failed validation. The response body contains a details array that lists every validation error and the specific field that caused it.- Missing
typefield on a signal creation request. - Missing both
account.domainandcontact.email— at least one is required to attribute a signal to an account or contact. - Providing an
account.domainvalue that includes a protocol prefix (e.g.,https://acme.cominstead ofacme.com). - Sending a
created_attimestamp in a format other than ISO 8601 UTC.
429 Too Many Requests — rate limit exceeded
429 Too Many Requests — rate limit exceeded
429 response means your API key has exceeded its allowed request rate. The response includes two headers to help you back off correctly:Retry-After: The number of seconds to wait before making another request.X-RateLimit-Reset: The Unix timestamp at which your rate limit window resets.
429 responses gracefully. If you’re consistently hitting rate limits at your current plan’s ceiling, consider upgrading your plan or batching signal submissions to reduce request volume. See the FAQ — Rate Limits for per-plan limits.500 Internal Server Error — Stairoids service issue
500 Internal Server Error — Stairoids service issue
500 response indicates an unexpected error on the Stairoids side. These are rare and typically transient. Wait 30 seconds and retry the request. If the error persists for more than a few minutes, check the Stairoids Status Page for any ongoing incidents.When contacting support about a 500 error, include the request_id from the response body — this is the fastest way for the support team to locate and investigate the failed request.Signal Score Not Changing
Scores update asynchronously — allow up to 60 seconds
Scores update asynchronously — allow up to 60 seconds
201 Created response), but the account or contact score is updated in a background job that typically completes within 30–60 seconds.If you query an account’s score immediately after ingesting a signal, you may see the old value. Wait a minute and query again. If the score still hasn’t changed after 60 seconds, proceed to the next check.Verify the signal type has a non-zero weight
Verify the signal type has a non-zero weight
0, the signal is ingested and stored but adds nothing to the score.Update the weight to a non-zero value and click Save. New signals of that type will contribute to scores immediately. Previously ingested signals of the same type will have their contribution recalculated on the next scoring cycle (typically within a few minutes).Confirm the signal was attributed to the correct account
Confirm the signal was attributed to the correct account
account.id and account.domain fields that Stairoids resolved.If the signal was attributed to a different account (e.g., due to domain normalization creating a different match), review your domain normalization rules under Settings → Account Matching.Check whether score decay is masking new signal contributions
Check whether score decay is masking new signal contributions
Contacting Support
If you’ve worked through the relevant sections above and the issue persists, reach out to the Stairoids support team:- Email: support@stairoids.com
- In-app chat: Click the ? icon in the bottom-right corner of the dashboard
- Enterprise Slack: Available for Enterprise plan customers via your dedicated channel
- Workspace ID — found in Settings → General
- Signal ID or Automation ID — visible in the Activity Log
request_idfrom any relevant API response body- The exact error message you’re seeing
- What you expected to happen and what actually happened
- Timestamps of the affected events (in UTC)