Skip to content

Post Submission Actions

Voxel's Create Post form shows a success screen when someone submits a listing, and that's where it stops. This function lets you do something afterwards: send them somewhere else, message them, or push the submission to another system.

Actions are configured on the Create Post (VX) widget itself, so two forms for the same post type can behave differently.

Overview

Key Features

  • Redirect after submission, with dynamic tags
  • Send a Voxel direct message
  • POST the submission to a webhook, optionally signed
  • Each action can run on creation only, on edits only, or every time
  • Multiple actions per form
  • Never blocks or delays a submission

Setup Instructions

Step 1: Enable the Function

  1. Navigate to Voxel Toolkit → Functions
  2. Find Post Submission Actions and toggle it on
  3. Click Save Changes

Step 2: Configure the Widget

  1. Edit the page containing your Create Post (VX) widget in Elementor
  2. Select the widget and open Content → Submission Actions (VT)
  3. Turn on Enable submission actions
  4. Add an action and choose its type

Actions

Redirect

Sends the visitor somewhere once their submission is saved.

SettingDescription
Redirect toThe destination URL. Dynamic tags work here

Use @post(permalink) to send someone straight to the listing they just created, or a fixed URL for a thank-you page.

If more than one redirect action applies, the last one configured wins — only one redirect can happen.

Send Voxel message

Sends a direct message through Voxel's own messaging system, so it appears in the normal inbox.

SettingDescription
Message fromSite admin, or the person submitting
Message toThe person submitting, the site admin, or a specific user
User IDWhich user, when sending to a specific user
MessageThe message body. Dynamic tags work here

Because it uses Voxel's own pipeline, user blocks, content sanitisation, inbox state and notification throttling all behave exactly as they would for a message sent by hand. A message from someone to themselves is skipped.

Send webhook

POSTs the submission to another system as JSON — useful for Zapier, Make, n8n, or your own endpoint.

SettingDescription
Webhook URLWhere to send the request
Shared secretOptional. Signs the request so the receiver can verify it

The payload contains the event type, and the post's ID, title, status, post type, permalink, author and every field value.

json
{
  "event": "post_created",
  "post": {
    "id": 1234,
    "title": "The Balanced Table",
    "status": "publish",
    "post_type": "places",
    "permalink": "https://example.com/places/the-balanced-table/",
    "author": 12,
    "fields": { "phone": "+15551234567" }
  },
  "site": "https://example.com/",
  "sent_at": "2026-08-05T22:00:00+00:00"
}

When a shared secret is set, the request carries an X-VT-Signature header — an HMAC-SHA256 of the request body, prefixed with sha256=. Recomputing it on your end with the same secret proves the request came from your site and wasn't altered.

Private addresses are refused

Webhooks go through WordPress's safe HTTP client, which refuses loopback and private network addresses. A webhook URL cannot be used to make your server probe its own network.

Run When

Every action has a Run when setting:

OptionRuns
A post is first createdOnly on the first submission
An existing post is editedOnly when editing something that already exists
Every submissionBoth

Configuration Is Read From the Widget

The browser tells the site that a submission finished; it does not tell it what to do. The action configuration is read back from the Elementor widget on the server.

That matters for security: a crafted request cannot nominate its own webhook URL, message recipient or redirect target. The site also confirms the requester is someone who could have made that submission.

Actions Cannot Break a Submission

Everything here runs after the post has been saved. No action can reject, delay or fail a submission — if a webhook is unreachable or a message can't be delivered, the post is still saved and the visitor still sees the success screen.

Troubleshooting

Nothing happens after submitting. Check the function is enabled and Enable submission actions is on for that specific widget. Actions are per widget, not per post type.

The redirect doesn't fire. Check the Run when setting — an action set to "first created" won't run when editing.

The message wasn't sent. A message from someone to themselves is skipped. Check the sender and recipient aren't the same user — this happens when the post author is also the site admin.

The webhook didn't arrive. Private and loopback addresses are refused, as are URLs whose host doesn't resolve. Test with a publicly reachable endpoint.

Built by Code Wattz.