Total Leads
β
Avg Response
β
seconds
Contacted <5 Min
β
Opt-Out Rate
β
Leads Per Day
Last 7 daysAvg Response Time
Seconds per dayNo lead data yet
Lead events will appear here once Make.com starts posting to POST /api/lead-event.
Total Missed
β
SMS Sent
β
Recovery Rate
β
Conversations
β
Avg Reply Time
β
seconds
Missed Call Events
| Timestamp | Caller | Call Status | SMS Sent | SMS Status | Replied | Conv. ID |
|---|---|---|---|---|---|---|
| Loading⦠| ||||||
Automation Error Log
| Occurred At | Event Type | Error | Module | Call UUID | Caller |
|---|---|---|---|---|---|
| No errors. β | |||||
No reports yet
Weekly reports are generated every Monday morning and emailed to you automatically. They'll appear here too.
Prospects
Local roofing & contractor companies in the Fredericksburg / Spotsylvania / Stafford corridor.
No prospects yet
Click + Add Prospect to log your first roofing company.
| Company | Phone | Website | Response Time | Status | Notes | Updated |
|---|---|---|---|---|---|---|
| Loading⦠| ||||||
Call Script
Select a prospect to load their personalised script with real response-time data pre-filled.
Select a prospect above to load the script.
Objection Handler
Tap an objection during a live call to reveal the exact response to say.
"That's great β most of our clients had something before switching too. The difference is ResponsePro texts every lead in under 60 seconds, automatically, 24/7. Whatever you're using now, is it doing that? Most tools require someone to log in and follow up manually. This runs itself."
"Totally fair β can I ask one quick thing? When a lead fills out your website form at 9pm on a Saturday, what happens? If the answer is 'they wait until Monday,' that's revenue sitting on the table every weekend. That's the only problem we solve, and we do it completely hands-off for you."
"I get it β $397 a month sounds like a cost. But think about what one roofing job is worth to you β $8,000? $15,000? If this system recovers even one lead a month that you would have lost to a competitor who responded faster, it's paid for itself ten times over. The question isn't the cost, it's what it costs you to not have it."
"Of course β when's a better time? I'll put it in my calendar right now. I just want to make sure I actually reach you β would [specific day] morning or afternoon work better?"
π‘ Get a specific day/time before hanging up. "Later" without a time = lost lead.
"Respect β a lot of owners do at the start. But when you're on a roof or in the middle of a job, are you texting back every new inquiry within a minute? Because that's what it takes to win the lead. ResponsePro handles that the second a form comes in, so you can stay focused on the work and still never lose the lead."
"Happy to β and I will. But real quick: SMS has a 96% open rate, email is around 20%. That's actually the core reason ResponsePro uses text instead of email to contact your leads. Can I grab your best email address? And while I have you β is there a specific concern I can address right now so the email is actually useful to you?"
π‘ Sending email is fine, but don't let it replace the conversation. Get one real question answered first.
Pipeline
Prospects by stage. Projected MRR shown for Interested (50%) and Closed (100%) at Core pricing ($397/mo).
Loading pipelineβ¦
Total Submissions
β
Active
β
Pending
β
Cancelled
β
Onboarding Submissions
| Business | Owner | Contact | Tier | Submitted | Client ID | Account | Status | Actions |
|---|---|---|---|---|---|---|---|---|
| Loading⦠| ||||||||
Client Onboarding Guide
Follow these steps every time you onboard a new client. Check off as you go β progress saves in your browser.
Backend β Create Client Account
Run seed-client.js to create their account
Open PowerShell, navigate to your backend folder, and run:
$env:DATABASE_URL="your_database_url"; node seed-client.js CLIENT_ID THEIR_PIN coreπ‘ Change core to growth or pro based on their tier. Pick a strong PIN β 8+ chars.
Then set their Telnyx number and forwarding phone in the DB:
UPDATE clients SET vonage_number = '+1XXXXXXXXXX', forward_phone = '+1XXXXXXXXXX' WHERE client_id = 'CLIENT_ID';π‘ vonage_number is the DB column name β it holds their Telnyx number. forward_phone = the roofer's real cell that calls get forwarded to.
Verify the client appears in Admin β Onboarding tab
Switch to the Onboarding tab above and confirm the account row shows as Active. If not, the seed script may have failed β check your DATABASE_URL.
Test their login URL
Open this in an incognito window β it should auto-login and show their (empty) dashboard:
https://dashboard.responsepro.app?client=CLIENT_ID&token=THEIR_PINMake.com β Outbound Scenario
Import the ResponsePro β Outbound v4 (Telnyx) blueprint
In Make.com, create a new scenario and import the blueprint JSON. This handles the leadβSMS flow for web form submissions.
Set Client ID in the βοΈ SET CLIENT ID HERE module
Replace YOUR_CLIENT_ID_HERE with the exact client_id you created in Phase 1. Case-sensitive.
Replace all YOUR_API_SECRET_HERE placeholders
Every HTTP module that hits the ResponsePro API needs your API_SECRET in the Authorization header as a Bearer token. There are usually 3β4 of these.
Set YOUR_TELNYX_NUMBER_HERE in the SMS send module
This is the Telnyx number assigned to this client β format: +1XXXXXXXXXX.
Configure the webhook trigger URL
The scenario's webhook URL goes into the client's website contact form as the form submission endpoint. Copy it from Make.com and paste it into their form's action URL or Zapier/webhook integration.
Map the form fields in the webhook module
Match the incoming form field names (name, phone, email, service, etc.) to the variables the scenario expects. Test with a real form submission to confirm mapping.
Customize the SMS message text
Personalize with their business name. Message must include "Reply STOP to opt out." Keep it under 160 chars for a single SMS segment.
Run a test submission end-to-end
Submit a test form with your own phone number. Confirm: (1) SMS arrives within 60 seconds, (2) a row appears in the dashboard Lead Analytics tab, (3) no errors in the Error Log tab.
Turn the scenario ON
Toggle the scenario to Active in Make.com. It will now fire on every new form submission automatically.
Make.com β Inbound SMS (Opt-out handling)
Import ResponsePro β Inbound SMS (Telnyx) blueprint
Set Client ID in the SET CLIENT ID module
Replace all YOUR_API_SECRET_HERE
Set YOUR_TELNYX_NUMBER_HERE in the opt-out confirmation SMS module
Get the webhook URL from this scenario
You'll need it for the next step. Copy it from Make.com β the webhook trigger module.
Set inbound webhook in Telnyx Messaging Profile
Telnyx Portal β Messaging β Messaging Profiles β find their profile β set the Inbound Webhook URL to the Make.com URL from the step above.
Set inbound webhook in Telnyx for their number
Telnyx Portal β Numbers β their number β Edit β set Messaging Webhook URL to the Make.com URL from the step above. Method: POST.
Test opt-out and opt-in flows
Text STOP from your phone to their Telnyx number. Confirm you get the unsubscribe confirmation SMS and the row appears in opted_out_phones in Supabase. Then text START β confirm the row is deleted from opted_out_phones and a row appears in opt_in_events.
Turn inbound scenario ON
Telnyx Voice β Missed Call System
Create a Telnyx Call Control Application
Telnyx Portal β Voice β Call Control β Create Application. Set:
Webhook URL: https://responsepro-api.onrender.com/api/voice/event (POST)
Answer URL: https://responsepro-api.onrender.com/api/voice/answer (POST)π‘ One Call Control Application covers all clients β you don't need a new one per client.
Link their Telnyx number to the Call Control Application
Telnyx Portal β Numbers β find their number β Edit β assign it to the Call Control Application you just created. This tells Telnyx to hit your webhook URL when that number receives a call.
Confirm env vars are set in Render
Render Dashboard β ResponsePro API β Environment β confirm both are set:
MAKE_MISSED_CALL_WEBHOOKβ your Scenario 1 Make webhook URLTELNYX_WEBHOOK_PUBLIC_KEYβ your Ed25519 public key from Telnyx Portal β API Keys β Webhooks. Required β server rejects all voice webhooks without this.
π‘ These are one-time setup values β same for all clients.
Import ResponsePro β Outbound v4 (Telnyx) as the missed call scenario into Make.com
Create new scenario β Import Blueprint. Set Client ID in the SET CLIENT ID module. Replace all YOUR_API_SECRET_HERE in HTTP modules. Set YOUR_TELNYX_NUMBER_HERE to their Telnyx number. Set YOUR_BUSINESS_PHONE_HERE to the roofer's cell for the business alert SMS.
Review the missed call SMS message text
Personalize with the client's business name. Must include "Reply STOP to opt out." Example: "Hi, you just called [Business Name] and we missed you. Still need a roofing estimate? Reply here and we'll get right back to you. Reply STOP to opt out."
Test by calling the Telnyx number and not answering
Call their Telnyx number from your cell. Let it ring out β don't answer. Wait ~30 seconds then check: (1) Missed Calls tab shows a new row, (2) SMS arrives on your phone, (3) error log is clean.
β If all three pass β voice is live. Turn the Make scenario ON.
Make.com β Follow-up Sequences (Scenario 3)
Import ResponsePro β Follow-up Sequences (Telnyx) blueprint into Make.com
Create new scenario β Import Blueprint. This scenario runs on a 15-minute schedule and sends follow-up messages to leads who haven't replied.
Set Client ID in Module 2 (βοΈ SET CLIENT ID HERE)
Replace YOUR_CLIENT_ID_HERE with their client ID β same as outbound and inbound.
Replace all YOUR_API_SECRET_HERE
Same API secret as all other scenarios. Hits /api/follow-ups/due, /api/follow-ups/:id/advance, and /api/follow-ups/:id/complete.
Set YOUR_TELNYX_NUMBER_HERE in the SMS send module
Same Telnyx number used in outbound and inbound for this client.
Confirm the schedule is set to every 15 minutes
The trigger module should be a scheduled webhook firing every 15 minutes. Verify the interval in Make.com β do not set it longer or follow-up timing will drift from the expected 1hr / 24hr / 72hr / 7-day cadence.
Test follow-up sequence end-to-end
Trigger a test lead through outbound. Confirm a row appears in follow_up_queue in Supabase. After 1 hour, run the follow-up scenario manually (Run once) and verify the SMS sends and the step advances. Check that replying STOP stops the sequence.
β If step advances and SMS sends β turn scenario ON.
Client Handoff
Send the client their dashboard login URL
https://dashboard.responsepro.app?client=CLIENT_ID&token=THEIR_PINπ‘ Send via text or email. Tell them to bookmark it β that link logs them in automatically.
Walk them through the dashboard (5 min)
Show them: Lead Analytics KPIs, the weekly chart, Missed Calls tab, and how to read response times. Keep it simple β they care about leads contacted and response speed.
Confirm billing is set up
Make sure they've paid the setup fee (if applicable) and their first month is collected. Don't leave this step until billing is confirmed.
Update onboarding status to Active
Onboarding tab β find their row β click β Active. This is your internal record that they're fully live.
Schedule 7-day check-in
Set a reminder to follow up in 7 days. Ask: Are they getting SMS alerts? Any issues? This is also your shot to get a testimonial early.