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:
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.
{
"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.
consent_form_url will look for it.
<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 & 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>
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.
Option 2: WordPress / WPForms webhook
WPForms Pro includes a Webhooks addon. Here is how to configure it:
https://intake.responsepro.app/your-client-idPOST and Request Format to JSON.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.Option 3: Gravity Forms webhook
Gravity Forms uses the Webhooks Add-On (included in Elite and Pro licenses).
POST and Request Format to JSON.name, phone, email, message. Add a custom value source = website.Option 4: Typeform webhook
phone_number, full_name, etc.) so no custom field mapping is required for standard contact forms.Option 5: Go High Level webhook
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 -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 →