Velo is in open beta — free while we build, no credit card.
Built in the open

Everything we’ve shipped, dated.

Velo launched this year and has no paying customers, so it has no testimonials and no usage figures worth quoting. The build is the only proof there is. Every entry below is a real commit on the repository this product runs from, described in the words the commit used — and the roadmap underneath includes the things we have decided not to build.

45
Changes logged
10
Release days
0
Entries that didn’t ship

What’s next, and what isn’t coming

Being finished now

Started, not done. Every one of these is a gap in the hosted product today.

  • Live Stripe billing

    Velo bills through its own Stripe account and the webhook is verified against production, but on test keys. Live products and prices are the remaining step.

  • Texting and calling switched on

    The messaging stack, the voice agent and A2P registration are built and tested; the Twilio credentials are not yet on the production API, so nothing phone-shaped works in the hosted product today.

  • Migration guides beyond Go HighLevel

    The importer reads a real Go HighLevel export. Guides for other platforms mean describing their export screens accurately, which we will not write from memory.

Next

Committed to, not started. No dates, because a date we miss is worse than none.

  • Single sign-on

    Email and password only today. SSO needs an identity-provider integration and a redesign of the login flow, so it is its own piece of work rather than a settings field.

  • Contracts and e-sign, estimates, coupons and gift cards

    Commerce gaps against Go HighLevel that are wiring rather than architecture.

  • One-click upsells

    Blocked on stored payment methods, which is a compliance decision as much as a code one.

  • Ad manager, and Google and Meta ad reporting

    Waiting on reviewed developer applications with those platforms — not something a key unlocks.

Not planned

Asked for, and answered no. If one of these is why you would buy, buy the other thing.

  • An app marketplace

    An ecosystem play that needs a scale Velo does not have. Snapshots and the template library already cover the need it would serve.

  • A university or certification programme

    Downstream of complexity. We would rather the product not need one.

  • A hosted migration service

    You import by CSV and by Go HighLevel export. Doing it for you is a services business, not a product.

The log

Onboarding you can follow, help where you are, and a carrier rule that stops silent failures

  • US texts from an unregistered number are refused, not silently dropped

    5173946

    American carriers filter A2P traffic from numbers that are not registered under 10DLC — but the send is accepted and billed first, so the message reads as sent and never arrives. Velo now checks the registration before handing anything to the carrier and refuses with an explanation instead.

    apps/api/src/services/messaging/a2p.service.ts
  • A carrier registration screen that admits what it cannot do for you

    e1795e9

    Brand and campaign registration lives in messaging settings, with the review times stated. Velo cannot shorten them, and the guide says so.

    apps/web/src/pages/settings/comms/PhoneNumbersSettings.tsx
  • Two launchpads, because there are two levels of setup

    eef9e59

    One flat checklist asked agency-level questions once per client and never asked the agency for its logo, a reusable snapshot or a payment processor. There is now a launchpad per level, each derived from real account state rather than a box you tick.

    apps/api/src/services/onboarding/checklist.service.ts
  • A command palette, and a sidebar grouped instead of flat

    f941043

    Thirty navigation items in one list is a list nobody reads. They are grouped by outcome now, and ⌘K reaches any of them, plus a contact or a settings tab, in two keystrokes.

    apps/web/src/components/layout/CommandPalette.tsx
  • In-app help that answers "help me with THIS screen"

    39d6d32

    A drawer on every screen showing the guide for the route you are on, searchable across all of them, without leaving the page you were stuck on.

    apps/web/src/components/layout/HelpDrawer.tsx
  • Customer-facing guides, written for the product as built

    cf465bc

    A public documentation set at /docs, bound by test to the onboarding checklist so a step can never point at a guide that does not exist.

    packages/docs/src/index.ts
  • Import a real Go HighLevel export, not a toy CSV

    366b20c

    The importer now reads the column names GHL actually exports — including the ones it renames between products — instead of the tidy headers a hand-made sample would have.

    apps/api/src/services/migration/ghl-columns.ts
  • Priced under Go HighLevel, and billable annually

    fead7c3

    $49, $149 and $399 a month, or ten months of that for a year. The marketing page and the enforced plan catalogue are asserted against each other, so the site cannot sell a limit the API refuses.

    apps/api/src/services/billing/plans.ts
  • Affiliate commission is clawed back on a refund or chargeback

    e779dd3

    A referral that refunds used to leave the commission standing. The Stripe webhook now handles charge.refunded and charge.dispute.created and reverses it.

    apps/api/src/services/affiliate/affiliate-commission.service.ts

