Answer first

One WPForms webhook sends every entry to a private Conduyt intake address.

Create the address in Conduyt, add a webhook in the form builder with a JSON body that maps your fields, and each entry becomes a routed Conduyt contact. No API key on the site.

Needs
WPForms Webhooks addon (Elite license)
Setup time
About 10 minutes
Direction
WordPress to Conduyt, one way

00 / Check

Before you start

  • The Webhooks addon installed and active. WPForms makes it available on the Elite license level (WPForms docs).
  • An email or phone field on the form. Conduyt matches and creates contacts by email or phone; a submission with neither is rejected.
  • A Conduyt login with Settings access and active billing (the trial counts).

01 / Conduyt

Step 1: create the intake address in Conduyt

  1. Open Settings, then Integrations, then WordPress forms .
  2. Click Create intake address, name it after the form and the site, pick a tag, a source (default “wordpress”) and, optionally, the rep under Assign to.
  3. Click Create, then Copy URL. The address looks like https://conduyt.app/api/v1/webhooks/inbound/forms/wpf_….

02 / WPForms

Step 2: add the webhook

Open the form in the builder, then Settings, then Webhooks, and turn Enable Webhooks on.

Setting Value
Request URL The Conduyt intake address
Request Method POST
Request Format JSON
Secret Leave empty. The intake address is already private to your account.
Request Headers None needed
Request Body The key and value rows in the next step

03 / Fields

Step 3: map the fields

In Request Body, add one row per field. The key is the name Conduyt reads; the value is the form field you pick from the dropdown.

Key Value (your form field)
first_name Name, First
last_name Name, Last
email Email
phone Phone
company Company, if you have one
message Your message field
utm_source, utm_campaign Hidden fields filled from the URL, if you use them
page_url Entry: Page URL

If your form uses a single “Name” field, map it to name; Conduyt splits it into first and last. Any extra key (for example service) is saved to a contact custom field when the key matches exactly one of your account’s contact custom fields; otherwise it stays visible on the timeline entry.

04 / Test

Step 4: send a test

  1. Save the form and submit it on the site with your own email.
  2. In Conduyt, open Contacts: the contact is there with the tag and source, and the message on its timeline.
  3. In Settings, Integrations, WordPress forms, the intake row shows a received count of 1.

05 / Fix

If something does not arrive

  • No contact. The entry had neither email nor phone, or a key was mistyped. Keys are not case-sensitive.
  • The address stopped working. It was revoked in Conduyt. Create a new one and update the webhook.
  • Duplicate expected but not created. That is matching: the same email or phone updates the existing contact.
  • Outgoing requests blocked. A security plugin or host firewall is blocking WordPress from calling outside addresses. Allow conduyt.app.
  • Other answers from Conduyt. 402 means billing is inactive on the account; 403 means the contact limit is reached; 422 means a required contact custom field is missing from the submission; 503 “Busy, retry shortly” is temporary and plugins that retry will get through.

06 / FAQ

Frequently asked questions

Does WPForms Lite work?

No. Webhooks are an Elite feature. Conduyt’s own embeddable forms are a free alternative if you do not want to upgrade.

Can I keep my notifications and other addons?

Yes. The webhook runs alongside them.

What about Gravity Forms or Elementor?

Same intake address: Gravity Forms guide, Elementor guide. Overview on the WordPress forms integration page.