Skip to main content

Send

Not yet checked on the product

This chapter was written from the product's source code and has not yet been checked by a person on a running Cogneris. If what you see on screen differs, the screen is right — please tell your Cogneris contact so the chapter can be corrected.

A Send phase delivers the result of the whole process to your system: it posts a signed JSON call to the webhook endpoint you set. It is normally the last phase of a route.

PaletteNodes › Send
OutputsOne output
Content statusFrom source; not observed (workflow-fe f88c5c1, workflow-be 6703373, 2026-10-22)

When to use it​

  • At the end of a route, to hand the extracted data and the outcome of each document to a CRM, an ERP or any system that can receive an HTTPS call.
  • During setup, pointed at a Test URL, to see exactly what your system will receive before you connect it.

A Send phase may receive links from several phases — for example from both outputs of a Conditional, one of them through a Manual Review. It runs once, from the route the process actually took.

What happens in a run​

1. The process result is closed​

When the process reaches Send, every phase before it on its route has finished. Send then:

  • marks every document that did not fail as completed;
  • copies each document's extracted fields to the document management area as tags, and marks the process as completed there (both best effort: a failure here never stops the delivery);
  • builds the process result, a JSON object with:
KeyContent
runIdThe process (run)
workflowId, versionThe workflow and the published version the process ran on
sourceWhere the process was started from
processThe process data supplied when it was started, if any
summarytotal, completed and failed document counts
documentsOne entry per document: documentId, name, status, result, error, ecmDocumentId and downloadUrl
upstreamThe output of the phase that led into Send

downloadUrl is filled only for documents the process produced (for example a generated contract) and is valid for 24 hours. Documents the customer uploaded carry only ecmDocumentId, which does not expire.

2. The webhook calls​

With an Endpoint URL (HTTPS) set, Send makes one call per document the process was started with (a process without documents makes a single call with empty document fields). Each call is:

  • Method: the HTTP method chosen in the panel — POST, PUT, PATCH or DELETE, POST when none was chosen.
  • Body (JSON):
KeyContent
workflowIdThe workflow
workflowNameThe workflow's name
documentIdAn identifier of the document in this process: doc_ followed by 24 hexadecimal characters, stable for the same process and file name
documentNameThe file name
eventTypeAlways workflow.completed
processedAtUTC time of the call, as 2026-10-22T14:03:09Z
dataThe whole process result described above — the same in every call of the process
  • Headers:
HeaderContent
Content-Typeapplication/json; charset=utf-8
X-Xtrakt-Run-IdThe process (run)
X-Xtrakt-Workflow-IdThe workflow
X-Xtrakt-Signaturesha256= followed by the lowercase hexadecimal HMAC-SHA256 of the raw request body, keyed with the Signing secret. Sent only when the phase has a secret.

Verifying the signature. Compute HMAC-SHA256 over the body bytes exactly as received (UTF-8), using the 64 characters of the signing secret as text — do not decode them from hexadecimal — and compare the lowercase hex result with what follows sha256=.

Before every call the service checks the endpoint again: it must be HTTPS on port 443, contain no user name or password, resolve in DNS, and not resolve to a private or internal address. An endpoint that fails this check is not called.

3. The answer and the retries​

Your system answersResult
Any 2xxDelivered. The next document is sent.
5xx, 408 or 429, a timeout, or a connection errorRetried.
Any other status (400, 401, 403, 404…)Final failure — the run fails.
The endpoint is blocked by the check aboveFinal failure.

On a retryable failure the phase is run again at once, up to 3 more times (4 attempts). A new attempt picks up where the last one stopped: documents this phase already delivered to the endpoint are not sent again, and the phase output lists them under alreadyDelivered. Retrying the phase after it completed sends nothing again either. When the attempts are exhausted the run fails.

A document can still reach your system twice if the call succeeded on your side but the answer never arrived (for example a timeout after you processed it), so keep accepting the same documentId twice. A correction round re-runs the phase as a new step and delivers again.

Every attempt for every document is recorded in Webhook Deliveries (Administration › Integrations & Deliveries) with the endpoint, the payload sent, the HTTP status, the response time, the outcome and an Attempt number that grows per document. From there Resend webhook sends the stored payload again, with the same HTTP method, as a new attempt. It is signed with the signing secret of the published version that is live now — a secret regenerated in a draft that was not published yet is not used, because your system has not been given it. If the live version no longer has that endpoint, the secret of the version the process ran on is used. A resent payload is the original one, so its downloadUrl links may have expired. See Connect your systems.

4. What it stores​

The phase output is the process result plus a delivery entry: channel (custom_webhook), event, the Integration name, the endpoint, whether it was a test URL, and the HTTP status of each document's call.

When every document failed​

If no document of the process succeeded and exactly one Send phase can still be reached, the process goes straight to that Send, which delivers the result with every document marked failed. The run then ends as failed. In this case documents are not marked completed and the document management area is not updated.

Without an endpoint​

With Endpoint URL (HTTPS) empty, the service:

  • e-mails the process result to Recipient email, when it is filled. The subject is Subject, or Cogneris workflow result when Subject is empty. A failed e-mail is retried like a webhook, and an e-mail that went out is not sent again by a retry;
  • otherwise publishes the event extract.processed through the Cogneris vision service, with the run id, the workflow id and version, and results — the per-document results of the phases before Send (found even when a Manual Review wrapped them). Where that event goes is decided by that service.

Configuration​

Select the phase to open Phase Configuration. Its header shows the phase type as SEND.

