Setup
Enter your endpoint’s URL. Each alert is sent as aPOST with Content-Type: application/json.
The URL must be https, and must be reachable from the public internet. An address on a private network is refused when you save.
Optionally generate a signing secret so your endpoint can verify a request came from Stockful (see Verifying requests). It is shown once, so copy it then; regenerate it if you lose it. A secret can only be generated on a saved alert.
Send test posts a sample alert on demand, so you can confirm your endpoint receives it before waiting for a real one.
Payload
message is the alert in structured form, the same content Slack renders as blocks and Discord as an embed. Read whichever parts you need: fields carries the label/value pairs, and a field with a url links its value. actions are the links a person would click.
text is the whole alert as one line. If you only want something to display or forward, use that and ignore the rest.
A summary sends one POST for the period rather than one per alert, with the entries in message.body and its own trigger type of digest.
Verifying requests
If the alert has a signing secret, each POST carries anX-Stockful-Signature header: the HMAC-SHA256 of the raw request body, hex-encoded, keyed with your secret.
Retries
A request that fails because your endpoint is busy or unreachable (a429, a 5xx, a timeout) is retried up to three times with a growing wait, and a Retry-After header is honoured.
Anything else is treated as a refusal rather than a hiccup: the alert is recorded as failed and the cooldown stops it being re-sent on every stock change. So an endpoint returning 400 because it dislikes the payload stops receiving that alert until you fix it, rather than being hammered.

