Skip to main content

Overview

HubSpot is where your leads come from. Once connected, CallPrep watches for newly created contacts and, for each one:
  1. Checks it against your Autopilot filters — does anyone want this lead?
  2. Researches the person and their company, but only if a filter matches
  3. Enrols the lead into that Autopilot’s sequence
  4. Writes every message that goes out back onto the HubSpot contact timeline
  5. Watches the contact for a reason to stop — a reply, a logged call, a booked meeting, or a property you nominate
There is nothing to schedule and no sync to run. A contact created in HubSpot reaches your Autopilots within about a minute.
Changed in 2026. The HubSpot integration used to pull contacts on a schedule, filter them by lead score, and write results into custom cp_ contact properties. That is gone. Leads now arrive as they are created, who gets contacted is decided by each Autopilot’s own filter, and results are written to the contact timeline instead of custom fields. Properties created by the old version are left untouched in your portal — nothing fills them any more, and you can delete them in HubSpot if you want to.

Before you start

  • A product. Everything runs on your product description — it is what the AI researches against and writes from. Add it under Settings → Product.
  • A HubSpot account where you can approve app installs. If you cannot install apps yourself, your HubSpot admin has to run the connect step.

Setup

Step 1 — Connect HubSpot

In the dashboard, go to Integrations → HubSpot, pick the product you want to integrate, and click Connect HubSpot. Approve the request in HubSpot and you are returned to CallPrep with the connection showing as Connected.
During the install HubSpot shows a yellow banner saying the app has not been reviewed or approved by HubSpot, and asks you to confirm before finishing. That is what HubSpot shows for every app not yet listed in its Marketplace — our listing is in progress. Click through to continue.
One product per connection. The connection is tied to the product you picked. To point it at a different product, disconnect and connect again.

Step 2 — Decide who gets contacted

The connection itself contacts nobody. That decision lives in Dashboard → Autopilot, where each Autopilot has its own lead filter built from your HubSpot contact properties — for example Lifecycle stage is customer, or Country is Poland or Germany. Two account-wide filters sit above that: Both are checked before anything else, so a skipped contact costs no research and no credit.

Step 3 — Connect a channel and turn an Autopilot on

Messages need somewhere to send from: LinkedIn, Email, WhatsApp or Telegram.

Permissions CallPrep asks for

CallPrep never edits your contacts. The write permission is used for timeline activity and nothing else — no property is changed, and no deal, pipeline, workflow or list is touched.
If you connected HubSpot a long time ago and leads are not arriving on a portal shared with colleagues, click Reconnect. A permission added after your connection was made is not granted retroactively, and without owner access every lead on a shared portal is skipped.

What lands in HubSpot

For every message that actually goes out, CallPrep logs it on the contact:
  • Emails appear as an Email activity on the timeline, with the subject and body that were sent
  • LinkedIn invites and messages, WhatsApp and Telegram messages appear as a Note
Notes say whether the message was written and sent by the Autopilot or typed by hand, so a colleague reading the record knows what they are looking at.

When the outreach stops

A sequence should end the moment a human takes over. CallPrep reads these signals from HubSpot, and each one can be switched on per Autopilot: Stop conditions are read from HubSpot with your own connection, right before each message goes out and again between messages — so an answer that arrives overnight is seen before the next message is sent.

The waiting queue

Contacts are often created before the data that qualifies them: someone signs up, the contact is created, and the onboarding answers your filter needs arrive three minutes later. So a contact that matches nothing yet is not thrown away and not researched. It waits in the queue and is re-checked as its CRM data arrives. If nothing matches within the wait time, it is abandoned: never researched, no credit spent.
  • The wait time is set in Dashboard → Autopilot → Settings (2 to 48 hours, 6 hours by default)
  • The queue is visible at the bottom of the Autopilot list — Queue — N waiting
  • If you have a fallback Autopilot, it gets the final check at the end of the wait and takes any lead its own filter matches

Several reps on one HubSpot portal

Each rep connects HubSpot from their own CallPrep account and connects their own channels. A new contact is routed to the CallPrep account of the person who owns it in HubSpot, and the outreach goes out from that person’s LinkedIn seat or mailbox. Nobody sends on anyone else’s behalf.

Credits

One credit per researched contact — the same pool as the API and the Chrome extension.
  • A contact that matches no Autopilot and is abandoned costs nothing
  • A contact skipped by Addresses to skip or Excluded domains costs nothing
  • With Research each contact only once on (Settings → Outreach, on by default), a contact re-created or re-fired by HubSpot is not researched twice
See Credits for monthly limits and reset dates.

Disconnecting

Integrations → HubSpot → Disconnect removes CallPrep’s access. New contacts stop reaching your Autopilots immediately; leads already enrolled keep running on what CallPrep already knows about them, minus any stop signal it can no longer read. Everything already written to your HubSpot timeline stays.

Troubleshooting


Frequently asked questions

No. Lead score filtering belonged to the old scheduled sync and is gone. Each Autopilot now has its own filter over any contact properties you like — you can still filter on a score property if you have one, using greater than or between.
Usually inside a minute. If it does not match a filter yet it goes into the queue and is re-checked every minute for the first quarter of an hour, then every few minutes, until your wait time runs out.
No. It reads contacts and writes activity onto the contact timeline. It never edits contact properties, deals, pipelines, workflows or lists.
They stay in your portal exactly as they are. Nothing has filled them since the scheduled sync was retired, so they are safe to delete in HubSpot if you want the space back. Results now live on the contact timeline instead.
Not from one CallPrep account — the connection carries one product, and switching products means disconnecting and connecting again. Separate CallPrep accounts can each connect the same portal with their own product.
Because CallPrep is not yet listed in the HubSpot App Marketplace — the banner and the extra confirmation dialog appear for every unlisted app, whoever built it. Our domain is verified with HubSpot and the listing is in progress. The install is a standard OAuth grant and you can revoke it in HubSpot at any time.
Open Dashboard → Autopilot → Queue. Waiting means the wait time has not run out and the lead is still being re-checked; Abandoned means it never matched a filter and was dropped without spending a credit. From the abandoned list you can still send a lead to an Autopilot by hand.
Yes — every contact created in the portal is treated the same way, including contacts created by an import. Before loading an old list, check your Autopilot filters, and use Excluded domains for anything you do not want touched.
Yes. Open the Autopilot’s Activity, find the lead and close it — the remaining messages are cancelled and nothing else about the Autopilot changes.
No. Connecting the app is the whole setup. Do not build a workflow to push contacts to CallPrep — new contacts already arrive on their own, and a workflow that re-creates or re-fires contacts can only cause duplicate work.

Need help?

Contact us at hello@callprep.app and we’ll get back to you within one business day.