Push any engagement event into Stairoids via POST /v1/signals. Requires a signal type and at least one of account.domain or contact.email.
Use this endpoint to push any engagement event into Stairoids from your tools or automation platform. A signal represents a meaningful interaction — a page visit, form submission, email open, or any custom event you define — and immediately contributes to account and contact scoring within your workspace.
The signal type. Can be any non-empty string. Use consistent, descriptive values across your integration — for example page_visit, email_open, or form_submit.
The name of the originating tool or system that generated this signal, e.g. activecampaign, my-website, or zapier. Helps you filter and attribute signals by integration.
An arbitrary set of key-value pairs you want to attach to this signal. Values can be strings, numbers, or booleans. For example: { "page": "/pricing", "duration_seconds": 45 }.
An ISO 8601 timestamp representing when the event actually occurred, e.g. 2024-06-15T14:23:00Z. If omitted, Stairoids records the current server time.
If account.domain or contact.email matches an existing record in your workspace, the signal is attributed to that record. Otherwise, Stairoids automatically creates a new account or contact.
Returned when the Authorization header is missing or your API key is invalid.
{ "error": { "code": "unauthorized", "message": "Invalid or missing API key.", "request_id": "req_99qqrr00sstt" }}
Returned when required fields are missing or have invalid values — for example, if neither account nor contact is provided, or if type is an empty string.
{ "error": { "code": "validation_error", "message": "At least one of account.domain or contact.email is required.", "request_id": "req_aabbcc112233" }}