@revfleet/hscli 0.8.7 → 0.8.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +204 -0
- package/CONTRIBUTING.md +120 -0
- package/README.md +14 -6
- package/brand/readme-hero.svg +25 -0
- package/dist/cli.js +10 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/account/index.js +5 -6
- package/dist/commands/account/index.js.map +1 -1
- package/dist/commands/api/index.js +43 -3
- package/dist/commands/api/index.js.map +1 -1
- package/dist/commands/auth/index.js +32 -6
- package/dist/commands/auth/index.js.map +1 -1
- package/dist/commands/cms/hubdb.js +31 -0
- package/dist/commands/cms/hubdb.js.map +1 -1
- package/dist/commands/cms/index.js +27 -0
- package/dist/commands/cms/index.js.map +1 -1
- package/dist/commands/cms/source-code.js +21 -0
- package/dist/commands/cms/source-code.js.map +1 -1
- package/dist/commands/communication-preferences/index.js +11 -12
- package/dist/commands/communication-preferences/index.js.map +1 -1
- package/dist/commands/crm/shared.d.ts +1 -0
- package/dist/commands/crm/shared.js +3 -4
- package/dist/commands/crm/shared.js.map +1 -1
- package/dist/commands/events/index.js +7 -8
- package/dist/commands/events/index.js.map +1 -1
- package/dist/commands/marketing/index.js +3 -4
- package/dist/commands/marketing/index.js.map +1 -1
- package/dist/commands/settings/index.js +12 -13
- package/dist/commands/settings/index.js.map +1 -1
- package/dist/core/http.d.ts +27 -0
- package/dist/core/http.js +87 -18
- package/dist/core/http.js.map +1 -1
- package/dist/core/plugins.d.ts +5 -2
- package/dist/core/plugins.js +18 -1
- package/dist/core/plugins.js.map +1 -1
- package/dist/core/telemetry-context.d.ts +13 -0
- package/dist/core/telemetry-context.js +30 -0
- package/dist/core/telemetry-context.js.map +1 -0
- package/dist/mcp/hubspot-modules.d.ts +30 -0
- package/dist/mcp/hubspot-modules.js +305 -0
- package/dist/mcp/hubspot-modules.js.map +1 -0
- package/dist/mcp/server.d.ts +2 -0
- package/dist/mcp/server.js +30 -26
- package/dist/mcp/server.js.map +1 -1
- package/docs/ARCHITECTURE.md +39 -0
- package/docs/CAPABILITY_LIBRARY.md +638 -0
- package/docs/CMS_SETUP.md +349 -0
- package/docs/COMMAND_COMPATIBILITY.md +24 -0
- package/docs/COMMAND_TREE.md +183 -0
- package/docs/COMMERCE_SETUP.md +400 -0
- package/docs/COMPARISON.md +146 -0
- package/docs/COOKBOOK.md +800 -0
- package/docs/INTEGRATIONS_NOTIFICATIONS_SETUP.md +352 -0
- package/docs/MARKETING_SETUP.md +503 -0
- package/docs/MCP.md +171 -0
- package/docs/OPERATIONAL_PLAYBOOKS.md +322 -0
- package/docs/OPERATIONS_SETUP.md +362 -0
- package/docs/PLUGIN_GUIDE.md +158 -0
- package/docs/POLICY_EXAMPLE.json +57 -0
- package/docs/PORTAL_SETUP.md +683 -0
- package/docs/PUBLISHING.md +154 -0
- package/docs/RELEASE_GOVERNANCE.md +34 -0
- package/docs/REPORTING_SETUP.md +310 -0
- package/docs/ROADMAP-DATE-BASED-API.md +103 -0
- package/docs/ROADMAP_PHASE1_TO_3.md +96 -0
- package/docs/SAFETY_MODEL.md +37 -0
- package/docs/SALES_SETUP.md +369 -0
- package/docs/SERVICE_SETUP.md +403 -0
- package/docs/TESTING_PLAN.md +89 -0
- package/docs/TIERS.md +320 -0
- package/docs/TUTORIALS/audit-portal-writes.md +150 -0
- package/docs/TUTORIALS/secure-agent-writes.md +177 -0
- package/docs/TUTORIALS/trace-replay-repro.md +147 -0
- package/docs/WHY_HOW_WHAT.md +81 -0
- package/package.json +7 -2
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# ROADMAP: Phase 1 to Phase 3
|
|
2
|
+
|
|
3
|
+
> See also: [ARCHITECTURE.md](ARCHITECTURE.md) · [SAFETY_MODEL.md](SAFETY_MODEL.md) · [RELEASE_GOVERNANCE.md](RELEASE_GOVERNANCE.md) · [WHY_HOW_WHAT.md](WHY_HOW_WHAT.md)
|
|
4
|
+
|
|
5
|
+
## Scope
|
|
6
|
+
This roadmap defines execution from foundational CLI to production-ready HubSpot operations with strict safety and reliability gates.
|
|
7
|
+
|
|
8
|
+
## Phase 1 (✅ Complete): Core CRM + Safety Baseline
|
|
9
|
+
|
|
10
|
+
### Delivered
|
|
11
|
+
- CRM object commands (contacts, companies, deals, tickets): list/get/search/create/update/delete/merge + batch operations
|
|
12
|
+
- Pagination/filter flags baseline on object list/search commands
|
|
13
|
+
- Properties commands: list/get/create/update with strict object-type allowlists
|
|
14
|
+
- Associations commands: list/create/remove
|
|
15
|
+
- Owners read command: list with pagination/filter flags
|
|
16
|
+
- Pipelines read commands: list/get (strictly scoped to deals/tickets)
|
|
17
|
+
- Custom object support: schema + record CRUD/search
|
|
18
|
+
- Engagement support: notes, calls, tasks, emails, meetings
|
|
19
|
+
- Incremental sync utility (`crm sync pull`)
|
|
20
|
+
- Domain command groups: marketing, forms, files, cms, workflows, service
|
|
21
|
+
- Raw API command (`api request`) for controlled endpoint coverage
|
|
22
|
+
- Unified write safety middleware (`maybeWrite`):
|
|
23
|
+
- `--dry-run` previews writes
|
|
24
|
+
- `--force` required for live write execution
|
|
25
|
+
- Policy middleware:
|
|
26
|
+
- `--policy-file` profile-based write/delete rules
|
|
27
|
+
- `--change-ticket` enforcement where required
|
|
28
|
+
- JSON output consistency and redaction controls
|
|
29
|
+
- Profile isolation support via `HSCLI_HOME` (environment-isolated auth store)
|
|
30
|
+
- OAuth-oriented auth tooling (`oauth-url`, `oauth-exchange`, token introspection)
|
|
31
|
+
- Request telemetry + correlation ID support
|
|
32
|
+
- Zod response schema validation with graceful degradation (`HSCLI_STRICT_SCHEMAS=1` for strict mode)
|
|
33
|
+
- ESLint with typescript-eslint (0 errors, integrated into `release:verify`)
|
|
34
|
+
|
|
35
|
+
## Phase 2 (✅ Complete): Reliability and Operational Hardening
|
|
36
|
+
|
|
37
|
+
### Delivered
|
|
38
|
+
- Hublet-aware API routing for EU1/AP1 portals (`createClient(profile)`, `doctor hublet-check`)
|
|
39
|
+
- Retry/backoff with exponential delay on 429 + 5xx (max 3 retries, Retry-After header respect)
|
|
40
|
+
- Rate limit observation (rolling + daily quotas, pacing, daily exhaustion guard)
|
|
41
|
+
- Idempotency keys auto-generated for all write operations
|
|
42
|
+
- Encrypted token vault (AES-256-GCM, PBKDF2 600k iterations) — transparent via auth.ts
|
|
43
|
+
- `hscli auth encrypt` / `hscli auth decrypt` CLI commands
|
|
44
|
+
- `HSCLI_VAULT_PASSPHRASE` env var for automated workflows
|
|
45
|
+
- Permission profiles (`hscli auth set-mode <profile> read-only|read-write`)
|
|
46
|
+
- Enforced at HTTP client level before any request
|
|
47
|
+
- Hardened test matrix: 155 tests across 9 suites
|
|
48
|
+
- Unit: hublet detection, schemas, permissions, vault
|
|
49
|
+
- Bugfix regression: vault bypass, 404 remap, safeJson, sync state
|
|
50
|
+
- Integration: MCP tools (32 tests), CLI commands (34 tests)
|
|
51
|
+
- Contract: sandbox smoke tests (10, opt-in via `HSCLI_ENABLE_SANDBOX_CONTRACT=1`)
|
|
52
|
+
- `npm audit` integrated into release:verify
|
|
53
|
+
|
|
54
|
+
### Exit criteria status
|
|
55
|
+
- ✅ Zero unredacted secret leak in logs/errors (redaction controls + vault)
|
|
56
|
+
- ✅ Write-path controls enforced across all mutating endpoints (policy + permission profiles)
|
|
57
|
+
- ⚠️ Stable e2e suite against HubSpot sandbox — tests exist but opt-in, not CI-automated yet
|
|
58
|
+
- ⚠️ Domain coverage validated against production-safe contract suite — partial
|
|
59
|
+
|
|
60
|
+
## Phase 3 (✅ Complete): Production Readiness + Distribution
|
|
61
|
+
|
|
62
|
+
### Completed
|
|
63
|
+
- Checksums via `npm run release:checksums`
|
|
64
|
+
- `release:verify` pipeline: typecheck → lint → test → build → checksums
|
|
65
|
+
- npm audit in release gates
|
|
66
|
+
- CI/CD pipeline (GitHub Actions): lint + test + build on push/PR (Node 20+22 matrix)
|
|
67
|
+
- Cookbook / examples documentation per command (`docs/COOKBOOK.md`)
|
|
68
|
+
- Signed release artifacts + provenance attestation (GitHub Actions release workflow)
|
|
69
|
+
- Supply-chain automation (Dependabot: npm weekly + GitHub Actions weekly)
|
|
70
|
+
- P1/P2 bug fixes: vault bypass enforcement, 404 record-vs-endpoint disambiguation, safeJson body handling, sync cursor/mode isolation
|
|
71
|
+
- Plugin/extension interface (`src/core/plugins.ts`, `docs/PLUGIN_GUIDE.md`)
|
|
72
|
+
- HSCLI_PLUGINS env var allowlist (default) + opt-in node_modules keyword auto-discovery via HSCLI_PLUGIN_AUTO_DISCOVER
|
|
73
|
+
- PluginContext exposes createClient, maybeWrite, printResult, CliError
|
|
74
|
+
- Safety gates (dry-run/force/policy) enforced for plugin writes
|
|
75
|
+
- Operational playbooks for incident response (`docs/OPERATIONAL_PLAYBOOKS.md`)
|
|
76
|
+
|
|
77
|
+
### Remaining
|
|
78
|
+
- (none — Phase 3 complete)
|
|
79
|
+
|
|
80
|
+
### Exit criteria
|
|
81
|
+
- Reproducible build from clean checkout
|
|
82
|
+
- CI green on every PR
|
|
83
|
+
- Signed release + checksum published per version
|
|
84
|
+
- Production launch checklist complete (security, reliability, observability)
|
|
85
|
+
|
|
86
|
+
## Risk Register (Top Items)
|
|
87
|
+
- Token leakage risk in logs/errors — **mitigated** (redaction + vault encryption)
|
|
88
|
+
- Unsafe write execution without human confirmation — **mitigated** (--force gate + permission profiles)
|
|
89
|
+
- Command drift from HubSpot API contracts — **mitigated** (Zod schema validation)
|
|
90
|
+
- Dependency compromise in npm supply chain — **mitigated** (npm audit in CI + Dependabot weekly)
|
|
91
|
+
|
|
92
|
+
## Execution Order
|
|
93
|
+
1. ~~Finish Phase 1 gaps~~ ✅
|
|
94
|
+
2. ~~Implement Phase 2 reliability hardening~~ ✅
|
|
95
|
+
3. ~~Lock Phase 3 release and governance controls~~ ✅ (core items)
|
|
96
|
+
4. ~~Operational playbooks + plugin interface~~ ✅
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Safety model
|
|
2
|
+
|
|
3
|
+
> See also: [ARCHITECTURE.md](ARCHITECTURE.md) · [COMMAND_COMPATIBILITY.md](COMMAND_COMPATIBILITY.md) · [TESTING_PLAN.md](TESTING_PLAN.md)
|
|
4
|
+
|
|
5
|
+
## Principles
|
|
6
|
+
1. **No silent mutation**: write commands require explicit invocation and can be simulated via `--dry-run`.
|
|
7
|
+
2. **Deterministic output**: `--json` mode emits structured envelopes for CI/automation.
|
|
8
|
+
3. **Least secret exposure**: tokens are profile-scoped in a local config file and never printed by default.
|
|
9
|
+
4. **Policy-first execution**: optional policy file can deny writes/deletes or require change-ticket context.
|
|
10
|
+
5. **Graceful API resilience**: timeout + retry skeleton handles transient failures and rate limits.
|
|
11
|
+
|
|
12
|
+
## Dry-run Contract
|
|
13
|
+
- Applies to all mutating commands routed through `maybeWrite`.
|
|
14
|
+
- In dry-run mode, command returns:
|
|
15
|
+
- target endpoint
|
|
16
|
+
- method
|
|
17
|
+
- payload
|
|
18
|
+
- `dryRun: true`
|
|
19
|
+
- No network mutation request is sent.
|
|
20
|
+
|
|
21
|
+
## Rate Limit & Retry Baseline
|
|
22
|
+
- Retry on: `429`, `5xx`, and network errors.
|
|
23
|
+
- Honor `Retry-After` header when present.
|
|
24
|
+
- Use capped exponential backoff.
|
|
25
|
+
- Enforce request timeout (`30s`) to prevent hung command invocations.
|
|
26
|
+
- Surface retry exhaustion as `HTTP_RETRY_EXHAUSTED`.
|
|
27
|
+
|
|
28
|
+
## Profiles & Access
|
|
29
|
+
- Profiles isolate tokens per environment/workspace.
|
|
30
|
+
- `--profile` allows explicit target account selection.
|
|
31
|
+
- Missing token fails fast with guidance.
|
|
32
|
+
|
|
33
|
+
## Safe Defaults
|
|
34
|
+
- Default limit for list/search is conservative (`10`).
|
|
35
|
+
- Explicit JSON payload required for create/update.
|
|
36
|
+
- Unknown command errors are structured and non-destructive.
|
|
37
|
+
- API paths are constrained to approved HubSpot scopes.
|
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
# Sales Setup Guide
|
|
2
|
+
|
|
3
|
+
> See also: [PORTAL_SETUP.md](PORTAL_SETUP.md) · [MARKETING_SETUP.md](MARKETING_SETUP.md) · [COMMERCE_SETUP.md](COMMERCE_SETUP.md) · [REPORTING_SETUP.md](REPORTING_SETUP.md)
|
|
4
|
+
|
|
5
|
+
Complete configuration guide for HubSpot Sales Hub settings. Covers deals pipeline, quotes, meetings, sequences, playbooks, forecasting, and sales automation.
|
|
6
|
+
|
|
7
|
+
**Prerequisites:**
|
|
8
|
+
- Portal authenticated (`hscli auth whoami`)
|
|
9
|
+
- Private App scopes: `crm.objects.deals.read/write`, `sales-email-read`, `crm.schemas.deals.read/write`
|
|
10
|
+
- Users & Teams configured (see [PORTAL_SETUP.md](./PORTAL_SETUP.md))
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## 1. Deals & Pipeline
|
|
15
|
+
|
|
16
|
+
**Where:** Settings > Objects > Deals
|
|
17
|
+
|
|
18
|
+
### 1.1 Pipeline Configuration
|
|
19
|
+
|
|
20
|
+
| Setting | What to configure | Why it matters |
|
|
21
|
+
|---------|-------------------|----------------|
|
|
22
|
+
| Pipeline name | Name for each sales process (e.g., "New Business", "Renewals") | Separate pipelines for different sales motions |
|
|
23
|
+
| Deal stages | Ordered stages with win probability % | Tracks deal progression, powers forecasting |
|
|
24
|
+
| Stage probability | Win likelihood per stage (e.g., Discovery = 20%, Proposal = 60%) | Weighted pipeline value and forecasting |
|
|
25
|
+
| Stage requirements | Required properties before moving to next stage | Data quality and process enforcement |
|
|
26
|
+
| Multiple pipelines | Separate pipelines for different deal types | Each sales motion has unique stages |
|
|
27
|
+
|
|
28
|
+
**hscli:**
|
|
29
|
+
```bash
|
|
30
|
+
# List all pipelines
|
|
31
|
+
hscli crm pipelines list deals
|
|
32
|
+
|
|
33
|
+
# Get pipeline details (stages, probabilities)
|
|
34
|
+
hscli crm pipelines get deals <pipelineId>
|
|
35
|
+
|
|
36
|
+
# Create a new pipeline
|
|
37
|
+
hscli crm pipelines create deals --data '{
|
|
38
|
+
"label": "New Business",
|
|
39
|
+
"displayOrder": 0,
|
|
40
|
+
"stages": [
|
|
41
|
+
{"label": "Appointment Scheduled", "displayOrder": 0, "metadata": {"probability": "0.2"}},
|
|
42
|
+
{"label": "Qualified to Buy", "displayOrder": 1, "metadata": {"probability": "0.4"}},
|
|
43
|
+
{"label": "Presentation Scheduled", "displayOrder": 2, "metadata": {"probability": "0.6"}},
|
|
44
|
+
{"label": "Decision Maker Bought-In", "displayOrder": 3, "metadata": {"probability": "0.8"}},
|
|
45
|
+
{"label": "Contract Sent", "displayOrder": 4, "metadata": {"probability": "0.9"}},
|
|
46
|
+
{"label": "Closed Won", "displayOrder": 5, "metadata": {"probability": "1.0"}},
|
|
47
|
+
{"label": "Closed Lost", "displayOrder": 6, "metadata": {"probability": "0.0"}}
|
|
48
|
+
]
|
|
49
|
+
}' --force
|
|
50
|
+
|
|
51
|
+
# Update a pipeline stage
|
|
52
|
+
hscli crm pipelines stages update deals <pipelineId> <stageId> --data '{
|
|
53
|
+
"label": "Negotiation",
|
|
54
|
+
"metadata": {"probability": "0.85"}
|
|
55
|
+
}' --force
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 1.2 Deal Properties
|
|
59
|
+
|
|
60
|
+
| Property | Type | Purpose |
|
|
61
|
+
|----------|------|---------|
|
|
62
|
+
| `dealname` | Text | Deal name (auto or manual) |
|
|
63
|
+
| `amount` | Currency | Deal value |
|
|
64
|
+
| `closedate` | Date | Expected close date |
|
|
65
|
+
| `dealstage` | Select | Current pipeline stage |
|
|
66
|
+
| `pipeline` | Select | Which pipeline |
|
|
67
|
+
| `hubspot_owner_id` | Owner | Assigned sales rep |
|
|
68
|
+
| `deal_currency_code` | Select | Currency (if multi-currency enabled) |
|
|
69
|
+
|
|
70
|
+
**hscli:**
|
|
71
|
+
```bash
|
|
72
|
+
# Create custom deal property
|
|
73
|
+
hscli crm properties create deals --data '{
|
|
74
|
+
"name": "deal_source",
|
|
75
|
+
"label": "Deal Source",
|
|
76
|
+
"type": "enumeration",
|
|
77
|
+
"fieldType": "select",
|
|
78
|
+
"groupName": "dealinformation",
|
|
79
|
+
"options": [
|
|
80
|
+
{"label": "Inbound", "value": "inbound", "displayOrder": 0},
|
|
81
|
+
{"label": "Outbound", "value": "outbound", "displayOrder": 1},
|
|
82
|
+
{"label": "Partner Referral", "value": "partner", "displayOrder": 2},
|
|
83
|
+
{"label": "Event", "value": "event", "displayOrder": 3}
|
|
84
|
+
]
|
|
85
|
+
}' --force
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### 1.3 Deal Automation
|
|
89
|
+
|
|
90
|
+
**Where:** Settings > Objects > Deals > Pipelines > Automate tab
|
|
91
|
+
|
|
92
|
+
| Trigger | Action | Example |
|
|
93
|
+
|---------|--------|---------|
|
|
94
|
+
| Deal enters stage | Create task | "Send proposal" task when deal enters Proposal stage |
|
|
95
|
+
| Deal enters stage | Send notification | Alert manager when deal enters Negotiation |
|
|
96
|
+
| Deal enters stage | Update property | Set close date to 30 days from now when qualified |
|
|
97
|
+
| Deal won | Trigger workflow | Send welcome email, create onboarding ticket |
|
|
98
|
+
| Deal lost | Trigger workflow | Add to re-engagement nurture |
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## 2. Quotes
|
|
103
|
+
|
|
104
|
+
**Where:** Settings > Objects > Quotes
|
|
105
|
+
|
|
106
|
+
### 2.1 Quote Settings
|
|
107
|
+
|
|
108
|
+
| Setting | What to configure | Why it matters |
|
|
109
|
+
|---------|-------------------|----------------|
|
|
110
|
+
| Quote template | Default template with branding | Professional-looking quotes |
|
|
111
|
+
| Quote expiration | Default validity period (e.g., 30 days) | Creates urgency |
|
|
112
|
+
| E-signature | Enable electronic signatures | Streamlines deal closing |
|
|
113
|
+
| Payment collection | Collect payment via quote | Combines quote acceptance + payment |
|
|
114
|
+
| Quote numbering | Auto-numbering prefix and sequence | Professional quote tracking |
|
|
115
|
+
| Terms & conditions | Default legal terms on quotes | Legal compliance |
|
|
116
|
+
| Countersignature | Require internal countersign | Approval process for large deals |
|
|
117
|
+
|
|
118
|
+
**hscli:**
|
|
119
|
+
```bash
|
|
120
|
+
# List quotes
|
|
121
|
+
hscli crm quotes list --limit 20
|
|
122
|
+
|
|
123
|
+
# Get quote details
|
|
124
|
+
hscli crm quotes get <quoteId>
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## 3. Products & Line Items
|
|
130
|
+
|
|
131
|
+
**Where:** Settings > Objects > Products
|
|
132
|
+
|
|
133
|
+
**hscli:**
|
|
134
|
+
```bash
|
|
135
|
+
# List products
|
|
136
|
+
hscli crm products list --limit 50
|
|
137
|
+
|
|
138
|
+
# Create a product
|
|
139
|
+
hscli crm products create --data '{
|
|
140
|
+
"properties": {
|
|
141
|
+
"name": "Enterprise License",
|
|
142
|
+
"description": "Annual enterprise software license",
|
|
143
|
+
"price": "25000",
|
|
144
|
+
"hs_sku": "ENT-001",
|
|
145
|
+
"hs_recurring_billing_period": "P12M"
|
|
146
|
+
}
|
|
147
|
+
}' --force
|
|
148
|
+
|
|
149
|
+
# Create a line item (associated with a deal)
|
|
150
|
+
hscli crm line-items create --data '{
|
|
151
|
+
"properties": {
|
|
152
|
+
"name": "Enterprise License",
|
|
153
|
+
"quantity": "1",
|
|
154
|
+
"price": "25000",
|
|
155
|
+
"hs_product_id": "<productId>"
|
|
156
|
+
}
|
|
157
|
+
}' --force
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## 4. Meetings & Scheduling
|
|
163
|
+
|
|
164
|
+
**Where:** Settings > Sales > Meetings
|
|
165
|
+
|
|
166
|
+
### 4.1 Meeting Link Configuration
|
|
167
|
+
|
|
168
|
+
| Setting | What to configure | Why it matters |
|
|
169
|
+
|---------|-------------------|----------------|
|
|
170
|
+
| Calendar connection | Google Calendar or Outlook 365 | Real-time availability sync |
|
|
171
|
+
| Meeting link URL | Custom slug (e.g., `meetings.yourcompany.com/john`) | Clean booking links |
|
|
172
|
+
| Duration options | 15, 30, 45, 60 min | Match meeting types to durations |
|
|
173
|
+
| Availability window | Working hours + buffer time | Prevent back-to-back meetings |
|
|
174
|
+
| Buffer time | Minutes before/after meetings | Prep time |
|
|
175
|
+
| Minimum notice | Hours before a meeting can be booked | Prevent last-minute bookings |
|
|
176
|
+
|
|
177
|
+
### 4.2 Meeting Types
|
|
178
|
+
|
|
179
|
+
| Type | Configuration | Use case |
|
|
180
|
+
|------|--------------|----------|
|
|
181
|
+
| Personal | 1:1 with specific rep | Discovery calls, demos |
|
|
182
|
+
| Team (round-robin) | Rotates among team members | Inbound lead distribution |
|
|
183
|
+
| Group | Multiple reps on same call | Panel interviews, complex demos |
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## 5. Sequences
|
|
188
|
+
|
|
189
|
+
**Where:** Sales > Sequences | Settings > Sales > Sequences
|
|
190
|
+
|
|
191
|
+
### 5.1 Sequence Settings
|
|
192
|
+
|
|
193
|
+
| Setting | What to configure | Why it matters |
|
|
194
|
+
|---------|-------------------|----------------|
|
|
195
|
+
| Sending window | Days and hours when emails send | Respect business hours |
|
|
196
|
+
| Throttle | Max enrollments per day per user | Avoid spam flags |
|
|
197
|
+
| Unenroll triggers | Contact replies, books meeting, deal created | Stop when goal met |
|
|
198
|
+
| Sender | Individual user's connected email | Sends from rep's email |
|
|
199
|
+
|
|
200
|
+
### 5.2 Sequence Steps
|
|
201
|
+
|
|
202
|
+
| Step type | Description | Timing |
|
|
203
|
+
|-----------|-------------|--------|
|
|
204
|
+
| Automated email | Sent automatically | Delay in days from previous step |
|
|
205
|
+
| Manual email task | Task for rep to personalize | Appears in task queue |
|
|
206
|
+
| Call task | Task to make a phone call | Appears in task queue |
|
|
207
|
+
| LinkedIn task | Task for LinkedIn outreach | Manual execution |
|
|
208
|
+
| General task | Any custom task | Flexible follow-up |
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## 6. Playbooks
|
|
213
|
+
|
|
214
|
+
**Where:** Sales > Playbooks (Sales Hub Professional+)
|
|
215
|
+
|
|
216
|
+
| Type | Use case | Example |
|
|
217
|
+
|------|----------|---------|
|
|
218
|
+
| Discovery | First call qualification | BANT questions, pain points |
|
|
219
|
+
| Demo | Product demonstration | Feature walkthrough |
|
|
220
|
+
| Negotiation | Price/terms discussion | Discount authority, objections |
|
|
221
|
+
| Onboarding | Post-sale kickoff | Implementation timeline |
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## 7. Forecasting
|
|
226
|
+
|
|
227
|
+
**Where:** Sales > Forecasting | Settings > Sales > Forecasting
|
|
228
|
+
|
|
229
|
+
### 7.1 Forecast Settings
|
|
230
|
+
|
|
231
|
+
| Setting | What to configure | Why it matters |
|
|
232
|
+
|---------|-------------------|----------------|
|
|
233
|
+
| Forecast period | Monthly or quarterly | Match your business cadence |
|
|
234
|
+
| Pipeline(s) | Which pipelines to include | Scope of forecast |
|
|
235
|
+
| Forecast categories | Pipeline, Best Case, Commit, Closed | Deal confidence classification |
|
|
236
|
+
| Targets/quotas | Revenue targets per rep, team, period | Forecast vs. target comparison |
|
|
237
|
+
|
|
238
|
+
### 7.2 Forecast Categories
|
|
239
|
+
|
|
240
|
+
| Category | Definition |
|
|
241
|
+
|----------|-----------|
|
|
242
|
+
| Pipeline | In pipeline, not yet qualified |
|
|
243
|
+
| Best Case | Could close if things go well |
|
|
244
|
+
| Commit | High confidence, verbal commitment |
|
|
245
|
+
| Closed | Won and signed |
|
|
246
|
+
| Omit | Excluded from forecast |
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## 8. Sales Automation & Workflows
|
|
251
|
+
|
|
252
|
+
### 8.1 Common Sales Workflows
|
|
253
|
+
|
|
254
|
+
| Trigger | Actions | Purpose |
|
|
255
|
+
|---------|---------|---------|
|
|
256
|
+
| New deal created | Assign owner, create tasks | New deal setup |
|
|
257
|
+
| Deal stage change | Update properties, create tasks | Enforce process |
|
|
258
|
+
| Deal idle > X days | Reminder + escalation | Prevent stagnation |
|
|
259
|
+
| Deal amount > threshold | Require approval | Oversight on large deals |
|
|
260
|
+
| Deal closed won | Onboarding ticket, welcome email | Handoff to CS |
|
|
261
|
+
| Deal closed lost | Nurture sequence, log reason | Feedback + re-engagement |
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
## 9. Connected Email & Calling
|
|
266
|
+
|
|
267
|
+
### 9.1 Email Integration
|
|
268
|
+
|
|
269
|
+
| Setting | What to configure | Why it matters |
|
|
270
|
+
|---------|-------------------|----------------|
|
|
271
|
+
| Email provider | Gmail or Outlook 365 | Two-way email sync |
|
|
272
|
+
| Log emails | Auto-log sent/received to CRM | Complete communication history |
|
|
273
|
+
| Track opens/clicks | Enable tracking | Know when prospects engage |
|
|
274
|
+
|
|
275
|
+
### 9.2 Calling
|
|
276
|
+
|
|
277
|
+
| Setting | What to configure | Why it matters |
|
|
278
|
+
|---------|-------------------|----------------|
|
|
279
|
+
| Calling provider | HubSpot, Twilio, or third-party | Make calls from CRM |
|
|
280
|
+
| Call recording | Enable/disable (check local laws) | Training, compliance |
|
|
281
|
+
| Call outcomes | Connected, left voicemail, no answer | Track call effectiveness |
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
## 10. Documents & Templates
|
|
286
|
+
|
|
287
|
+
### 10.1 Documents
|
|
288
|
+
|
|
289
|
+
| Setting | What to configure | Why it matters |
|
|
290
|
+
|---------|-------------------|----------------|
|
|
291
|
+
| Document library | Upload sales collateral | Centralized content |
|
|
292
|
+
| Tracking | Track views and time spent | Buyer engagement signals |
|
|
293
|
+
| Require email | Require email before access | Identify viewers |
|
|
294
|
+
|
|
295
|
+
### 10.2 Email Templates
|
|
296
|
+
|
|
297
|
+
| Setting | What to configure | Why it matters |
|
|
298
|
+
|---------|-------------------|----------------|
|
|
299
|
+
| Template library | Pre-built email templates | Saves time, ensures quality |
|
|
300
|
+
| Personalization tokens | Dynamic fields | Personalized at scale |
|
|
301
|
+
| Folders | Organize by use case | Easy discovery |
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
## Setup Checklist
|
|
306
|
+
|
|
307
|
+
### Deals & Pipeline
|
|
308
|
+
```
|
|
309
|
+
[ ] Primary pipeline created with stages and probabilities
|
|
310
|
+
[ ] Stage requirements configured
|
|
311
|
+
[ ] Deal automation rules set
|
|
312
|
+
[ ] Custom deal properties created
|
|
313
|
+
[ ] Additional pipelines created (if needed)
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
### Quotes
|
|
317
|
+
```
|
|
318
|
+
[ ] Quote template branded
|
|
319
|
+
[ ] Default expiration set
|
|
320
|
+
[ ] E-signature enabled
|
|
321
|
+
[ ] Quote numbering configured
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
### Products
|
|
325
|
+
```
|
|
326
|
+
[ ] Product library populated
|
|
327
|
+
[ ] Pricing and billing frequency set
|
|
328
|
+
[ ] SKUs assigned
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
### Meetings
|
|
332
|
+
```
|
|
333
|
+
[ ] Calendar connected for all reps
|
|
334
|
+
[ ] Meeting links configured per rep
|
|
335
|
+
[ ] Round-robin team link set up
|
|
336
|
+
[ ] Availability and buffer times configured
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
### Sequences
|
|
340
|
+
```
|
|
341
|
+
[ ] Sending windows configured
|
|
342
|
+
[ ] Throttle limits set
|
|
343
|
+
[ ] Unenroll triggers configured
|
|
344
|
+
[ ] At least one sequence created
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
### Forecasting
|
|
348
|
+
```
|
|
349
|
+
[ ] Forecast period set
|
|
350
|
+
[ ] Forecast categories defined
|
|
351
|
+
[ ] Targets/quotas set per rep and team
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
### Sales Automation
|
|
355
|
+
```
|
|
356
|
+
[ ] New deal workflow created
|
|
357
|
+
[ ] Deal stage automations configured
|
|
358
|
+
[ ] Idle deal alerts set up
|
|
359
|
+
[ ] Closed-won handoff workflow active
|
|
360
|
+
[ ] Closed-lost feedback workflow active
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
### Email & Calling
|
|
364
|
+
```
|
|
365
|
+
[ ] All reps connected personal email
|
|
366
|
+
[ ] Email tracking enabled
|
|
367
|
+
[ ] Calling provider configured
|
|
368
|
+
[ ] Call outcomes defined
|
|
369
|
+
```
|