Send Contact Form 7 leads to Juiced
Contact Form 7 has no webhook of its own. The free CF7 to Webhook plugin adds one that posts JSON with custom headers and lets you rename each field's key, so leads go straight to your Juiced source.
Route: direct, through a plugin. CF7 to Webhook posts each submission as JSON to https://usejuiced.com/api/v1/leads with an Authorization: Bearer header.
You need Contact Form 7, the free CF7 to Webhook plugin from wordpress.org, and a Juiced source with its bearer token.
Contact Form 7's default field names use hyphens, such as your-email. Add a webhook: option to each form tag, for example webhook:email, so the keys match Juiced exactly.
Why a plugin
Contact Form 7 sends mail but has no built-in webhook. Of the webhook plugins on wordpress.org, CF7 to Webhook by Mário Valney (formerly CF7 to Zapier) has 30,000+ active installs and the clearest documentation: it sends JSON, supports custom headers, and can rename keys per field (CF7 to Webhook on wordpress.org, source on GitHub). If you would rather not add a plugin, send submissions through Zapier or Make instead.
Before you start
- WordPress: Contact Form 7 active and permission to install plugins. The plugin needs WordPress 4.7 or later and PHP 7.4 or later, and saving its settings needs the
wpcf7_edit_contact_formcapability. - Juiced: a source, its bearer token, and the field names from the source's View API Spec page.
Step by step
-
Create a Juiced source and token
In Juiced, go to Ingest > Sources > New source, turn on Test mode, and click Create source. On the Authentication tab click New bearer token and copy it (it is shown once). Open Overview > More actions (⋯) > View API Spec for the endpoint and field names. See setting up a source.
-
Install CF7 to Webhook
In WordPress, go to Plugins > Add New, search for "CF7 to Webhook", then install and activate it. A Webhook tab appears in each contact form's editor (older versions and the plugin's readme call it the Zapier tab).
-
Rename form tags to Juiced keys
On the form's Form tab, add a
webhook:option to each tag you send, with the Juiced key after the colon, for example[email* your-email webhook:email]. The plugin then sends that value underemail. Add hidden tags for UTMs, such as[hidden utm_source default:get], which readsutm_sourcefrom the page URL. -
Turn on Send to Webhook and add the URL
Open the Webhook tab. Next to Integrate, tick Send to Webhook, and in Webhook URL enter
https://usejuiced.com/api/v1/leads. Leave Send CF7 mail as usually ticked if you still want the notification email. -
Add the Authorization and Accept headers
Under Advanced settings, open Headers and enter one header per line, separated by a colon:
Authorization: Bearer YOUR_TOKEN Accept: application/jsonLeave Method on POST and Body empty. The Body panel then shows a preview headed "We will send your form data as JSON:" with your keys.
-
Send a test lead and check Incoming logs
Click Save, then submit the live form with zip
00001. In Juiced, open Entries > Incoming logs, set the Test mode filter to Test only, open the log and click Post to see the request as received, any Validation errors and the response. When it shows Accepted, turn test mode off on the source.
Field mapping
Each row is a form tag with its webhook: option. You can also name the tag with the Juiced key directly, such as [text* zip], since underscores are allowed in tag names.
| Contact Form 7 tag | Juiced key | Notes |
|---|---|---|
[text* first-name webhook:first_name] | first_name | |
[text* last-name webhook:last_name] | last_name | |
[email* your-email webhook:email] | email | |
[tel* your-phone webhook:phone] | phone | Check the format your buyers expect. |
[text* your-zip webhook:zip] | zip | Always required. Use a text tag so leading zeros are kept. |
[radio project webhook:project_type "Roof" "Siding"] | project_type | Add the field on the source's Fields tab first. List of Values fields accept only listed values. Checkbox tags send a list, so use radio buttons for single answers. |
[hidden utm_source default:get] | utm_source | Add matching fields in Juiced, or they are not saved. |
[hidden trusted_form_cert_url] | trusted_form_cert_url | See TrustedForm and Jornaya below. |
Special mail tags can be added under Special Mail Tags, with a second word as the key, for example [_url page_url].
Example request
POST https://usejuiced.com/api/v1/leads
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json; charset=UTF-8
Accept: application/json
{
"first_name": "Dana",
"last_name": "Lee",
"email": "dana@example.com",
"phone": "5555550123",
"zip": "00001",
"utm_source": "facebook"
}
A 201 response with data.id, data.status and data.price means Juiced received the lead; data.status is accepted, rejected or duplicate (leads endpoint).
TrustedForm and Jornaya
CF7 to Webhook only sends values from the form's own tags, so the certificate needs a tag to land in. Add [hidden trusted_form_cert_url], load the TrustedForm script on the page, and set the script's field variable to trusted_form_cert_url so it writes the certificate URL into that tag (TrustedForm Certify). For Jornaya, Verisk's WordPress guide fills a hidden input with the id leadid_token (Jornaya for WordPress), so use [hidden jornaya_leadid id:leadid_token]. Neither ActiveProspect nor the plugin documents this setup for Contact Form 7, so confirm on your first test that the value reaches the post inspector. Add both fields in Juiced, marked Deliverable if buyers need them. More in TrustedForm and Jornaya.
Troubleshooting
- Every key has a hyphen and Juiced rejects them. Add
webhook:options with underscore keys, or rename the tags. Juiced field titles cannot contain hyphens or spaces. - 401 Unauthorized (
unauthenticated). Check the Headers box: one header per line, a colon after the name,Bearerand one space before the token. The plugin warns that stray spaces and colons break the request. A token also stops working 24 hours after you create a new one. - Errors you never see. Enter your email in Notification to get an email when Juiced answers with a code outside Success Codes (by default 200, 201, 202, 204 and 205), such as a
422. - A custom body breaks the JSON. If you fill in Body, you must add your own quotes around text values. Leave it empty unless you need it.
- 201 with
data.statusrejected. Juiced received the lead but did not sell it. Open the log in Incoming logs to see why. More fixes in webhook troubleshooting.
Frequently asked
Does Contact Form 7 have a webhook?
Not built in. Contact Form 7 sends email only, so you add a webhook with a plugin such as CF7 to Webhook, or connect the form through Zapier or Make.
Can Contact Form 7 send leads to a lead distribution platform?
Yes, with a webhook plugin. CF7 to Webhook posts each submission as JSON with custom headers, so it can send leads straight to the Juiced leads endpoint, where they are routed to buyers by bids, caps and criteria.
How do I change the field names Contact Form 7 sends?
With CF7 to Webhook, add a webhook option to the form tag, for example [email* your-email webhook:email]. The value is then sent under the key email.
How do I add an Authorization header to a Contact Form 7 webhook?
In CF7 to Webhook, open the form’s Webhook tab, then Advanced settings and Headers, and enter Authorization: Bearer followed by your token on its own line.
How do I pass a TrustedForm certificate from Contact Form 7?
Add a hidden tag named trusted_form_cert_url, load the TrustedForm script with its field variable set to that name, and add a matching trusted_form_cert_url field in Juiced.
Route every Contact Form 7 lead to the right buyer
Once a submission reaches Juiced, it is routed to buyers by their bids, caps and criteria, and leads no buyer takes can go to your marketplace.
Scale your lead business, without limits
Juiced puts you in full control of your leads, routing, and revenue, so you can automate, optimize, and grow without chaos.
