Keep HubSpot running while you switch.
Contacts, companies and deals land in their own tables and refresh every six hours. Add your own columns beside them.
Contacts, companies and deals land in their own tables and refresh every six hours. Add your own columns beside them.
Drop in a CSV or Excel file. Columns map to your properties, and anything new becomes one.
HubSpot keeps syncing while you switch. Salesforce comes in from its export, with columns mapped for you.
Two-way email on the records it's about, plus your calendar and booking pages.
A meeting link on every booking, and a bot that joins to record the call.
Buy a number and take calls in Custral, transcribed while you talk.
Channel messages become conversations you answer from Custral. Ask Stella right in Slack.
Customers and invoices sync into tables you can build on.
A pull request's status, on the record it's for.
Reach your records from your own code, or from the AI tools your team already uses.
import { Custral } from "@custral/sdk";
const custral = new Custral({ apiKey: process.env.CUSTRAL_API_KEY });
// put your billing plan on the company
await custral.records.update({
object: "companies",
id: company.id,
fields: { plan: "Scale", seats: 40 },
});
// hear about it when a teammate changes a record
custral.on("record.updated", (event) => {
// …your logic, on your servers
});# list deals
curl https://api.custral.com/v1/records/deals?limit=50 \
-H "Authorization: Bearer $CUSTRAL_API_KEY"
# update a company
curl -X PATCH https://api.custral.com/v1/records/companies/$COMPANY_ID \
-H "Authorization: Bearer $CUSTRAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"fields": {"plan": "Scale", "seats": 40}}'# make a scoped key and print the config
$ custral mcp
{
"mcpServers": {
"custral": {
"type": "http",
"url": "https://api.custral.com/v1/mcp",
"headers": { "Authorization": "Bearer sk_live_…" }
}
}
}Plans from $39 a seat a month, billed annually. See pricing