tr Skip to content

Send a Webhook From WordPress: Webhook Outgoing Explained

FlowMattic Webhook Outgoing: a WooCommerce order is posted as URL-encoded data to a warehouse system's webhook URL.

To send a webhook from WordPress in the middle of a workflow, FlowMattic has the Webhook Outgoing module. It posts the data you choose to any webhook URL, as JSON, multipart form data or URL-encoded fields, and hands the receiver’s reply to the next step.

It is the quickest way to notify a chat channel, feed a legacy system, or pass a record to another site, with no code. This guide covers its fields, how it shapes the request body, what it does with the response, and six workflows where it fits.

What is Webhook Outgoing?

Webhook Outgoing is a built-in action app in the FlowMattic workflow builder with one action, Submit Data to Webhook. It always uses the POST method. Add it after any trigger or step, and every run sends one request to the URL you set.

It is deliberately simple: a URL, a body format and a list of parameters. When an endpoint needs custom headers, authentication or a method other than POST, use the API module instead.

How to send a webhook from WordPress with FlowMattic

  1. Add a step, choose Webhook Outgoing and the Submit Data to Webhook action.
  2. Paste the receiver’s address into Webhook URL. The field accepts dynamic tags, so the URL can come from earlier data.
  3. Pick a Body Format: JSON, Form Data (multipart/form-data) or URL Encoded (x-www-form-urlencoded).
  4. Under Data Parameters, add one key and value per row, mapping values from the trigger or earlier steps. Click Add More for each extra row.
  5. Leave Need Response? on Yes to wait for the reply, or choose No to send and move on.
  6. Test the step and check the reply in the step’s output.
FlowMattic workflow builder showing the Webhook Outgoing Submit Data to Webhook action with Body Format set to URL Encoded.
Submit Data to Webhook with the Webhook URL, Body Format, Data Parameters and Need Response? fields.

Options and what they do

FieldWhat it does
Webhook URLThe address that receives the POST request. It must be reachable from your server.
Body FormatJSON (default) sends a JSON body. Form Data sends multipart/form-data. URL Encoded sends x-www-form-urlencoded fields. With the two form formats, nested values are sent as bracket keys such as sender[email].
Data ParametersThe key and value pairs that make up the body.
Need Response?Yes (default) waits for the reply and returns it as step output. No sends the data without waiting, and the step reports that no response is available.

How the body is built

  • Bracket keys become nested JSON. A key typed as customer[email] is sent as {"customer": {"email": "…"}}, so you can build nested objects without writing JSON.
  • Numbers in bracket keys are typed. A bracket-key value like 42 is sent as a number. Values such as 01234 stay strings, and flat keys are always sent as the text you typed.
  • JSON values are kept as JSON. If a mapped value is itself a JSON array or object, it is decoded and sent as structured data rather than as a quoted string.
  • Iterator items can be spread. Name a key iterator_item and map the Iterator’s current item, and that item’s keys and values are added to the body individually.

What comes back

With Need Response? set to Yes, the receiver’s reply becomes the step’s output, ready to map into later steps. An empty reply is reported as “Request has no response data”, and a plain-text reply such as ok is wrapped so it still shows as data. Any 2xx answer (200, 201, 202 or 204) counts as delivered. Any other status fails the step and says why: the HTTP code with the receiver’s reply, or the connection error when the URL cannot be reached. A 404 adds a reminder to use a publicly accessible URL. Task History shows the parameters that were sent with each run under Request Payload.

Use cases

Push WooCommerce orders to a legacy warehouse system

An older fulfilment system only accepts form posts. Webhook Outgoing with URL Encoded sends each new order’s ID, items and shipping address in the format it expects, and the reply is kept in Task History.

Flow: WooCommerce new order → Submit Data to Webhook (URL Encoded)

Post alerts to a chat channel’s incoming webhook

A support team creates an incoming webhook in their chat app and sends a text parameter as JSON whenever a high-priority form arrives. Chat apps that answer with a plain ok show that reply as data.

Flow: Form submission → Filter (priority is high) → Submit Data to Webhook (JSON)

Hand a record to another site you manage

An agency runs a central reporting site. Each client site posts new leads to a webhook trigger on the central site, which adds them to one table.

Flow: New lead on client site → Submit Data to Webhook → Central site’s webhook trigger → WP Tables

Send nested sign-up data to a product API

A SaaS onboarding endpoint expects {"user": {"email", "plan"}}. Keys typed as user[email] and user[plan] produce exactly that body from a WordPress registration.

Flow: New user registered → Submit Data to Webhook (JSON, bracket keys)

Send each line item separately

An inventory service wants one call per product. An Iterator walks the order’s line items, and the iterator_item key spreads each item’s fields into its own request.

Flow: Order paid → Iterator (line items) → Submit Data to Webhook

Fire-and-forget activity pings

Marketing tracks course completions in an analytics tool that does not need to answer. With Need Response? set to No, the step sends the event and the workflow continues without waiting.

Flow: Lesson completed → Submit Data to Webhook (Need Response: No) → Next step

Tips and gotchas

  • Any 2xx counts as success. Receivers that answer 201, 202 or 204 pass. Anything else fails the step; turn on the step’s Ignore Errors if the reply does not matter.
  • No automatic retries. A failed delivery is not sent again on its own. Fix the receiver, then re-execute the run from Task History.
  • No custom headers. The request carries Accept: application/json, a FlowMattic user agent and the content type for the chosen format. Endpoints that need an API key header or OAuth belong in the API module with a Connect.
  • POST only. For GET, PUT, PATCH or DELETE, use the API module.
  • “No” means no data. With Need Response? set to No there is nothing to map from the reply, so do not build later steps on it.
  • Check the payload in Task History. Each run shows the parameters that were sent under Request Payload, which makes a mismatch with the receiver’s expectations easy to spot.

Related features

  • API / HTTP Request: any method, headers and authentication when a plain POST is not enough.
  • Webhook trigger: the receiving side, for data coming into WordPress.
  • Webhooks overview: incoming, outgoing and response modules together.

FAQ

How do I send a webhook from WordPress without code?

Add a Webhook Outgoing step with the Submit Data to Webhook action to any FlowMattic workflow. Enter the receiver’s URL, choose a body format and map your data into key and value rows; every run posts it.

Can I add headers or authentication to an outgoing webhook?

Not in Webhook Outgoing, which sends a fixed set of headers. Use the API module when the receiver needs an authorization header, an API key or a different HTTP method.

Which body formats can I send?

JSON, which is the default, multipart/form-data and x-www-form-urlencoded. With the two form formats, nested values are flattened into bracket keys such as sender[email].

Why does my outgoing webhook step fail?

Webhook Outgoing treats any 2xx answer, such as 200, 201, 202 or 204, as delivered. Any other status fails the step, and the step output shows the HTTP code with the receiver’s reply, or the connection error if the URL could not be reached. Fix the cause and re-execute the run from Task History.

Webhook Outgoing ships with every FlowMattic plan, next to nearly 900 integrations. Try FlowMattic and send your first webhook from WordPress in a few minutes.

More from the blog