FieldWhat it doesRequiredFormat / valuesDefaultValidation messages
DescriptionThe name shown on the nodeNoTextSend—
SubjectThe e-mail subject. Used only when the phase sends an e-mail (see Without an endpoint).NoTextEmpty—
Recipient emailWhere the process result is e-mailed when Endpoint URL (HTTPS) is empty. Previous step output will be sent as the email body.NoOne e-mail addressEmptyEnter a valid e-mail address. · This step has an endpoint URL, so the e-mail would never be sent. Keep only one of them. (in the panel) · Send phase e-mail recipient must be a valid e-mail address. · Send phase has both a webhook endpoint and an e-mail recipient; only the endpoint would be used. Keep one. (on publish)
Integration nameA name for the receiving system. Stored in the phase output; not sent in the call.NoTextEmpty—
Endpoint URL (HTTPS)Where the calls go. Setting it is what makes the phase post to a webhook.For webhook deliveryAn absolute https:// URL on port 443, or a Test URLEmptyEnter a valid HTTPS URL. (in the panel) · Send phase webhook endpoint must be a valid HTTPS URL. · Send phase webhook endpoint must use the standard HTTPS port 443. (on publish)
HTTP methodThe method of every call to the endpoint, and of a resend.NoPOST, PUT, PATCH, DELETEPOSTSend phase HTTP method '…' is not supported. Use POST, PUT, PATCH or DELETE. (on publish, for a value set outside the editor)
Description (optional)A note on what the integration does. Not used by the service.NoTextEmpty—
Signing secretThe key of X-Xtrakt-Signature. Shown, read-only, to administrators only and only while an endpoint is set.—64 lowercase hexadecimal charactersCreated when an administrator sets the endpoint; otherwise created when the workflow is published—

Notes on the signing secret:

  • Clearing Endpoint URL (HTTPS) as an administrator also deletes the secret.
  • A save by a profile that cannot see the secret keeps the stored one.
  • The secret travels with the published version: a new or regenerated secret is used by processes started after the next publish. Processes already running keep the secret of their version.

Buttons and actions​

ButtonWhat happensReversible?
Test endpointSends one POST whose body is an empty JSON object, with the header X-Xtrakt-Webhook-Probe: true to the endpoint, after the same address checks as a real call. Any HTTP answer, even an error status, counts as reachable: Endpoint reachable. The test sent a real POST with the header X-Xtrakt-Webhook-Probe: true — make your receiver ignore requests that carry it. Otherwise Endpoint not reachable: …. Disabled while the URL is empty or invalid. The probe is always a POST, whatever HTTP method says: have your system answer it and discard it when it carries X-Xtrakt-Webhook-Probe: true.Nothing to undo
Copy (signing secret)Copies the secret; the button reads Copied. Administrators only.—
RegenerateCreates a new secret at once. The previous one stops being valid for processes started after you publish. Administrators only.No — the old secret cannot be restored
Generate test URLCreates a temporary Cogneris address that records every call made to it. Needs a saved workflow (Save the workflow first to generate a test URL.). One test URL per phase: generating again replaces the previous one.Revoke
Copy (test URL)Copies the test URL; the button reads Copied.—
Use as endpointPuts the test URL in Endpoint URL (HTTPS).Type your endpoint back
View requestsOpens Received requests: Time, Method, Status, Size of each call, refreshed every 10 seconds; select one for its Headers and Payload. Refresh reloads, Back returns to the list. A large payload is marked truncated.—
RevokeEnds the test URL. Calls to it then fail.No — generate a new one

A test URL expires after 7 days (Expires in … day(s). History is kept for 7 days.). Calls to it are recorded in-process with the same headers and signature a real call carries, and also appear in Webhook Deliveries. Replace it with your real endpoint before going live.

Common problems​

MessageCauseWhat to do
Enter a valid HTTPS URL.The endpoint is not an absolute https:// addressCorrect the URL.
Send phase webhook endpoint must be a valid HTTPS URL.Publishing refused: the saved endpoint is not a valid HTTPS URLCorrect the URL, save and publish again.
Endpoint not reachable: https_required / port_not_allowed / userinfo_not_allowedThe address is not HTTPS, not on port 443, or carries a user name or passwordUse a plain https://host/path address on port 443.
Endpoint not reachable: dns_resolution_failedThe host name does not resolveCheck the host name.
Endpoint not reachable: blocked_private_addressThe host resolves to a private or internal addressUse a publicly reachable address.
Endpoint not reachable: timeout / unreachableNo HTTP answer (connection, TLS or time-out)Check that your system is up and accepts HTTPS from the internet.
Endpoint not reachable: test_hook_inactiveThe test URL was revoked or expiredGenerate test URL again.
Test URL operation failed. Try again.Generating, loading or revoking the test URL failedTry again.
Could not load requests.Received requests could not be loadedRefresh.
No requests received yet. Run the workflow to see deliveries here.Nothing has called the test URL yetStart a process on the published workflow.
Run error HTTP … with a 4xx statusYour system refused the call; not retriedFix the receiving side, then Resend webhook from Webhook Deliveries.
Run error Webhook endpoint blocked: …The endpoint failed the address checks at delivery time (for example its host now resolves to a private address)Fix the endpoint, publish, and resend.
Run error Webhook POST timed out. or Webhook POST call failed: … (the method named is the one configured) after the retriesYour system did not answer in 4 attemptsCheck your system, then Resend webhook.
Run error Test hook not found (HTTP 404). Generate a new test URL. / Test hook revoked or expired (HTTP 410). Generate a new test URL.The published endpoint is a test URL that no longer existsPut your real endpoint, or a new test URL, and publish.
Your system rejects the signatureWrong or outdated secret, a body changed before checking, or the secret decoded from hexCopy the current secret, hash the raw body, use the secret as text.
Signing secret is not shownYour profile is not administrator, or no endpoint is setAsk your company administrator.

Last reviewed 2026-10-22 · Version 1.0.0 · Owner: product-documentation