← Back to blog

Why instant lead response starts with your intake URL

Leads contacted within five minutes are nine times more likely to convert than leads contacted after an hour. That stat only matters if your leads are actually reaching ResponsePro in the first place. This guide covers every way to connect your website, forms, and third-party tools so that every lead submission triggers an instant SMS response — automatically, without you touching anything.

Every ResponsePro client gets a unique intake URL in their welcome email. It looks like this:

Your intake URL format
https://intake.responsepro.app/your-client-id

Any HTTP POST to that URL with a phone number triggers the full ResponsePro sequence: instant SMS to the lead, alert to you, and a four-step follow-up sequence if they do not reply.

Security: keep your intake URL private

Your intake URL is specific to your account. Anyone who has it can submit leads to your number. For most use cases — contact forms on your own website — this is fine. The URL is not a secret key, but you should not share it publicly or post it in a forum. If you ever suspect it has been abused, reply to your welcome email and we will rotate it same day.

For higher-security setups (e.g. a public API integration), consider sending leads from your server rather than directly from a browser form. That way the URL never appears in page source.

The payload format

ResponsePro accepts JSON or URL-encoded form data. The only required field is phone. Everything else is optional but recommended — it makes your lead SMS more personal and your follow-up messages more relevant.

JSON payload
{
  "name":    "John Smith",
  "phone":   "5405551234",
  "email":   "john@example.com",
  "message": "I need a roof quote for my house in Roanoke",
  "source":  "website"
}

Phone numbers are normalized automatically — you can send 540-555-1234, (540) 555-1234, or 5405551234 and they all work. International numbers are not supported; US numbers only.

The source field is optional but useful for tracking where leads come from. Common values: website, google_lsa, facebook, angi, thumbtack. Any unrecognized value is stored as-is.

Option 1: HTML contact form with vanilla JavaScript

This is the simplest setup. Add this to any page on your site. Replace YOUR-CLIENT-ID with the ID from your welcome email.

TCPA / A2P 10DLC requirement Before you collect a phone number and send an automated SMS to it, you need documented opt-in consent on the same page where the number is captured. That means an unchecked-by-default checkbox next to disclosure language (who is sending, message frequency, giving consent is not a condition of purchase, STOP/HELP keywords, msg & data rates, and links to your privacy & SMS consent pages). The example below includes this. Do not remove the checkbox — your carrier campaign is registered assuming this language is present, and any audit of your consent_form_url will look for it.
HTML + JavaScript
<form id="contactForm">
  <input type="text"  name="name"    placeholder="Your name"         required>
  <input type="tel"   name="phone"   placeholder="(540) 555-1234"    required>
  <input type="email" name="email"   placeholder="Email (optional)">
  <textarea           name="message" placeholder="What do you need?"></textarea>

  <!-- TCPA consent — required. Do not pre-check. -->
  <label style="display:flex;align-items:flex-start;gap:10px;font-size:0.9rem;">
    <input type="checkbox" id="smsConsent" name="sms_consent" required
           style="width:18px;height:18px;flex-shrink:0;margin-top:2px;">
    <span>
      By providing your phone number you consent to receive automated SMS
      messages from <strong>Your Business Name</strong>. Message frequency may vary.
      Msg &amp; data rates may apply. Giving consent is not a condition of purchase.
      Reply STOP to opt out at any time.
      Reply HELP for help. View our
      <a href="/privacy.html">Privacy Policy</a> and
      <a href="/sms-consent.html">SMS Consent page</a>.
    </span>
  </label>

  <button type="submit">Send Message</button>
  <p id="formStatus"></p>
</form>