A tenant boundary that holds, plus prospecting, lead scoring and refunds

  • A sub-account login is pinned to its own sub-account

    e52e100

    A user scoped to one client could read and edit another client of the same agency by changing one header. The resolver now refuses a mismatched header outright. The isolation tests only ever pitted two agencies against each other, which is why it survived; the sibling case is covered now.

    apps/api/src/middleware/tenant.ts
  • Audit a local business, then use the report to open the door

    cd4462c

    A prospecting audit that scores a real website and turns the result into the first line of an outreach conversation.

    apps/api/src/services/prospecting/audit.service.ts
  • Lead scoring rules that actually move the score

    eb48114

    Rules over contact activity, evaluated on the events as they happen, with the threshold available as a workflow trigger.

    apps/api/src/routers/lead-scoring.router.ts
  • Refund an order, fully or in part

    da9e033

    Refunds against Stripe with the order and invoice kept in step, rather than a payment record that quietly disagrees with the money.

    apps/api/src/services/payments/refund.service.ts
  • A media library, and AI assistants in more places

    3237ad5

    Uploaded assets in one searchable place, reusable agent templates, and the copy assistant available where copy is actually written.

    apps/api/src/routers/assets.router.ts
  • A missing AI key is a clear 503, not a 500 that names an environment variable

    9175641

    Every AI route now says "not switched on here" instead of leaking configuration. The guard runs after request validation, so a malformed request is still a 400 everywhere.

    apps/api/src/lib/errors.ts

An open API, a report builder, memberships, a client portal and a store

  • Scoped API tokens, /api/v1, and signed outbound webhooks

    c8e9f7c

    Tokens with per-resource scopes, a versioned public API over contacts, opportunities, appointments and webhooks, and ten outbound events signed with HMAC.

    apps/api/src/routers/v1.router.ts
  • A report engine with saved reports and scheduled delivery

    6744def

    Group, filter and aggregate over eight data sources, save the result, and have it emailed on a schedule.

    apps/api/src/routers/reports.router.ts
  • Courses, offers, communities and certificates

    d2e723d

    A membership product: drip-scheduled lessons, paid offers, discussion spaces and a certificate on completion.

    apps/api/src/routers/courses.router.ts
  • A client portal with passwordless sign-in

    2104204

    Clients see their own invoices, appointments, courses and conversations, without an account to administer.

    apps/api/src/routers/portal.router.ts
  • A store with a server-side basket and multi-item checkout

    226fd41

    Products with variants and stock, a public catalogue, a shop section droppable on any page, and fulfilment tracking behind it.

    apps/api/src/services/store/cart.service.ts
  • Stepped surveys, scored quizzes, a blog and trackable QR codes

    2cb650a

    Four public surfaces that all publish through the same page pipeline — including QR codes whose destination stays editable after the code is printed.

    apps/api/src/routers/surveys.router.ts

Templates, snapshots, split tests, and SaaS mode

  • Agency plans, self-serve signup, dunning and suspension

    47d29ad

    Resell Velo under your own brand at your own prices, on your own Stripe account: a signup page per agency, failed-payment chasing, and suspension that actually suspends.

    apps/api/src/routers/public.router.ts
  • A template library with publish, install and trending

    3ba2135

    Share a page or funnel as a template, install someone else’s, and see what is being installed.

    apps/api/src/services/templates/library.service.ts
  • Capture a sub-account's configuration and load it elsewhere

    50cfdc1

    Snapshots: take a working client account as a document, and stamp the next one out of it.

    apps/api/src/services/snapshots/document.ts
  • A/B split testing on a funnel step

    e4b3c60

    Two variants on one step, traffic split server-side so the assignment survives a page reload.

    apps/api/src/services/funnels/split-test.service.ts
  • Support impersonation that is time-boxed, and a revoke that means something

    cd344a2

    Staff access to an account expires on its own, is logged, and can be killed mid-session.

    apps/api/src/lib/tokens.ts
  • Import a live page by URL, behind an SSRF guard

    cac175e

    Point Velo at a published page and get an editable copy — with the fetch refused for anything resolving inside our own network.

    apps/api/src/services/pages/import.service.ts

