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
- Open Settings, then Integrations, then WordPress forms .
- 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.
- 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 |
|
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
- Save the form and submit it on the site with your own email.
- In Conduyt, open Contacts: the contact is there with the tag and source, and the message on its timeline.
- 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.