Skip to content
SSalesShiftDocs

Guides

Task-shaped walkthroughs

The API reference tells you what each endpoint accepts. These guides tell you which endpoints to call in what order to get something done, and what the system does between them that you would otherwise have to discover by accident.

Each one was written by running it. The commands are the commands that were executed, and the responses are pasted unedited — including the failures, because a guide that only shows the happy path is not much use at 2am.

What was and was not proven

Two areas of the product are fully built but have never run against a real third party. Both are marked in place, at the point of use, rather than in a footnote:

OAuth mailbox connect

PKCE, Vault-stored tokens, XOAUTH2 and refresh are all implemented, and a send completes AUTH XOAUTH2250 queued. But no Microsoft or Google mailbox has ever granted consent on this deployment, so the final SMTP hop to a real provider is unproven. See Sending email.

Call transcription and summary

No organisation here has an AI provider key, so every recording ends at status: "unavailable". Transcription has never run with real data. See Calendar and meetings.

The guides

01

Prospect to sequence

The whole loop in one page — search the shared pool, reveal a person, convert them to a contact, enrol them in a two-touch sequence and read the funnel back.

why a lead is not a contactone reveal unlocks email, phone and LinkedInskips come back with a reasonvxcli, Python, Go and TypeScript side by side

Executed: Every command and every output block executed against api.vxcloud.io on 2026-08-12.

02

Sending email

Connect a mailbox with OAuth or IMAP, send one tracked message, and follow it through open, click, reply and unsubscribe.

OAuth vs passwordstracking pixel & link wrappingmerge fieldsorg daily ceiling

Executed: Sent a real email; proved all four tracking endpoints.

03

Deliverability

The sending pool and rotation, per-inbox caps and the ramp, health scoring and auto-pause, SPF/DKIM/DMARC and blocklists, and seed-list placement testing.

least-usage rotation0.30% complaint ceilingRFC 7208 ten-lookup limitplacement tests

Executed: Live DNS and DNSBL queries; a placement test that measured INBOX.

04

Sequences

Multi-step cadences: steps and delays, send windows and days, A/B variants, enrolment, and the rules that stop a sequence.

send windowssticky A/B assignmentauth failure defersreply detection

Executed: Built, activated, enrolled and dispatched — one real send.

05

Leads and enrichment

Search the shared prospect pool with facets, spend reveal quota, crawl a company site, and convert leads into mailable contacts.

masking & reveal quotafacets and cursorsthe site crawlererasure

Executed: Spent a real reveal; ran a live crawl; converted a lead.

06

Contracts and e-sign

Draft a contract, place signature and field anchors, send it, walk the signing experience, and pull the executed PDF and audit trail.

percent-of-page anchorsconsent gateaudit trailcontent hashes

Executed: Contract fully executed; 10,485-byte PDF rendered.

07

Quotes and invoicing

Products, quotes with discount approval, acceptance by signature, automatic invoicing and subscriptions, PDFs and payment.

approval thresholdssignature = acceptanceauto-invoiceStripe BYOK

Executed: Quote → signature → invoice → partial payment, all live.

08

Calendar and meetings

Create events, send real ICS invitations that Gmail and Outlook render with working RSVP buttons, handle replies, and run WebRTC calls.

METHOD:REQUEST ICSRSVP tokenspeer-to-peer meshrecording consent

Executed: Invitation sent, ICS inspected, RSVP round-trip verified.

09

Webhooks and events

Receive delivery, bounce and complaint callbacks; verify Stripe signatures; and consume the Kafka activity stream.

event normalisationwhich receivers verify signaturesKafka topicsprojection health

Executed: All four receivers exercised; Kafka pipeline verified at zero lag.

10

Plans and self-hosting

What each of the four plans entitles you to, why a refusal is a 402 and never a 403, and how the free Self-Hosted tier registers a node of your own.

quota vs entitlementno subscription = the free tierthe node handshake402, not 403

Executed: GET /billing/plans and /billing/entitlements read back live from api.vxcloud.io on 2026-08-13.

Conventions used throughout

Every guide assumes two shell variables, set once:

export API=https://api.vxcloud.io/api/v1/salesshift
TOKEN=$(curl -s -X POST https://api.vxcloud.io/api/v1/auth/login \
  -H 'Content-Type: application/json' \
  -d '{"email":"[email protected]","password":"…"}' \
  | python -c 'import sys,json; print(json.load(sys.stdin)["access"])')

A workspace API key (X-API-Key: xc_live_…) works on the same routes as a bearer token. Anything labelled Real response or Executed is verbatim output from the running service, trimmed only where noted. Identifiers are truncated with an ellipsis for readability but are otherwise genuine.