HubSpot's free CRM gives you 10 custom contact properties. Not 10 per form, 10 for the entire account, and it does not matter whether a user, a form, or the API created them. A pre-launch founder burns through that in about two weeks, because early forms change constantly: you ask about team size, then swap it for current tooling, then add a "biggest blocker" field after reading the first twenty responses.

That is the limit founders hit first. The one they notice second is that every form, chat widget, meeting link, and marketing email on the free tier carries HubSpot's branding, on the landing page they are using to look like a real company.

HubSpot's free CRM is genuinely free and genuinely good at what it is built for: sales. It gives you contact records, forms, live chat, and email in one place at zero cost. What it charges instead of money is branding on every visitor-facing asset and hard caps at roughly 2 users, 10 custom properties, and 2,000 email sends a month. OperatorStack is not a CRM and does not try to be. It covers the pre-launch job HubSpot has no product for: a waitlist with referral codes, forms that infer their own fields, and cookie-free analytics under one unbranded script tag. Pick HubSpot if you are working a sales pipeline. Pick OperatorStack if you are validating a landing page.

What HubSpot Free Actually Gives You

Worth being specific, because "free CRM" undersells it. The free tier includes contact, company, deal, and ticket records on a shared timeline, a form builder, a live chat widget, meeting booking links, and basic email marketing. No trial clock, no credit card, no expiration.

For a founder with customers to talk to, that is a real product for zero dollars, and the honest recommendation is to use it.

The trouble is that a pre-launch founder does not have a sales pipeline. They have a landing page, some traffic, and a question about whether anyone wants the thing. HubSpot's free tier answers a different question very well.

Feature Comparison

FeatureHubSpot FreeOperatorStack
Contact recordsYesYes
Deals, tickets, sales pipelineYesNo
FormsYes (branded)Yes
Custom contact properties10, account-wideUnlimited, inferred
Live chat widgetYes (branded)Yes
AI chat trained on your siteNoYes
Waitlist with signup positionsNoYes
Referral codes and share linksNoYes
Website analyticsLimited on freeYes (cookie-free)
Vendor branding on your pageYes, unremovableNo
Seats includedAbout 2Not seat-based
Marketing email sendsAbout 2,000/monthNot an email tool

The 10-Property Ceiling Is the One That Bites

Ten custom properties sounds like plenty until you count what a real validation form asks. Email, name, and a few standard fields are built in, so those are free. Everything specific to your product is a custom property, and every question you have ever asked across every form shares the same 10 slots.

Deleting a property to free a slot deletes the answers stored in it. So the practical move is to stop asking new questions, which is the opposite of what validation is.

OperatorStack forms are schema-on-write: you post whatever fields you want and the schema is inferred from the submission. There is nothing to define first:

// First submission creates the schema
await OperatorStack.submitForm("frm_abc123", {
  email: "jamie@example.com",
  team_size: "1-10",
});

// Two weeks later, a new question needs no dashboard trip
await OperatorStack.submitForm("frm_abc123", {
  email: "sam@example.com",
  team_size: "1-10",
  biggest_blocker: "manual onboarding takes 3 days",
  current_tool: "spreadsheets",
});

The second call adds biggest_blocker and current_tool to the form's inferred schema. Nothing was configured, no slot was consumed, and the earlier submission keeps the shape it had.

Schema-on-write is not a nicer property editor. It is the absence of one. If you want typed, validated, reportable properties with dropdown options defined up front, HubSpot's model is better and this is a real trade, not a feature win.

Branding on Everything a Visitor Touches

The free tier's actual price is a logo. It appears on forms, the chat widget, meeting booking links, and the footer of every marketing email you send. A visitor filling out your form sees who built the form.

For a company with a known brand, that is a rounding error. For a solo founder trying to look like a going concern on a landing page built in Lovable or Framer last weekend, it undercuts the exact impression the page exists to create. Removing it means a paid Starter seat, which as of September 2026 runs roughly $15 to $20 per seat per month, with promotional annual rates sometimes lower for new customers.

Check the chat widget specifically before you launch. Founders tend to preview the form, approve it, and never open the live chat bubble on the published page, which is the asset a visitor sees on every single page rather than just the one with the form on it.

The Form Embed Is an Iframe

HubSpot's standard embed loads their forms script and renders the form inside an iframe:

<script src="//js.hsforms.net/forms/embed/v2.js"></script>
<script>
  hbspt.forms.create({
    portalId: "1234567",
    formId: "a1b2c3d4-0000-0000-0000-000000000000",
  });
</script>

That iframe is a separate document on a separate origin. Your page's JavaScript cannot read what the visitor typed, cannot attach anything on the way out, and styling it means fighting the boundary rather than writing CSS. The browser is doing its job correctly. It is also why the submission arrives with no memory of the page it came from unless you wire hidden fields per parameter, per form.

An OperatorStack signup is a call from your own page, through the script tag already on it:

const result = await OperatorStack.joinWaitlist({
  email: document.getElementById("email-input").value,
});

