HubSpot holds the contact record, the deal stage and the email history. The usual next request is to text those contacts and call them without leaving the CRM. There are three ways to do that, and each one moves the work to a different place. The questions to ask are where the conversation is logged, where consent lives, and who handles carrier registration.
This post compares HubSpot's native texting and calling with connected providers. It covers the fields you have to map, how opt-outs should sync, and what the math looks like. We make Ready, so we'll say plainly where we fit and where we don't. HubSpot is one of the CRMs in the app library, which handles contacts, notes and deal stages; there is no listing inside the HubSpot Marketplace, and logging every text to the HubSpot timeline is still to build. If one-click install and automatic timeline logging inside HubSpot are your top requirements, the first two options below suit you better.
The three ways to text from HubSpot
1. HubSpot's native SMS and calling
HubSpot offers marketing SMS on certain Marketing Hub tiers. Calling is built into its Sales and Service products, and the included minutes depend on your seat type. Packaging and limits change, so check your current plan before you plan around it.
The main advantage is that nothing needs syncing. Texts, calls and opt-outs live on the contact record already, and your workflows can trigger sends directly. The tradeoff is that you're locked to HubSpot's tier structure. Native SMS is aimed at marketing sends, so one-to-one conversational texting from reps may need a different setup.
2. Marketplace SMS and calling apps
The HubSpot App Marketplace lists a lot of texting and calling apps. Most of them add a sidebar on the contact record, log messages to the timeline and expose workflow actions. Pricing is usually per seat or a monthly subscription. For a sales team of five to fifteen reps who mainly text one-to-one, a good marketplace app is often the least effort.
The things to check are how the app maps consent fields and whether STOP replies write back to HubSpot. Some only log the message text and leave the contact property unchanged.
3. An SMS API wired to HubSpot
This option uses a messaging provider (Ready, Twilio, Telnyx and others) connected through HubSpot workflows, webhooks or middleware. It takes more setup, but you control the field mapping, the sending logic and the per-message cost. It fits teams with an engineer available, and platforms that text on behalf of their own customers.
| HubSpot native | Marketplace app | SMS API (e.g. Ready) | |
|---|---|---|---|
| Setup effort | Lowest | Low | Medium (needs a developer or middleware) |
| Pricing model | Tier / add-on | Usually per seat or subscription | Per segment |
| Timeline logging | Built in | Usually built in | Notes through the app library connection; logging each text is still to build |
| Opt-out write-back | Built in | Varies, so verify | You build it from opt-out data |
| 10DLC registration | Handled inside HubSpot's flow | Varies by vendor | Ready handles it in-app; raw CPaaS leaves more to you |
| Best for | Marketing sends from workflows | Rep one-to-one texting | Custom logic, platforms, cost control |
We cover the same tradeoffs for other CRMs in SMS integrations for Pipedrive, Salesforce, Airtable and others.
Field mapping: the part that breaks quietly
Field mapping causes most of the problems with any connected setup. These are the properties to set up before the first send.
- Phone in E.164. HubSpot accepts free-form phone values such as "(212) 555-0199" or "212.555.0199 ext 4". Normalize them to
+12125550199before sending. Ready treats a 10-digit US number as +1, but extensions and stray text will fail. - Mobile vs landline. Keep a "line type" property. You can fill it with a validation lookup (
GET /v1/validate/:phoneon Ready) so you don't pay to text numbers that can't receive texts. - SMS consent status. Use a dedicated property such as "Opted in," "Opted out" or "Unknown." Don't reuse the email subscription status. Email consent and SMS consent are legally separate.
- Consent evidence. Record the opt-in timestamp, the exact wording the contact agreed to, and the page or form URL. HubSpot (or whichever tool captured the form) needs to store this.
- Last text sent / last reply received. These timestamps let workflows suppress over-texting and route replies to a rep.
- Owner / assigned number. Map this if reps each text from their own number, so replies reach the right person.
Consent syncing: who stores what
Consent is the one area where a connected setup has to be precise.
HubSpot should be the system of record for opt-in. Ready records your opt-in attestation for each bulk send and each API send that sets consent_attested: who sent, to how many, and when. That gives you an audit trail of your promise. It is not a per-contact consent record, though. Ready doesn't store the recipient's opt-in time, wording or source URL, and a keyword reply doesn't create one. Keep that evidence in HubSpot, on the properties above. (A contact who signs up on a Ready-hosted opt-in page is the exception: Ready stores that sign-up, with the time, IP address and exact wording, and support@tryready.com can send you a copy.)
The messaging provider should be the system of record for opt-out. On Ready, an inbound STOP or UNSUBSCRIBE is honored automatically, and the opt-out applies across campaigns so the contact can't be messaged again. Opted-out numbers are refused up front and not charged. Your job is to write that status back to HubSpot so your marketing team doesn't keep sending a workflow to people who have opted out. You can pull it from GET /v1/opt-outs or check a single contact with GET /v1/opt-outs/:phone. Use a short scheduled sync or check before each send.
The send itself carries your consent promise:
POST https://api.tryready.com/v1/messages
X-API-Key: <key>
Idempotency-Key: 6f1c2a9e-3b7d-4e21-9a0c-5d8f1e2b7c44
{"to": "+12125550199", "body": "Hi Dana, your demo is confirmed for Thursday at 2 PM. Reply STOP to opt out.", "consent_attested": true} Only set consent_attested: true when the HubSpot consent property says "Opted in." The idempotency key prevents a retried workflow step from sending the same text twice. Full request details are in the messages API docs, and lists up to 100 recipients per call go through bulk messages.
Ready also enforces quiet hours. Quiet hours follow the recipient's area. A single API text is held only if sending opens within about 6 hours; otherwise it is refused with 409 QUIET_HOURS_BLOCK and next_allowed_at, so have the workflow retry then. A held text is charged only when it sends. Litigator and DNC scrubbing can be switched on for the account. All of this reduces risk, but it doesn't make you immune to lawsuits. Compliance stays the sender's responsibility. Treat HubSpot-to-SMS as consented or replied leads only. Cold outreach goes by phone and mail.
Registration: the step most HubSpot teams skip
Every option above sends business texts over US 10-digit numbers, and carriers filter unregistered traffic. Native HubSpot and some marketplace apps walk you through A2P 10DLC registration. With a raw CPaaS API, you handle more of it yourself.
On Ready, brand and campaign registration runs in-app. There's no setup fee. You pay $25 at submit, which covers the first month, and the ongoing monthly cost is $25/mo for registration + $2 per number. Most approvals take 2 to 7 days. An account can send up to 500 texts a month before registering, at its normal per-text rate. The first 20 one-to-one texts are free, so use them before you register, because they end once a registration is paid for. 10DLC cost: every fee explained covers the full fee breakdown.
Match the campaign use case to what HubSpot will actually send. A workflow that sends both demo reminders and promos needs a mixed or marketing use case.
Worked example: the per-segment math
Assumptions: 2,000 opted-in contacts, a 150-character plain-text reminder with no emoji (1 segment), and a 20% reply rate with one-segment replies.
- Outbound: 2,000 × 1 segment × $0.0075 = $15 plus 2,000 × $0.0045 in carrier fees
- Replies: 400 × 1 segment × $0.0075 = $3 plus 400 × $0.0045, because replies are billed like sent texts
- Total: $18 plus 2,400 × $0.0045 carrier fee.
Ready's all-in prices per segment include the carrier fee but not screening: Scrub lists and Number validation, the two switches in Settings under Compliance, each add $0.003 per segment when switched on, shown as screening on your bill, and both are off by default. Unless you turn the opt-out footer off, the first text to each contact, and one again from time to time, also gets "Reply STOP to opt out" and your business name if the message does not already have them, so a text close to the segment limit can bill one more segment.
Now add one emoji to the same message. The limit drops to 70 characters per segment (67 multipart), so a 150-character text becomes 3 segments, which roughly triples the outbound line. Check segment counts in the HubSpot template before you build the workflow.
To be honest about price: Twilio's raw rate is about $0.0083 a segment, well below the Standard rate we charge, and HubSpot's own SMS may come bundled into a tier you already pay for. What Ready includes is in-app registration, STOP handling, quiet hours, scrubbing and a full app with an inbox, contacts, campaigns and automations. Teams that want a working stack without building the compliance layer weigh those against the per-segment difference.
Dialer choices
For calling from HubSpot, the native calling tool or a marketplace calling app logs calls to the contact timeline automatically. If your reps work entirely inside HubSpot, that convenience is worth a lot.
The Ready Dialer handles click-to-call from the dial pad in the Ready dashboard or GoHighLevel. It also covers consented recording and transcripts, inbound calls that ring the open pad, and a Missed call card in the Inbox thread for each call you miss. It costs $0.025/min, and each started minute is billed as a full minute. Only answered time is billed, so a ring-out or busy line costs nothing, while a voicemail pickup bills like a connected call. It doesn't run inside HubSpot and has no auto-dialing or voicemail drop. A team that needs those inside the CRM should look at the options in dialer integrations for HubSpot, Pipedrive and Zoho.
The pairing that works well is to send an instant text when a form submits, then follow with a manual call within the first few minutes.
Picking your route
- You only need marketing texts from workflows: start with HubSpot native.
- Reps need one-to-one texting in the sidebar: try a marketplace app, and confirm that STOP writes back to the contact.
- You need custom logic and per-segment pricing, or you're a platform texting for your own customers: wire an API. Ready's quickstart covers the basics, and sub-accounts keep each customer's numbers and registration separate. See 10DLC for SaaS platforms.
Whichever route you choose, settle these first: E.164 phones, a dedicated SMS consent property with evidence stored in HubSpot, opt-outs syncing back from the provider, and a registered campaign that matches what you send. If the API route fits, you can create an account and send your 20 free one-to-one texts before deciding.