@revfleet/hscli 0.8.7 → 0.8.11

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.
Files changed (113) hide show
  1. package/CHANGELOG.md +247 -0
  2. package/CONTRIBUTING.md +120 -0
  3. package/README.md +42 -8
  4. package/brand/readme-hero.svg +25 -0
  5. package/dist/cli.js +35 -0
  6. package/dist/cli.js.map +1 -1
  7. package/dist/commands/account/index.js +5 -6
  8. package/dist/commands/account/index.js.map +1 -1
  9. package/dist/commands/api/index.js +43 -3
  10. package/dist/commands/api/index.js.map +1 -1
  11. package/dist/commands/auth/index.js +74 -13
  12. package/dist/commands/auth/index.js.map +1 -1
  13. package/dist/commands/cms/hubdb.js +31 -0
  14. package/dist/commands/cms/hubdb.js.map +1 -1
  15. package/dist/commands/cms/index.js +27 -0
  16. package/dist/commands/cms/index.js.map +1 -1
  17. package/dist/commands/cms/source-code.js +21 -0
  18. package/dist/commands/cms/source-code.js.map +1 -1
  19. package/dist/commands/communication-preferences/index.js +11 -12
  20. package/dist/commands/communication-preferences/index.js.map +1 -1
  21. package/dist/commands/crm/activities.d.ts +3 -0
  22. package/dist/commands/crm/activities.js +186 -0
  23. package/dist/commands/crm/activities.js.map +1 -0
  24. package/dist/commands/crm/index.js +4 -0
  25. package/dist/commands/crm/index.js.map +1 -1
  26. package/dist/commands/crm/migration.d.ts +3 -0
  27. package/dist/commands/crm/migration.js +155 -0
  28. package/dist/commands/crm/migration.js.map +1 -0
  29. package/dist/commands/crm/properties.js +105 -18
  30. package/dist/commands/crm/properties.js.map +1 -1
  31. package/dist/commands/crm/property-batch.d.ts +34 -0
  32. package/dist/commands/crm/property-batch.js +205 -0
  33. package/dist/commands/crm/property-batch.js.map +1 -0
  34. package/dist/commands/crm/shared.d.ts +1 -0
  35. package/dist/commands/crm/shared.js +3 -4
  36. package/dist/commands/crm/shared.js.map +1 -1
  37. package/dist/commands/doctor/index.js +119 -1
  38. package/dist/commands/doctor/index.js.map +1 -1
  39. package/dist/commands/events/index.js +7 -8
  40. package/dist/commands/events/index.js.map +1 -1
  41. package/dist/commands/forms/index.js +47 -6
  42. package/dist/commands/forms/index.js.map +1 -1
  43. package/dist/commands/forms/legacy-v2.d.ts +6 -0
  44. package/dist/commands/forms/legacy-v2.js +350 -0
  45. package/dist/commands/forms/legacy-v2.js.map +1 -0
  46. package/dist/commands/forms/property-preflight.d.ts +20 -0
  47. package/dist/commands/forms/property-preflight.js +99 -0
  48. package/dist/commands/forms/property-preflight.js.map +1 -0
  49. package/dist/commands/guide/index.d.ts +3 -0
  50. package/dist/commands/guide/index.js +231 -0
  51. package/dist/commands/guide/index.js.map +1 -0
  52. package/dist/commands/marketing/index.js +3 -4
  53. package/dist/commands/marketing/index.js.map +1 -1
  54. package/dist/commands/settings/index.js +249 -14
  55. package/dist/commands/settings/index.js.map +1 -1
  56. package/dist/core/auth.d.ts +7 -1
  57. package/dist/core/auth.js +45 -7
  58. package/dist/core/auth.js.map +1 -1
  59. package/dist/core/http.d.ts +43 -0
  60. package/dist/core/http.js +227 -57
  61. package/dist/core/http.js.map +1 -1
  62. package/dist/core/output.d.ts +2 -0
  63. package/dist/core/output.js +1 -1
  64. package/dist/core/output.js.map +1 -1
  65. package/dist/core/plugins.d.ts +5 -2
  66. package/dist/core/plugins.js +18 -1
  67. package/dist/core/plugins.js.map +1 -1
  68. package/dist/core/scopes.d.ts +29 -0
  69. package/dist/core/scopes.js +415 -0
  70. package/dist/core/scopes.js.map +1 -0
  71. package/dist/core/telemetry-context.d.ts +13 -0
  72. package/dist/core/telemetry-context.js +30 -0
  73. package/dist/core/telemetry-context.js.map +1 -0
  74. package/dist/mcp/ext-tools.d.ts +1 -1
  75. package/dist/mcp/ext-tools.js +52 -1
  76. package/dist/mcp/ext-tools.js.map +1 -1
  77. package/dist/mcp/hubspot-modules.d.ts +30 -0
  78. package/dist/mcp/hubspot-modules.js +305 -0
  79. package/dist/mcp/hubspot-modules.js.map +1 -0
  80. package/dist/mcp/server.d.ts +2 -0
  81. package/dist/mcp/server.js +120 -48
  82. package/dist/mcp/server.js.map +1 -1
  83. package/docs/ARCHITECTURE.md +39 -0
  84. package/docs/CAPABILITY_LIBRARY.md +639 -0
  85. package/docs/CMS_SETUP.md +349 -0
  86. package/docs/COMMAND_COMPATIBILITY.md +24 -0
  87. package/docs/COMMAND_TREE.md +199 -0
  88. package/docs/COMMERCE_SETUP.md +400 -0
  89. package/docs/COMPARISON.md +146 -0
  90. package/docs/COOKBOOK.md +896 -0
  91. package/docs/INTEGRATIONS_NOTIFICATIONS_SETUP.md +352 -0
  92. package/docs/MARKETING_SETUP.md +509 -0
  93. package/docs/MCP.md +172 -0
  94. package/docs/OPERATIONAL_PLAYBOOKS.md +322 -0
  95. package/docs/OPERATIONS_SETUP.md +362 -0
  96. package/docs/PLUGIN_GUIDE.md +158 -0
  97. package/docs/POLICY_EXAMPLE.json +57 -0
  98. package/docs/PORTAL_SETUP.md +684 -0
  99. package/docs/PUBLISHING.md +154 -0
  100. package/docs/RELEASE_GOVERNANCE.md +34 -0
  101. package/docs/REPORTING_SETUP.md +310 -0
  102. package/docs/ROADMAP-DATE-BASED-API.md +103 -0
  103. package/docs/ROADMAP_PHASE1_TO_3.md +96 -0
  104. package/docs/SAFETY_MODEL.md +40 -0
  105. package/docs/SALES_SETUP.md +369 -0
  106. package/docs/SERVICE_SETUP.md +403 -0
  107. package/docs/TESTING_PLAN.md +89 -0
  108. package/docs/TIERS.md +320 -0
  109. package/docs/TUTORIALS/audit-portal-writes.md +150 -0
  110. package/docs/TUTORIALS/secure-agent-writes.md +177 -0
  111. package/docs/TUTORIALS/trace-replay-repro.md +147 -0
  112. package/docs/WHY_HOW_WHAT.md +81 -0
  113. 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,40 @@
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
+ - Share observed HubSpot rate-limit state across clients in the same process by profile + API base URL.
26
+ - Enforce HubSpot `X-HubSpot-RateLimit-Secondly`, rolling interval, and daily remaining headers before the next request.
27
+ - Stop before daily quota exhaustion with `RATE_LIMIT_DAILY_EXHAUSTED`.
28
+ - Enforce request timeout (`30s`) to prevent hung command invocations.
29
+ - Surface retry exhaustion as `HTTP_RETRY_EXHAUSTED`.
30
+
31
+ ## Profiles & Access
32
+ - Profiles isolate tokens per environment/workspace.
33
+ - `--profile` allows explicit target account selection.
34
+ - Missing token fails fast with guidance.
35
+
36
+ ## Safe Defaults
37
+ - Default limit for list/search is conservative (`10`).
38
+ - Explicit JSON payload required for create/update.
39
+ - Unknown command errors are structured and non-destructive.
40
+ - 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
+ ```