GuideUltimate plan

Send data to another system

Use the Send HTTP Request step to call another system's URL from a workflow and use its response in later steps.

3 min readRole: Super Administrator or higherAutomationsUpdated October 25, 2026
Open in the app

The Send HTTP Request step calls a URL when a workflow reaches it. Use it to pass booking details to your own tools, a spreadsheet service or any system that accepts web requests. This step needs the Ultimate plan.

Before you start

  • You need the Super Administrator or Owner role.
  • Your salon needs the Ultimate plan.
  • You need the URL of the system you want to call, and any key it asks for.
  1. 1

    Step 1 of 5

    Add the step

    In the editor, click Add next step and choose Send HTTP Request. Click the new step to open its settings.

  2. 2

    Step 2 of 5

    Set the method and URL

    Pick a Method: GET, POST, PUT, PATCH or DELETE. Enter the URL, starting with https:// or http://. The URL can include variables, for example https://example.com/clients/{{ $event.data.object.client.id }}.

  3. 3

    Step 3 of 5

    Add a body

    For POST, PUT, PATCH and DELETE, set Content Type to application/json and write the Body as JSON. Click Insert Variable to add values.

    When a variable is the whole value of a JSON field, it keeps its type. For example, in {"appointment": "{{ $event.data.object }}"} the appointment is sent as an object, not as text. Formatting and spacing don't matter.

  4. 4

    Step 4 of 5

    Add headers if needed

    Click Show Advanced Options, then Add Header for each header, such as an authorization key. Enter a Header name and a Header value.

  5. 5

    Step 5 of 5

    Save

    Click Save in the dialog, then Save at the top of the editor.

    You will see:

    The step shows the method and the URL, for example Send HTTP POST Request to your URL.

Use the response

The next steps can read the response through $previousNode:

  • {{ $previousNode.response.status }}: the status code, like 200
  • {{ $previousNode.response.statusText }}: the status text, like OK
  • {{ $previousNode.response.body }}: the response body
  • {{ $previousNode.response.headers }}: the response headers

For example, add a Conditional Split that checks {{ $previousNode.response.status === 200 }}.

Limits

LimitValue
Time to respond5 seconds
Redirects followedUp to 5
Requests from your salon20 per minute, 200 per hour, 1,000 per day
Requests to the same host10 per minute, 100 per hour, 500 per day

Requests over a limit aren't sent. The step is skipped and the run continues.

Requests to private or internal network addresses, like localhost, are blocked.

When a run fails

An error status from the other system, like 404 or 500, doesn't fail the run. The response is saved and the next step runs. Check the status with a Conditional Split if it matters.

The run fails, and stops, when the request can't be made at all: the system doesn't respond within 5 seconds, the address can't be reached, the URL is invalid or it points to a blocked address. The run shows as Failed in History.

Common questions

No. The only supported content type for a body is application/json.