<script>
document.getElementById('contactForm').addEventListener('submit', async function (e) {
  e.preventDefault();
  const status = document.getElementById('formStatus');

  // TCPA gate — do not POST to the intake URL unless the user has both
  // provided a phone AND checked the consent box on THIS submission.
  const phone   = this.phone.value.trim();
  const consent = document.getElementById('smsConsent').checked;
  if (!phone || !consent) {
    status.textContent = 'Please provide your phone number and consent to SMS before submitting.';
    return;
  }

  status.textContent = 'Sending...';

  const data = Object.fromEntries(new FormData(this));
  data.source = 'website';

  try {
    await fetch('https://intake.responsepro.app/YOUR-CLIENT-ID', {
      method:  'POST',
      headers: { 'Content-Type': 'application/json' },
      body:    JSON.stringify(data),
    });
    status.textContent = "Thanks! We'll be in touch shortly.";
    this.reset();
  } catch (err) {
    status.textContent = 'Something went wrong. Please call us directly.';
  }
});
</script>
Consent language — replace "Your Business Name" with yours The disclosure above names the business the consumer is giving consent to. Edit Your Business Name to your registered brand (the one on your 10DLC campaign) and link to your own /privacy.html and /sms-consent.html pages, or to ResponsePro's at https://responsepro.app/privacy.html and https://responsepro.app/sms-consent.html if you do not host your own.
Note on client-side forms The intake URL will be visible in your page source if you use this approach. For most contractor websites this is fine — the URL is not a credential. If you want to hide it, send the form data to your own server first and forward it to ResponsePro from there. Either way, the consent checkbox and disclosure must stay on the page where the consumer enters their number.

Option 2: WordPress / WPForms webhook

WPForms Pro includes a Webhooks addon. Here is how to configure it:

1
In your WordPress admin, go to WPForms → All Forms and edit your contact form.
2
Click Settings → Webhooks and enable webhooks for this form.
3
Set the Webhook URL to your ResponsePro intake URL: https://intake.responsepro.app/your-client-id
4
Set Request Method to POST and Request Format to JSON.
5
Map your form fields: set name to your Name field, phone to your Phone field, email to Email, message to your Message field. Add a custom field source with the static value website.
6
Save and submit a test entry. You should receive an SMS within 60 seconds.

Option 3: Gravity Forms webhook

Gravity Forms uses the Webhooks Add-On (included in Elite and Pro licenses).

1
Edit your form and go to Settings → Webhooks → Add New.
2
Set Request URL to your intake URL. Set Request Method to POST and Request Format to JSON.
3
Under Request Body, choose Select Fields and map: name, phone, email, message. Add a custom value source = website.
4
Save and use Preview to submit a test. Check your phone for the SMS.

Option 4: Typeform webhook

1
Open your Typeform and go to Connect → Webhooks.
2
Click Add a webhook and paste your intake URL.
3
Typeform sends its own JSON structure. ResponsePro automatically maps common Typeform field names (phone_number, full_name, etc.) so no custom field mapping is required for standard contact forms.
4
Click View deliveries after a test submission to confirm a 200 response.

Option 5: Go High Level webhook

1
In GHL, go to Settings → Integrations → Webhooks and click Add Webhook.
2
Set the URL to your intake URL and select Contact Created as the trigger event.
3
GHL sends phone, firstName, lastName, and email in its payload. ResponsePro maps these automatically. Add source = ghl if you want to track GHL leads separately in your dashboard.

Testing with curl

Before going live, send a test lead from the command line. Replace YOUR-CLIENT-ID and use a real phone number you can receive texts on.

curl test
curl -X POST https://intake.responsepro.app/YOUR-CLIENT-ID \
  -H "Content-Type: application/json" \
  -d '{
    "name":    "Test Lead",
    "phone":   "5405551234",
    "email":   "test@example.com",
    "message": "Testing the webhook integration",
    "source":  "website"
  }'

You should receive a JSON response of {"received":true} and an SMS to the phone number within 60 seconds.

Multi-source tracking with the source field

If you run leads from multiple sources — your website, Google Ads, Facebook, Angi — you can track each one separately by passing a different source value. Your ResponsePro dashboard shows leads filtered by source so you can see which channels are actually producing results.

Common source values: website, google_lsa, google_ads, facebook, angi, thumbtack, referral. See our multi-source tracking guide for more detail.

Not sure how to set this up?

Your intake URL and client ID are in your welcome email. If you are not sure which integration to use or need help configuring it, reply to that email and we will configure it for you same day — it is included in your onboarding.

Ready to get started? View plans →