Cold Leads

Connect your website form to Cold Leads: HTML, WordPress and Webflow

Who it is for
Site owners on plain HTML, WordPress or Webflow
The problem
Your site already has a contact form, but its submissions go to an inbox or a plugin's database, not to the place where you follow up. Rebuilding the form inside a CRM would change your design.
The solution
Keep the form and send its fields to Cold Leads' lead endpoint with a public website key: directly from the HTML, with the WPForms Webhooks addon, with a few lines of PHP for Contact Form 7, or as a custom form action in Webflow.
What you get
Each submission becomes a Cold Leads contact with name, company, phone, message, tags and stage, and the visitor lands on your thank-you page.

Addresses, IDs and results in the examples are illustrative. example.com is reserved for documentation, so a real check of these addresses returns invalid.

Before you start

  1. In Settings → API keys, create a website key (lk_…) and set its allowed website to your site's address, for example https://www.example.com.
  2. Choose the key's default stage, tags and list. Tags you send with the form are added to the key's tags.
  3. Note the field names the endpoint reads: email (required), name, company, phone, message, tag, stage (only lead is accepted), redirect and the honeypot website.
ResponseMeaning
303 redirectSaved; the visitor goes to the redirect address (it must be on the key's allowed website)
200 {"ok":true}Saved, no redirect requested
400 bad_emailThe email field is missing or not an e-mail address
401 bad_keyThe website key is missing, wrong or paused
402 contact_limitThe plan's contact limit is reached; only existing contacts are updated
429 rate_limited / daily_limitMore than 30 submissions a minute from one IP, or 500 a day for one key

Plain HTML

Point the form's action at the endpoint and put the key in a hidden field. Field names must match the list above.

contact.html
<form action="https://coldleads.app/api/hooks/lead" method="POST">
  <input type="hidden" name="_key" value="lk_your_website_key">
  <input type="hidden" name="redirect" value="https://www.example.com/thanks">
  <input type="hidden" name="tag" value="contact-page">
  <label>E-mail <input name="email" type="email" required></label>
  <label>Name <input name="name"></label>
  <label>Company <input name="company"></label>
  <label>Phone <input name="phone"></label>
  <label>Message <textarea name="message"></textarea></label>
  <input name="website" tabindex="-1" autocomplete="off" style="display:none">
  <button type="submit">Send</button>
</form>

WordPress: WPForms

WPForms sends webhooks with its Webhooks addon, which needs a WPForms Elite licence.

  1. Install and activate the Webhooks addon (WPForms → Addons).
  2. Open your form in the builder, go to Settings → Webhooks and turn on Enable Webhooks.
  3. Set Request URL to https://coldleads.app/api/hooks/lead, Request Method to POST and Request Format to JSON.
  4. Under Request Headers add x-api-key with your website key.
  5. Under Request Body map email, name, company, phone and message to your form fields, and add tag with a fixed value such as wpforms.
  6. Save and submit the form once with your own address; the contact appears in Cold Leads.

WordPress: Contact Form 7

Contact Form 7 has no webhook setting, but it runs a WordPress action after it sends its e-mail. Save this as wp-content/mu-plugins/coldleads-cf7.php (a must-use plugin) and adjust the field names if your form does not use the defaults your-email, your-name and your-message.

wp-content/mu-plugins/coldleads-cf7.php
<?php
// Sends every Contact Form 7 submission to Cold Leads.
add_action('wpcf7_mail_sent', function ($contact_form) {
    $submission = WPCF7_Submission::get_instance();
    if (!$submission) {
        return;
    }
    $data = $submission->get_posted_data();
    wp_remote_post('https://coldleads.app/api/hooks/lead', [
        'timeout' => 10,
        'headers' => [
            'Content-Type' => 'application/json',
            'x-api-key'    => 'lk_your_website_key',
        ],
        'body' => wp_json_encode([
            'email'   => $data['your-email'] ?? '',
            'name'    => $data['your-name'] ?? '',
            'message' => $data['your-message'] ?? '',
            'tag'     => 'cf7',
        ]),
    ]);
});

The visitor still sees Contact Form 7's own success message and you still get its e-mail; Cold Leads receives a copy of the submission.

Webflow

Webflow's own form webhook sends its fields nested under payload.data, which the lead endpoint does not read. Use a custom form action instead.

  1. In the Designer, select the Form Block and open its settings.
  2. Set Action to https://coldleads.app/api/hooks/lead?key=lk_your_website_key and Method to POST.
  3. Give each field the name the endpoint expects (email, name, company, phone, message).
  4. Add an Embed element inside the form with hidden inputs: <input type="hidden" name="redirect" value="https://www.example.com/thanks"> and <input type="hidden" name="tag" value="webflow">.
  5. Publish and test. With a custom action, Webflow does not show its own success message or store the submission in Webflow, so the redirect field is what brings the visitor back to your site.

FAQ

Do I need a captcha?

Not for Cold Leads. Keep the hidden website field empty and invisible; bots that fill it are ignored silently. Submissions are also limited per IP and per key.

Can I send the same form to Cold Leads and keep my plugin's e-mail?

Yes with WPForms webhooks and with the Contact Form 7 snippet: both keep the plugin's own e-mail and success message. A Webflow custom action replaces Webflow's own handling.

Why do visitors see JSON instead of my thank-you page?

The redirect address is missing or not on the key's allowed website. Set the allowed website in Settings → API keys and use a full https:// address on that site.

Where does the message text go?

Into the contact's notes, up to 2,000 characters.