~1,440
SMS/month — WF 1 (Indeed)
~2,000
SMS/month — WF 2 (city blasts)
~2,000
SMS/month — WF 3 (cold leads)
Recommended plan — choose this when reactivating
10,000 credits/month — ~$339/month
If Salesmsg shows a different price, take a screenshot and confirm with Peter before paying. Do not select a lower tier.
All plan tiers
| Plan | Credits/month | Approx cost | |
| Starter | 2,500 | ~$99/month | |
| Standard | 5,000 | ~$179/month | |
| Growth | 7,500 | ~$249/month | |
| 10,000+ credits | 10,000 | ~$339/month | Choose this |
| Custom | 10,000+ | Contact Salesmsg sales | |
Why 10,000 and not 7,500: The 7,500 plan puts you within 1,500–2,500 credits of your ceiling every single month. One active week of Workflow 3 cold blasts would push you over, causing interrupted sends and overage charges. The 10,000 plan gives you real breathing room.
Additional costs to know
| Item | Cost | Frequency |
| A2P 10DLC Brand Registration | ~$4.50 | One-time |
| A2P Campaign Registration | ~$10–15 | Per campaign/month |
| T-Mobile Campaign Activation | $50 | One-time per campaign |
| Carrier pass-through fees | Variable | Billed end of month |
| Failed message fee | $0.001/msg | Per failed message |
Total estimated all-in monthly cost: approximately $360–$420/month. Confirm exact pricing with Salesmsg before activating.
HubSpot marketing contacts note: All three workflows mark contacts as Marketing Contacts at the start and remove them at the end. With 10,000 contacts in HubSpot, confirm with Peter how many marketing contacts your Enterprise plan includes before running Workflow 3 cold blasts at scale. Check at: Settings → Account & Billing → Contacts.
1
Log into Salesmsg
Go to app.salesmessage.com. Use the One Janitorial credentials. If you don't have them, ask Peter before proceeding. If the account is suspended you will see a red or yellow banner at the top of the screen — click it to begin.
2
Select the 10,000 credit plan
Go to Settings → Plan & Billing (click your profile icon top right, then Settings). Click the green Upgrade or Reactivate Plan button. Use the pricing slider to select the 10,000 credit plan at approximately $339/month. If the price shown is different, screenshot it and confirm with Peter before paying. Enter or confirm the payment method on file. Click Confirm.
3
Reconnect HubSpot
Go to Settings → App Marketplace → HubSpot. If it shows Disconnected or a red status, click it and follow the prompts to re-authorize. You will be redirected to HubSpot to log in and confirm. When done it should show a green Connected status. If you have trouble, use Salesmsg live chat (bottom right corner of any page).
4
Confirm phone numbers are active
Click Inbox in the left sidebar of Salesmsg. Confirm your business number(s) appear and are active. If any number shows as inactive or suspended, contact Salesmsg support via live chat immediately and do not proceed with workflow setup until it is resolved.
5
Check A2P 10DLC compliance registration
Go to Settings → Compliance (sometimes listed as Settings → 10DLC). Without this registration your messages will be blocked or filtered by carriers and will not reach anyone.
Brand Registration (~$4.50 one-time)
Enter your business legal name, business number, website URL, and contact info. Submit and wait 1–5 business days for approval.
Campaign Registration (~$10–15/month per campaign)
Use case description: subcontractor recruitment outreach. You may need a separate campaign registration for recruitment (WF1/WF3) vs. city blasts (WF2). Confirm with Salesmsg support.
Do not send any bulk texts until registration is fully approved. Sending before approval results in messages being blocked and can get your number permanently flagged. Approval takes 1–5 business days.
Both Workflow 1 and Workflow 3 send the same Round Robin calendar link. Contacts can only book within the next 5 days — this gives them enough time to complete the required HubSpot form and their Trainual training before the meeting, but not so much time that they procrastinate.
1
Go to Sales → Meetings in HubSpot
Check if a subcontractor intro call meeting link already exists. If it does, click it and confirm the settings match the steps below before using it. If not, continue.
2
Create the meeting link
Click Create meeting link (top right). Select Round Robin — this automatically rotates the booking among all available BCO reps based on their live calendar availability. Name it: Subcontractor Intro Call – One Janitorial.
3
Configure the round robin settings
Team members→Add all BCO reps to the rotation
Duration→15 minutes
Available hours→Mon–Fri, 9am–5pm local time
Buffer time→10 minutes between meetings
Max days out→5 days only — must set this limit
Each BCO rep must connect their own calendar individually: Profile & Preferences → Calendar → Connect Google Calendar or Outlook. Without this their availability will not appear and they will not receive bookings.
4
Confirmation email and form fields
Toggle Confirmation email ON. Set the confirmation message to: "You're confirmed! One of our team members will call you at the time you selected. Talk soon."
Under Form fields, confirm the booking page collects: First Name, Last Name, Phone Number, City.
5
Assign Contact Owner on booking
In the meeting link settings, find the option to assign the rep who receives the booking as the Contact Owner on the contact record. Enable this. Whoever the contact books with becomes their named contact in HubSpot going forward — this is how the email is personalized and how accountability is tracked.
6
Copy and save the meeting link URL
After saving, copy the meeting link URL. Keep it somewhere accessible — you will paste it into the qualified text message in both Workflow 1 and Workflow 3. Every time you build those workflow steps, paste this same link.
5-day booking window is mandatory. The form must be completed before the meeting can proceed. If a contact books too close to the 5-day limit and needs more time, they can email alliance@onejan.com to reschedule. The Trainual training takes a few hours — 5 days gives them enough time to complete both.
These properties have already been built and verified in HubSpot by Peter. You do not need to create anything. Before building the workflows, follow the steps below to confirm both properties are present and have the correct values.
How to verify
1
Go to Settings → PropertiesClick the gear icon (top right in HubSpot). Go to Properties. Make sure you are on the Contact properties tab.
2
Search for each propertySearch for each name below and confirm it exists with all the listed values. Do not change or delete any existing values.
Alliance Scouting Stage
| Value | Set by |
| New Applicant | Manual entry |
| Contacted | Manual entry |
| Not Interested in Opportunity | WF1, WF3 — contact says No or fails Q1 |
| Does Not Qualify | WF1, WF3 — contact fails Q2 or Q3 |
| Introduction Call Scheduled | WF1, WF3 — contact qualifies and gets link |
| No Response – 5 Attempts | WF1 (after 3 follow-ups), WF3 (after 5 follow-ups) |
BCO/HR – Cleaner Readiness
| Value | Set by |
| Wanting More | WF2 — contact says Yes |
| Not Interested | WF2 — contact says No or no reply after 3 follow-ups |
| Available | Manual entry |
No Response – 5 Attempts already exists in the dropdown. Use it exactly as written. This value is applied at the end of the no-reply sequence in both Workflow 1 (after 3 attempts) and Workflow 3 (after 5 attempts).
Trigger conditions — AND logic, all three must be true
Create dateis equal toToday
and
Contact typeis equal toPartner Prospecting
and
Lead sourceis equal toIndeed
Re-enrollment: OFF — a contact goes through this once only. Do NOT manually enroll contacts. The trigger fires automatically when you create the contact correctly.
First action — before any message is sent
Set: Marketing contact status → Marketing contact
This must be the very first action in the workflow. Required for automated email sends.
Action 1 — Initial outreach text
One Janitorial → Contact
"Hey! One Janitorial here — we noticed you applied for a janitorial subcontracting opportunity. Are you still looking to take on contracts?"
Action 2 — Branch on reply
Yes (yes / yeah / yep / sure / interested / absolutely / definitely)
→ Go to Action 4 — Question 1
No
→ Go to Action 3 — Rejection
Action 3 — No: rejection text
"Hey! No worries at all — thanks for letting us know. If anything changes and you're ever looking to subcontract with a commercial cleaning company, feel free to reach out anytime. Take care!"
Set: Alliance Scouting Stage → Not Interested in Opportunity
End of workflow — set Marketing contact status → Non-marketing contact
Action 4 — Question 1
"Hey! Awesome — we have 3 quick questions, and if you qualify, we'd love to set up a short call with you. First question: Do you currently operate your own cleaning company or do subcontracting work?"
Yes
→ Go to Action 5 — Question 2
No
"Hey! Thanks so much for letting us know — right now we're specifically looking for subcontractors who already have an operating cleaning business. If that changes in the future, reach back out — we'd love to work with you!"
Set: Alliance Scouting Stage → Not Interested in Opportunity
End of workflow — set Marketing contact status → Non-marketing contact
Action 5 — Question 2
"Great! Second question: Do you have a partner or family member who cleans with you and is trained in the work?"
Yes
→ Go to Action 6 — Question 3
No
"Hey! Thanks for letting us know — we're currently looking for teams with trained partners and verified references. If anything changes down the road, don't hesitate to reach back out!"
Set: Alliance Scouting Stage → Does Not Qualify
End of workflow — set Marketing contact status → Non-marketing contact
Action 6 — Question 3
"Almost there! Last question: Do you have references from businesses you've cleaned for who can give you strong reviews?"
Yes — qualified
→ Go to Action 7 — calendar link
No
"Hey! Thanks for letting us know — we're currently looking for teams with trained partners and verified references. If anything changes down the road, don't hesitate to reach back out!"
Set: Alliance Scouting Stage → Does Not Qualify
End of workflow — set Marketing contact status → Non-marketing contact
Action 7 — Qualified: send calendar link
"Hey! Fantastic — you qualify! Here's a link to book a quick call with one of our team members. They'll walk you through our programme and get you started: [PASTE HUBSPOT MEETINGS ROUND ROBIN LINK — 5 DAY MAX BOOKING]"
Set: Alliance Scouting Stage → Introduction Call Scheduled
Action 8 — Send the qualification email
Add action: Send email. Select the Alliance-E Qualification Email template (see the Email section of this guide for the full template and setup instructions). This email is sent to every contact who qualifies and receives the calendar link.
End of workflow — set Marketing contact status → Non-marketing contact
No-response follow-ups — apply after Action 1 and Action 7
After each of these two messages, if no reply is received within 8 hours, send a follow-up. Repeat up to 3 times. To build this: after the send action, add a Delay of 8 hours, then an If/then branch checking whether Salesmsg Last SMS Reply Date is after the timestamp of the last sent message. If YES → skip follow-up and continue. If NO → send next follow-up text.
Follow-up sequence — 3 attempts, 8 hours apart
Follow-up 1 — 8 hours, no reply
"Hey! Just wanted to make sure my last message came through — still interested in taking on cleaning contracts with One Janitorial?"
Follow-up 2 — 8 hours later, still no reply
"Hey! Following up one more time from One Janitorial — we have some great opportunities available right now. Still looking?"
Follow-up 3 — 8 hours later, still no reply
"Hey! Last check-in from One Janitorial — if now's not a good time, no worries at all. Feel free to reach out whenever you're ready. We'd love to work with you!"
After Follow-up 3 with no reply: Set Alliance Scouting Stage → No Response – 5 Attempts
End of workflow — set Marketing contact status → Non-marketing contact
Reminder — end of every branch: Every single path in this workflow must end with setting Marketing contact status to Non-marketing contact. After building each branch, spot-check a test contact record to confirm the field updates within a few minutes. If it hasn't updated after 10 minutes, go to the contact record → Actions menu → Set as non-marketing contact manually.
This workflow is not triggered automatically. Gelber manually selects contacts in a specific city and enrolls them each time new buildings become available. Run this daily if needed, up to 20 contacts per batch.
Create the workflow
Name→Alliance Cleaner City Outreach SMS
Trigger→Contact is enrolled manually
Re-enrollment→ON — contacts can be re-blasted for new buildings if not already Not Interested
First action — before any message is sent
Set: Marketing contact status → Marketing contact
Action 1 — Initial outreach
Use the City personalization token — click the personalization icon when composing in HubSpot and search for City. This auto-fills the contact's city from their record.
"Hey! One Janitorial here — we have buildings coming available in [City] and thought of you. If you're looking to take on more contracts, let us know!"
Yes
"Hey! Awesome — let's set up a quick call to go over the details and match you to a building. Here's the link to pick a time: [PASTE HUBSPOT ROUND ROBIN MEETINGS LINK]"
Set: BCO/HR – Cleaner Readiness → Wanting More
End of workflow — set Marketing contact status → Non-marketing contact
No
"Hey! No problem at all — thanks for letting us know. If anything changes and you're looking for more work, just reach out. We'd love to help. Take care!"
Set: BCO/HR – Cleaner Readiness → Not Interested
End of workflow — set Marketing contact status → Non-marketing contact
No-response follow-ups — 3 attempts on Action 1
Follow-up sequence — 3 attempts, 8 hours apart
Follow-up 1 — 8 hours, no reply
"Hey! Just checking in from One Janitorial — we have buildings in [City] right now if you're looking for more contracts. Interested?"
Follow-up 2 — 8 hours later, still no reply
"Hey! One Janitorial again — still some spots available in [City]. Would love to get you set up if the timing works. Let us know!"
Follow-up 3 — 8 hours later, still no reply
"Hey! Last message from One Janitorial for now — if you ever want to learn more about available buildings in [City], just reply anytime. No pressure!"
After Follow-up 3 with no reply: Set BCO/HR – Cleaner Readiness → Not Interested
End of workflow — set Marketing contact status → Non-marketing contact
How to run a city blast — Gelber's daily task
1
Filter contacts in HubSpotGo to Contacts → Contacts. Click Add filter. Set: City = the city you want (e.g. Brampton). Add another filter: BCO/HR – Cleaner Readiness = is unknown OR is not equal to Not Interested AND is not equal to Wanting More. This filters out anyone already contacted or already flagged.
2
Select up to 20 contactsUse the checkboxes on the left side of each row. Do not enroll more than 20 at a time.
3
Enroll in workflowClick Actions → Enroll in workflow → select Alliance Cleaner City Outreach SMS → Confirm enrollment. Texts go out automatically from here.
These are contacts already in HubSpot under Partner Prospecting who have never been worked — their Alliance Scouting Stage is completely blank. This workflow sends up to 5 outreach attempts. If they respond Yes at any point they are routed through the same 3 qualification questions as Workflow 1.
Trigger conditions — AND logic
Contact typeis equal toPartner Prospecting
and
Alliance Scouting Stageisunknown (field is completely blank — no value ever set)
Re-enrollment: OFF — once a contact goes through this workflow they do not re-enter it.
First action — before any message is sent
Set: Marketing contact status → Marketing contact
Action 1 — Initial outreach
"Hey! One Janitorial here — we have buildings available in [City] and thought you might be interested in subcontracting opportunities. Still open to it?"
Yes
→ Jump directly to Qualification Questions below
No
"Hey! No problem at all — thanks for letting us know. If anything changes and you're ever looking for subcontracting opportunities with One Janitorial, we'd love to hear from you. Take care!"
Set: Alliance Scouting Stage → Not Interested in Opportunity
End of workflow — set Marketing contact status → Non-marketing contact
No-response follow-up sequence — 5 attempts
After each message with no reply: Delay 8 hours → check for reply → if YES jump to qualification questions → if still no reply send next follow-up. If the contact replies YES at any point during the 5 attempts, they immediately branch into the qualification questions below.
5 attempts, 8 hours apart — YES at any point routes to qualification
Follow-up 1 — 8 hours, no reply
"Hey! One Janitorial here — just following up. We have buildings available in [City] right now. Still looking for subcontracting work?"
Follow-up 2 — 8 hours later, still no reply
"Hey! One Janitorial again — wanted to make sure this didn't get lost. Great opportunity available in [City] if you're interested. Let us know!"
Follow-up 3 — 8 hours later, still no reply
"Hey! Checking in one more time — One Janitorial has a building in [City] that could be a great fit. Still open to subcontracting opportunities?"
Follow-up 4 — 8 hours later, still no reply
"Hey! One Janitorial here — still have opportunities in [City] available. If you ever want to learn more, just reply and we'll pick right up. No pressure!"
Follow-up 5 — 8 hours later, final attempt
"Hey! One Janitorial here — we've reached out a few times about a subcontracting opportunity in [City]. We'll leave it here for now — if you ever change your mind, we'd love to hear from you. Take care!"
After Follow-up 5 with no reply: Set Alliance Scouting Stage → No Response – 5 Attempts
End of workflow — set Marketing contact status → Non-marketing contact
Qualification Questions — triggered when YES at any point
Question 1
"Hey! Awesome — One Janitorial has a few quick questions before we connect. First: Do you currently operate your own cleaning company or do subcontracting work?"
No
"Hey! Thanks so much — right now we're specifically looking for subcontractors who already have an operating cleaning business. If that changes, reach back out — we'd love to work with you!"
Set: Alliance Scouting Stage → Not Interested in Opportunity
End of workflow — set Marketing contact status → Non-marketing contact
Question 2
"Great! Second question: Do you have a partner or family member who cleans with you and is trained in the work?"
No
"Hey! Thanks for letting us know — we're looking for teams with trained partners and verified references right now. If anything changes in the future, don't hesitate to reach out!"
Set: Alliance Scouting Stage → Does Not Qualify
End of workflow — set Marketing contact status → Non-marketing contact
Question 3
"Almost done! Last question: Do you have references from businesses you've cleaned for who can give you strong reviews?"
Yes — qualified!
→ Send calendar link below
No
"Hey! Thanks for letting us know — we're looking for teams with trained partners and verified references right now. If anything changes in the future, don't hesitate to reach out!"
Set: Alliance Scouting Stage → Does Not Qualify
End of workflow — set Marketing contact status → Non-marketing contact
Qualified — send calendar link
"Hey! Fantastic — you qualify! One Janitorial would love to connect with you. Click the link below to book a quick call and one of our team members will walk you through everything: [PASTE HUBSPOT ROUND ROBIN MEETINGS LINK — 5 DAY MAX BOOKING]"
Set: Alliance Scouting Stage → Introduction Call Scheduled
One follow-up if no booking after 8 hours:
"Hey! Just wanted to make sure you got the booking link from One Janitorial — here it is again if you need it: [PASTE LINK]. Looking forward to connecting!"
Send qualification email
Add action: Send email. Use the Alliance-E Qualification Email template (same template as Workflow 1 — see the Email section of this guide).
End of workflow — set Marketing contact status → Non-marketing contact
Optional safety net — auto-update on actual booking
Create a separate simple workflow: Meeting Booked — Update Alliance Stage
Trigger→Meeting is booked → type = Subcontractor Intro Call
Set: Alliance Scouting Stage → Introduction Call Scheduled
Set: Marketing contact status → Non-marketing contact
This fires the moment someone actually books, not just when the link was sent. Acts as a more accurate backup to the property set in the main workflow.
Reminder — end of every branch: Every single path in Workflow 3 must end with setting Marketing contact status to Non-marketing contact. Check every branch when building. Spot-check a test contact record after enrolling to confirm the field updates correctly.
Build this template once in HubSpot under Marketing → Email → Create email → Automated. Name it Alliance-E Qualification Email. Use the same template for both Workflow 1 and Workflow 3. Set the sender as Contact Owner so each contact receives the email from the rep they booked with.
How to build it in HubSpot
1
Go to Marketing → Email → Create email → AutomatedSelect a simple single-column template. Keep it clean and readable.
2
Set sender as Contact OwnerIn the From field, select Contact Owner. This means whoever the contact booked their intro call with will appear as the sender — personalizing the email and establishing that rep as their point of contact.
3
Add the form linkGo to Marketing → Forms, find the existing subcontractor info form, copy the link. Paste it into Point 1 of the email body where indicated below.
4
Save and name it: Alliance-E Qualification EmailThis is the template name you will select in Workflow 1 Action 8 and Workflow 3 Step 7.
Email template
From: [Contact Owner name] — alliance@onejan.com | Reply-to: alliance@onejan.com
You're In — Welcome to the One Janitorial Alliance-E Programme
Hey!
We are absolutely thrilled to welcome you to the One Janitorial Alliance-E Programme — and we cannot wait to get you started.
Here is what we do: we partner with smaller and growing cleaning businesses to give them access to real, paid commercial cleaning contracts. We are not just handing you a building and walking away — we work alongside you, show you exactly how to operate professionally, and help you grow your own business and develop your own client base over time. This is a real opportunity to build something that belongs to you.
Right now, we have over $50,000 in contracts ready to go. We have buildings available in your city and we are actively looking for outstanding partners to fill them. You have taken the first step — and we are excited you are here.
Before your call, there are two things we need you to complete. Please treat these as mandatory — we cannot proceed with the meeting without the form being filled out in full.
- Complete the Partner Information Form. This collects all the details we need to get you set up in our system, matched to buildings, and ready to get started. It only takes a few minutes. Please have it done before your scheduled call: [PASTE HUBSPOT FORM LINK HERE]
- Complete your Trainual training. You will receive a separate email from Trainual with your personal login link. Inside you will find everything you need to know — how our contracts work, how inspections are conducted, how our business operates, and exactly how you get paid. The training takes a few hours, so please plan your time accordingly. We would love for you to finish it before your call. If you need a little extra time after the meeting, that is completely fine — but the form must be done first.
Your intro call has been booked with one of our team members. They will be your primary contact going forward and are looking forward to meeting you. Feel free to reach out to them directly with any questions before your call.
We are genuinely excited about what we are building together. The contracts are ready, the buildings are waiting, and we are here to support you every single step of the way. Let's make something great happen.
If you have any questions at any point, email us at alliance@onejan.com and we will get back to you right away.
Talk soon,
The One Janitorial Alliance Team
Contact owner sender setup: When the sender is set to Contact Owner, each contact receives the email from the rep they booked with. This is how the rep becomes their named contact from the very first email. Make sure every BCO rep has their email address properly set up in their HubSpot profile before activating either workflow.
In Salesmsg — primary inbox
1
Log in and open your inboxGo to app.salesmessage.com. Click Inbox in the left sidebar. Filter by Unread to see all contacts who have replied and not yet been handled.
2
Read and respondClick any conversation to see the full thread. If someone sent a long or unclear reply that the workflow cannot branch on — for example, a full paragraph instead of yes or no — you need to manually reply to them and manually update their Alliance Scouting Stage property in HubSpot to the correct value.
3
Set up notifications so you never miss a replyGo to Settings → Notifications. Turn on browser notifications and email notifications for new inbound messages. Download the Salesmsg mobile app and enable push notifications — you will see replies in real time on your phone.
In HubSpot — contact-level view
1
Open the contact recordGo to Contacts → Contacts. Search for the contact name. Open their record. In the Activity feed on the right, filter by SMS to see every message sent and received with full timestamps.
2
Send a manual one-off textUse the Salesmsg widget on the right panel of any contact record to send a text directly without going through a workflow. Use this when you need to handle a reply that fell outside the yes/no branching logic.
3
Check the Conversations inboxGo to Conversations → Inbox in HubSpot. If Salesmsg is connected as a channel (Farouk may have set this up), all inbound SMS replies will appear here alongside emails — one unified inbox view.
Manual override situations: If a contact writes something like "maybe" or "I'm interested but not right now" the workflow will not know how to branch them. You need to manually assess, reply, and update their Alliance Scouting Stage property to the appropriate value in HubSpot. Do not leave these contacts in limbo — check the inbox every morning.
Salesmsg automatically logs all SMS activity to the HubSpot contact timeline. This means HubSpot can report on it. Build the following dashboard once and use it every week to track all three workflows.
Create the dashboard
1
Go to Reports → DashboardsClick Create dashboard (top right). Name it: SMS Recruitment Dashboard. Set visibility to Private or share with your team as preferred.
2
Add each report belowClick Add report inside the dashboard and build each report as described. Save each one to the dashboard.
Reports to build
Report 1 — Contacts by Alliance Scouting Stage
Shows how many contacts are in each stage across all workflows at any given moment. Use bar or pie chart. This is the most important weekly snapshot — it tells you how many people are qualified, disqualified, not interested, no response, and scheduled.
Reports → Create report → Contact report → Group by: Alliance Scouting Stage
Report 2 — Contacts by BCO/HR Cleaner Readiness
Shows the result breakdown from Workflow 2 city blasts. Tells you how many existing cleaners are wanting more work, not interested, or still available.
Reports → Create report → Contact report → Group by: BCO/HR – Cleaner Readiness
Report 3 — Workflow enrollment over time
Shows how many contacts went through each of the three workflows week over week. Useful for tracking activity volume and identifying slow weeks.
Reports → Create report → Contact report → Filter by workflow enrollment for each workflow name
Report 4 — Meetings booked
Shows how many intro calls were booked as a result of the SMS qualification flows. Filter by meeting type and outcome to see scheduled vs. completed vs. no-show.
Reports → Create report → Activities report → Filter: Activity type = Meeting, Outcome = Scheduled or Completed
Report 5 — Active marketing contacts (live count)
Shows in real time how many contacts are currently marked as Marketing contact. Use this during your weekly cleanup to spot contacts that should have been removed but were not.
Reports → Create report → Contact report → Filter: Marketing contact status = Marketing contact
Report 6 — No Response – 5 Attempts contacts
Tracks how many contacts went through the full follow-up sequence in WF1 or WF3 without ever responding. Peter can review this monthly to decide whether to re-approach or remove these contacts from the database.
Reports → Create report → Contact report → Filter: Alliance Scouting Stage = No Response – 5 Attempts
Checking message volume
In Salesmsg
Settings → Plan & Billing: Credit balance, credits used this month, plan type, and full fee breakdown. Check every Monday.
Reports → Messaging: Full breakdown of messages sent and received, filterable by date range, inbox, or team member.
In HubSpot
Automation → Workflows → [Workflow Name] → History: Every contact enrolled, every step they reached, any errors, and timestamps on all actions. Check this weekly for all three workflows.
Every contact is automatically marked as a Non-marketing contact at the end of each workflow. However, contacts can occasionally get stuck mid-workflow or the property action can take a few minutes. This weekly task makes sure nothing slips through and your HubSpot billing stays accurate.
Step 1 — Find and remove lingering marketing contacts
1
Filter for all active marketing contactsGo to Contacts → Contacts. Click Add filter. Set: Marketing contact status = is equal to → Marketing contact. This shows every contact currently marked as a marketing contact.
2
Review the listAnyone appearing here who is not currently actively mid-workflow should not be here. If you are unsure whether a contact is mid-workflow, check the workflow History tab (Automation → Workflows → [name] → History) and look for their name.
3
Bulk removeSelect all contacts that are not actively mid-workflow. Click Actions → Set as non-marketing contact to remove them in bulk.
4
Spot-checkAfter bulk removal, manually open 3–5 individual contact records and confirm the Marketing Contact Status field shows Non-marketing contact. HubSpot can take a few minutes to process bulk changes. If a contact still shows Marketing contact after 10 minutes, go to their record → click the Actions menu at the top → Set as non-marketing contact manually.
Step 2 — Weekly stage count review
While you are in HubSpot, also pull a quick count of each stage to report to Peter. Use Add filter in Contacts → Contacts and filter each stage below:
| Stage to check | Property | Filter value |
| Intro calls scheduled | Alliance Scouting Stage | Introduction Call Scheduled |
| Does not qualify | Alliance Scouting Stage | Does Not Qualify |
| Not interested | Alliance Scouting Stage | Not Interested in Opportunity |
| No response | Alliance Scouting Stage | No Response – 5 Attempts |
| Wanting more work (cleaners) | BCO/HR – Cleaner Readiness | Wanting More |
To export any list as a spreadsheet: click Actions → Export after filtering.
Do not skip the spot-check. Bulk property updates in HubSpot are not always instant. Always verify 3–5 individual records after doing a bulk removal. If you notice contacts repeatedly appearing in the marketing contact filter week after week, flag it to Peter — it means a workflow end-of-branch action may be missing.
Every morning
- Log into Salesmsg — filter Inbox by Unread and handle all replies
- Manually respond to any contacts whose message did not match a clear yes or no
- In HubSpot, check for contacts stuck on a workflow step for more than 24 hours
- If running a city blast: filter by city, confirm contacts not already Not Interested or Wanting More, select up to 20, enroll in Alliance Cleaner City Outreach SMS
When entering new Indeed applicants
- Create the contact in HubSpot
- Set Contact Type = Partner Prospecting
- Set Lead Source = Indeed
- Confirm Create Date = today (HubSpot auto-fills but double check)
- Do NOT manually enroll in Workflow 1 — the trigger fires automatically
Every Monday morning (recurring calendar task)
- Go to Salesmsg Settings → Plan & Billing — check credits used vs. remaining
- If above 8,000 credits used, flag to Peter immediately before the month resets
- Go to HubSpot Automation → Workflows — check History on all three workflows for errors or stuck contacts
- Run the marketing contacts cleanup audit (see Weekly Cleanup section)
- Pull stage counts from HubSpot and report totals to Peter
- Check the SMS Recruitment Dashboard for any anomalies
Alliance Scouting Stage updates
| Scenario | Workflow | New value |
| Contact says No to initial outreach | WF1, WF3 | Not Interested in Opportunity |
| Contact fails Q1 — no operating company | WF1, WF3 | Not Interested in Opportunity |
| Contact fails Q2 or Q3 — no partner or no references | WF1, WF3 | Does Not Qualify |
| Contact qualifies — receives calendar link | WF1, WF3 | Introduction Call Scheduled |
| No reply after all follow-up attempts | WF1 (3 attempts), WF3 (5 attempts) | No Response – 5 Attempts |
BCO/HR – Cleaner Readiness updates
| Scenario | Workflow | New value |
| Contact says Yes to city blast | WF2 | Wanting More |
| Contact says No to city blast | WF2 | Not Interested |
| No reply after 3 follow-ups | WF2 | Not Interested |
Marketing contact status — every workflow, every branch
| When | All workflows | New value |
| Start of every workflow — before any message is sent | WF1, WF2, WF3 | Marketing contact |
| End of every branch — every path, no exceptions | WF1, WF2, WF3 | Non-marketing contact |
No-response follow-up counts by workflow
| Workflow | Follow-ups applied to | Number of attempts | Final property if no reply |
| WF1 — New Alliance Applicant SMS | Initial text + calendar link text | 3 each | No Response – 5 Attempts |
| WF2 — City Outreach SMS | Initial text only | 3 | Not Interested |
| WF3 — Building Offer SMS | Initial text only | 5 | No Response – 5 Attempts |
Questions? For any issues with Salesmsg, contact Salesmsg live chat support at app.salesmessage.com (bottom right corner). For HubSpot workflow issues, contact Peter or check the workflow History tab in HubSpot. For all alliance programme questions from contacts, direct them to alliance@onejan.com.