// result shape:
// {
//   success: true,
//   referral_code: "xk9p2m",
//   referral_link: "https://yoursite.com/?ref=xk9p2m"
// }

No second origin, and the visitor ID that your analytics events already use is attached automatically. The ref field is optional because the SDK reads ?ref= from sessionStorage on its own, so a visitor who arrived through a referral link is attributed without any extra code.

The Referral Loop HubSpot Has No Answer For

HubSpot has no waitlist product and no referral mechanic. Not a limited version, not a paid-tier version. There is no signup position, no referral code, and no share link anywhere in the product.

Founders rebuild it anyway: a custom property to hold a code, a workflow to generate one, another property for the count. On the free tier that spends three of your ten slots and still leaves you with no link to actually hand a visitor.

The share links are a synchronous call, no network request:

const links = OperatorStack.getShareLinks(result.referral_code, {
  text: "Joining ProjectName. Get early access here:",
});

document.getElementById("share-twitter").href = links.twitter;
document.getElementById("share-copy").dataset.url = links.copy;

The test for whether a tool fits pre-launch: can a visitor who just signed up share a link that credits them, without you building anything? If the answer involves a workflow and a custom property, the tool is a CRM being asked to do marketing.

Where HubSpot Free Wins

Plenty, and worth being specific rather than polite about it.

Sales. Deals, pipelines, tickets, call logging, and email sequences against named prospects. OperatorStack has none of this and is not building toward it. The moment you have real conversations with real buyers, HubSpot is the better tool and it is not close.

One record, many objects. Contacts linked to companies linked to deals linked to tickets, all on one timeline. OperatorStack has a flat contact list keyed on email. That is enough for pre-launch and nowhere near enough for a sales team.

Email marketing. 2,000 sends a month on the free tier with a real editor and list management. OperatorStack is not an email tool at all: you export contacts and send from wherever you already send.

The upgrade path exists. When you do have customers, HubSpot is where you were going anyway. Starting there costs you nothing but the branding.

Pricing, Honestly

PlanHubSpotOperatorStack
FreeCRM, forms, chat, email, all brandedFree tier, all core features
Paid entryAbout $15 to $20 per seat/month (Starter)Paid tiers for volume
What it buysBranding removal, more properties, more seatsHigher volume
Billing unitPer seatNot seat-based

The comparison is not really about money, because both free tiers cost zero. It is about what each free tier is shaped for. HubSpot's free plan is a sales CRM with the marketing surfaces branded, priced to convert you when you hire a second person. OperatorStack's free tier is a validation toolkit with no vendor logo on your page and no seat math, because a solo founder has no seats.

Which One to Pick

Pick HubSpot Free if you are already selling: named prospects, deals to track, calls to log, an email pipeline to run. It is a real CRM for zero dollars and the branding is a fair price for that.

Pick OperatorStack if you have a landing page and no customers yet. The specific jobs are a waitlist with referral codes, forms whose questions change every week, and analytics that tie a signup back to the page it came from, with nothing on the page announcing which vendor you used.

Running both is reasonable and common. OperatorStack collects and attributes the pre-launch signups, then you export the unified contact list into HubSpot as CSV the week you start actually selling to those people. That is the handoff the two tools are shaped for, and it is a cleaner story than trying to make either one do the other's job.

Frequently Asked Questions

Is HubSpot's free CRM really free?

Yes, and it does not expire. The free tier includes contact records, forms, live chat, and basic email marketing with no credit card. The costs are structural rather than billed: HubSpot branding appears on every form, chat widget, meeting link, and marketing email, and you are capped at roughly 2 users, 10 custom properties account-wide, and 2,000 marketing email sends a month. Removing the branding requires a paid Starter seat.

What is the 10 custom property limit in HubSpot free?

HubSpot free allows 10 custom contact properties for the entire account, not 10 per form. It does not matter whether they were created by a user, by a form, or through the API. Every extra question you ask across every form competes for the same 10 slots, which is the limit pre-launch founders hit first because early-stage forms change constantly.

Can I remove HubSpot branding from a free form or chat widget?

No. The branding on forms, the chat widget, meeting links, and marketing emails is what the free tier costs you instead of money. Removing it requires a paid Starter seat, which as of September 2026 starts at roughly $15 to $20 per seat per month, sometimes lower on annual billing promotions for new customers.

Does HubSpot free do waitlists or referral tracking?

Neither. HubSpot has no waitlist product and no referral mechanic, so there is no signup position, no referral code, and no share link. Founders usually rebuild this with a custom property plus a workflow, which on the free tier spends scarce property slots and still gives you no referral link to hand a visitor.

Should I use HubSpot free or OperatorStack before launch?

Use HubSpot free if you are already doing sales: tracking deals, logging calls, and running an email pipeline against named prospects. That is what it is built for and it is excellent at it for zero dollars. Use OperatorStack if you have a landing page and no customers yet, and what you need is a waitlist with referrals, forms whose fields change weekly, and analytics tying it together without a vendor logo on your page.