The object model, payments, usage metering, and a move to DigitalOcean

  • Custom objects and typed associations

    6a3241f

    Model what the business actually sells — properties, policies, matters — as first-class records, related to contacts and to each other.

    apps/api/src/routers/custom-objects.router.ts
  • Smart lists, bulk actions and custom values

    b38266d

    Saved queries that re-evaluate themselves, over contacts, companies and opportunities alike.

    apps/api/src/services/objects/smart-list.service.ts
  • Companies, tasks and notes

    1797554

    The three objects a CRM is unusable without, added before anything was built on top of them.

    apps/api/src/routers/companies.router.ts
  • Products, invoices and orders on a provider interface

    1550adf

    Payments behind an interface rather than hard-wired to one processor, so a second provider is an implementation and not a rewrite.

    apps/api/src/routers/payments.router.ts
  • Usage metered at the point of send, with a wallet and your markup

    97b922b

    Texts, calls and AI are metered as they happen against a prepaid wallet. The markup multiplier is yours — Velo takes no commission on the spread.

    apps/api/src/routers/usage.router.ts
  • Deploys moved from AWS to DigitalOcean App Platform

    8c71968

    Both apps build from the repository on push, with managed Postgres and Valkey behind them.

    .do/app.yaml

Audit log retention

  • Audit entries expire on a policy you set

    5939620

    Opt-in retention with a safe default: nothing is deleted unless an agency asks for it to be.

    apps/api/src/services/audit/audit.service.ts

The affiliate program, and a platform-wide audit log

  • A full affiliate program — tracking, commissions, payouts and a portal

    4564fc1

    Two-tier referrals attributed at registration, commissions accrued per payment, and a portal an affiliate signs into.

    apps/api/src/routers/affiliate-admin.router.ts
  • Affiliate payouts through Stripe Connect

    81ceb69

    Onboarding into an Express account so payouts leave without a spreadsheet in the middle.

    apps/api/src/services/affiliate/affiliate-connect.service.ts
  • A global audit log, including admin and impersonation actions

    3de956a

    Who did what, on whose account, from which session — the staff actions included.

    apps/api/src/routers/platform.router.ts

Review sync

  • Facebook and Google reviews pulled in on a schedule

    b79b745

    Reputation stops being a page you paste screenshots into.

    apps/api/src/services/reputation/sync.service.ts

Billing, missed-call text-back, forms, campaigns and social publishing

  • Stripe subscription billing, and plan limits that are enforced

    399e6cd

    Checkout, the billing portal, a signature-verified idempotent webhook, and a middleware that caps sub-accounts and users per plan instead of a number on a marketing page.

    apps/api/src/services/billing/billing.service.ts
  • Missed-call text-back

    3534bff

    An unanswered inbound call sends a text back automatically, creates the contact if it is new, and fires a workflow.

    apps/api/src/routers/missed-call.router.ts
  • A form and survey builder, with hosted and embedded rendering

    d975ad9

    Build it once, host it at a URL or embed it on somebody else’s site.

    apps/api/src/routers/forms.router.ts
  • Email and SMS broadcast campaigns

    20967f9

    Send to a segment, on a schedule, with the delivery worked through a queue rather than a request.

    apps/api/src/services/campaigns/campaigns.service.ts
  • A social planner that composes, schedules and publishes

    cf4d011

    Queued posts published by a background worker on the account’s own connections.

    apps/api/src/services/social/social.service.ts
  • Public booking, reminders and round-robin assignment

    5aebdeb

    A booking page against real availability, with reminders that go out before the appointment rather than after it.

    apps/api/src/services/appointments/availability.service.ts

The first deploy

  • A super-admin console and a public site, live on getvelocrm.com

    e6bc98c

    The first commit anybody outside the build could look at.

    apps/api/src/routers/platform.router.ts

This is the whole record.

No selective highlights, no roadmap items dressed as features. If it is not on this page, it is not built.