@cakemail-org/cakemail-cli 1.7.0 → 2.0.0
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/.claude/settings.local.json +12 -0
- package/.env.example +40 -0
- package/.env.test.example +45 -0
- package/CHANGELOG.md +1031 -0
- package/README.md +41 -37
- package/audit-formats.js +128 -0
- package/cakemail.rb +20 -0
- package/dist/client.js +1 -1
- package/dist/client.js.map +1 -1
- package/dist/commands/account.js +1 -1
- package/dist/commands/account.js.map +1 -1
- package/dist/commands/attributes.js +1 -1
- package/dist/commands/attributes.js.map +1 -1
- package/dist/commands/campaigns.js +1 -1
- package/dist/commands/campaigns.js.map +1 -1
- package/dist/commands/contacts.js +1 -1
- package/dist/commands/contacts.js.map +1 -1
- package/dist/commands/emails.js +1 -1
- package/dist/commands/emails.js.map +1 -1
- package/dist/commands/interests.js +1 -1
- package/dist/commands/interests.js.map +1 -1
- package/dist/commands/lists.js +1 -1
- package/dist/commands/lists.js.map +1 -1
- package/dist/commands/logs.js +1 -1
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/reports.js +1 -1
- package/dist/commands/reports.js.map +1 -1
- package/dist/commands/segments.js +1 -1
- package/dist/commands/segments.js.map +1 -1
- package/dist/commands/senders.js +1 -1
- package/dist/commands/senders.js.map +1 -1
- package/dist/commands/suppressed.js +1 -1
- package/dist/commands/suppressed.js.map +1 -1
- package/dist/commands/tags.js +1 -1
- package/dist/commands/tags.js.map +1 -1
- package/dist/commands/templates.js +1 -1
- package/dist/commands/templates.js.map +1 -1
- package/dist/commands/transactional-templates.js +1 -1
- package/dist/commands/transactional-templates.js.map +1 -1
- package/dist/commands/webhooks.js +1 -1
- package/dist/commands/webhooks.js.map +1 -1
- package/dist/utils/config.js +2 -2
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/errors.js +1 -1
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/progress.d.ts.map +1 -1
- package/dist/utils/progress.js +32 -4
- package/dist/utils/progress.js.map +1 -1
- package/dist/utils/spinner.d.ts +17 -0
- package/dist/utils/spinner.d.ts.map +1 -0
- package/dist/utils/spinner.js +43 -0
- package/dist/utils/spinner.js.map +1 -0
- package/docs/DOCUMENTATION-STANDARD.md +1068 -0
- package/docs/README.md +161 -0
- package/docs/developer/ARCHITECTURE.md +516 -0
- package/docs/developer/AUTH.md +204 -0
- package/docs/developer/CONTRIBUTING.md +227 -0
- package/docs/developer/DOCUMENTATION_SUMMARY.md +346 -0
- package/docs/developer/PROJECT_INDEX.md +365 -0
- package/docs/planning/API_COVERAGE.md +1045 -0
- package/docs/planning/BACKLOG.md +1159 -0
- package/docs/planning/PROFILE_SYSTEM_TASKS.md +287 -0
- package/docs/planning/UX_IMPLEMENTATION_PLAN.md +691 -0
- package/docs/planning/archive/RELEASE_CHECKLIST_v1.3.0.md +332 -0
- package/docs/planning/archive/RELEASE_v1.3.0.md +428 -0
- package/docs/planning/archive/cakemail-cli-ux-improvements.md +438 -0
- package/docs/planning/cakemail-profile-system-plan.md +1121 -0
- package/docs/testing/AI_USER_SIMULATION_DESIGN.md +1342 -0
- package/docs/testing/KENOGAMI_BIDIRECTIONAL_FLOW.md +1517 -0
- package/docs/testing/KENOGAMI_TRUTH_RECONCILIATION_SYSTEM.md +1369 -0
- package/docs/user-manual/.obsidian/app.json +1 -0
- package/docs/user-manual/.obsidian/appearance.json +1 -0
- package/docs/user-manual/.obsidian/core-plugins.json +33 -0
- package/docs/user-manual/.obsidian/workspace.json +167 -0
- package/docs/user-manual/01-getting-started/01-installation.md +214 -0
- package/docs/user-manual/01-getting-started/02-quick-start.md +432 -0
- package/docs/user-manual/01-getting-started/03-authentication.md +448 -0
- package/docs/user-manual/01-getting-started/04-configuration.md +430 -0
- package/docs/user-manual/01-getting-started/05-output-formats.md +447 -0
- package/docs/user-manual/02-core-concepts/01-accounts.md +514 -0
- package/docs/user-manual/02-core-concepts/02-profile-system.md +771 -0
- package/docs/user-manual/02-core-concepts/03-smart-defaults.md +485 -0
- package/docs/user-manual/02-core-concepts/04-authentication-methods.md +435 -0
- package/docs/user-manual/02-core-concepts/05-pagination-filtering.md +600 -0
- package/docs/user-manual/02-core-concepts/06-error-handling.md +718 -0
- package/docs/user-manual/02-core-concepts/07-api-coverage.md +483 -0
- package/docs/user-manual/03-email-operations/01-senders.md +490 -0
- package/docs/user-manual/03-email-operations/02-templates.md +444 -0
- package/docs/user-manual/03-email-operations/03-transactional-emails.md +706 -0
- package/docs/user-manual/03-email-operations/04-email-tracking.md +407 -0
- package/docs/user-manual/04-campaign-management/01-campaigns-basics.md +394 -0
- package/docs/user-manual/04-campaign-management/02-campaign-scheduling.md +630 -0
- package/docs/user-manual/04-campaign-management/03-campaign-testing.md +997 -0
- package/docs/user-manual/04-campaign-management/04-campaign-lifecycle.md +709 -0
- package/docs/user-manual/04-campaign-management/05-campaign-links.md +934 -0
- package/docs/user-manual/05-contact-management/01-lists.md +836 -0
- package/docs/user-manual/05-contact-management/02-contacts.md +1035 -0
- package/docs/user-manual/05-contact-management/03-custom-attributes.md +788 -0
- package/docs/user-manual/05-contact-management/04-segments.md +1028 -0
- package/docs/user-manual/05-contact-management/05-contact-import-export.md +1031 -0
- package/docs/user-manual/06-analytics-reporting/01-campaign-analytics.md +867 -0
- package/docs/user-manual/06-analytics-reporting/02-account-reports.md +227 -0
- package/docs/user-manual/07-integrations/01-webhooks-integration.md +259 -0
- package/docs/user-manual/07-integrations/02-automation.md +326 -0
- package/docs/user-manual/08-advanced-usage/01-scripting-patterns.md +672 -0
- package/docs/user-manual/08-advanced-usage/02-bulk-operations.md +932 -0
- package/docs/user-manual/08-advanced-usage/03-ci-cd-integration.md +892 -0
- package/docs/user-manual/08-advanced-usage/04-performance-optimization.md +766 -0
- package/docs/user-manual/09-command-reference/01-config.md +776 -0
- package/docs/user-manual/09-command-reference/02-account.md +652 -0
- package/docs/user-manual/09-command-reference/03-lists.md +958 -0
- package/docs/user-manual/09-command-reference/04-contacts.md +1408 -0
- package/docs/user-manual/09-command-reference/05-attributes.md +617 -0
- package/docs/user-manual/09-command-reference/06-segments.md +894 -0
- package/docs/user-manual/09-command-reference/07-senders.md +803 -0
- package/docs/user-manual/09-command-reference/08-templates.md +818 -0
- package/docs/user-manual/09-command-reference/09-campaigns.md +1250 -0
- package/docs/user-manual/09-command-reference/10-emails.md +807 -0
- package/docs/user-manual/09-command-reference/11-reports.md +1135 -0
- package/docs/user-manual/09-command-reference/12-webhooks.md +773 -0
- package/docs/user-manual/09-command-reference/13-suppressed.md +797 -0
- package/docs/user-manual/09-command-reference/14-interests.md +630 -0
- package/docs/user-manual/09-command-reference/15-tags.md +584 -0
- package/docs/user-manual/09-command-reference/16-logs.md +656 -0
- package/docs/user-manual/09-command-reference/17-transactional-templates.md +850 -0
- package/docs/user-manual/10-troubleshooting/01-common-errors.md +457 -0
- package/docs/user-manual/10-troubleshooting/02-authentication-issues.md +558 -0
- package/docs/user-manual/10-troubleshooting/03-connection-problems.md +634 -0
- package/docs/user-manual/10-troubleshooting/04-debugging.md +725 -0
- package/docs/user-manual/11-appendix/04-faq.md +484 -0
- package/docs/user-manual/11-appendix/05-glossary.md +250 -0
- package/docs/user-manual/README.md +0 -0
- package/package.json +13 -61
- package/src/cli.ts +125 -0
- package/src/client.ts +16 -0
- package/src/commands/account.ts +267 -0
- package/src/commands/accounts.ts +78 -0
- package/src/commands/actions.ts +249 -0
- package/src/commands/attributes.ts +139 -0
- package/src/commands/campaign-blueprints.ts +106 -0
- package/src/commands/campaigns.ts +469 -0
- package/src/commands/config.ts +77 -0
- package/src/commands/contacts.ts +612 -0
- package/src/commands/custom-attributes.ts +127 -0
- package/src/commands/dkims.ts +117 -0
- package/src/commands/domains.ts +82 -0
- package/src/commands/email-apis.ts +569 -0
- package/src/commands/emails.ts +197 -0
- package/src/commands/forms.ts +283 -0
- package/src/commands/interests.ts +155 -0
- package/src/commands/links.ts +38 -0
- package/src/commands/lists.ts +406 -0
- package/src/commands/logos.ts +71 -0
- package/src/commands/logs.ts +386 -0
- package/src/commands/reports.ts +306 -0
- package/src/commands/segments.ts +158 -0
- package/src/commands/senders.ts +204 -0
- package/src/commands/sub-accounts.ts +271 -0
- package/src/commands/suppressed-emails.ts +234 -0
- package/src/commands/suppressed.ts +198 -0
- package/src/commands/system-emails.ts +85 -0
- package/src/commands/tags.ts +146 -0
- package/src/commands/tasks.ts +116 -0
- package/src/commands/templates.ts +189 -0
- package/src/commands/tokens.ts +83 -0
- package/src/commands/transactional-emails.ts +374 -0
- package/src/commands/transactional-templates.ts +385 -0
- package/src/commands/users.ts +506 -0
- package/src/commands/webhooks.ts +172 -0
- package/src/commands/workflow-blueprints.ts +123 -0
- package/src/commands/workflows.ts +265 -0
- package/src/types/profile.ts +93 -0
- package/src/utils/auth.ts +272 -0
- package/src/utils/config-file.ts +96 -0
- package/src/utils/config.ts +134 -0
- package/src/utils/confirm.ts +32 -0
- package/src/utils/defaults.ts +99 -0
- package/src/utils/errors.ts +116 -0
- package/src/utils/interactive.ts +91 -0
- package/src/utils/list-defaults.ts +74 -0
- package/src/utils/output.ts +190 -0
- package/src/utils/progress.ts +320 -0
- package/src/utils/spinner.ts +22 -0
- package/tests/IMPLEMENTATION_STATUS.md +258 -0
- package/tests/PTY_SETUP.md +118 -0
- package/tests/PTY_TESTING_GUIDE.md +507 -0
- package/tests/README.md +244 -0
- package/tests/fixtures/api-responses/campaigns.json +34 -0
- package/tests/fixtures/test-config.json +13 -0
- package/tests/helpers/cli-runner.ts +128 -0
- package/tests/helpers/mock-server.ts +301 -0
- package/tests/helpers/pty-runner.ts +181 -0
- package/tests/integration/campaigns-real-api.test.ts +196 -0
- package/tests/integration/setup-integration.ts +50 -0
- package/tests/pty/campaigns.test.ts +241 -0
- package/tests/setup.ts +34 -0
- package/tsconfig.json +15 -0
- package/vitest.config.ts +28 -0
|
@@ -0,0 +1,484 @@
|
|
|
1
|
+
# Frequently Asked Questions (FAQ)
|
|
2
|
+
|
|
3
|
+
Common questions and answers about using the Cakemail CLI.
|
|
4
|
+
|
|
5
|
+
## General Questions
|
|
6
|
+
|
|
7
|
+
### What is Cakemail CLI?
|
|
8
|
+
|
|
9
|
+
Cakemail CLI is a command-line interface for managing email marketing campaigns through the Cakemail platform. It provides programmatic access to all Cakemail features including contacts, campaigns, reports, and more.
|
|
10
|
+
|
|
11
|
+
### Do I need a Cakemail account?
|
|
12
|
+
|
|
13
|
+
Yes, you need an active Cakemail account. Sign up at [cakemail.com](https://www.cakemail.com).
|
|
14
|
+
|
|
15
|
+
### Is the CLI free?
|
|
16
|
+
|
|
17
|
+
The CLI tool itself is free and open-source. You pay only for your Cakemail account based on your plan.
|
|
18
|
+
|
|
19
|
+
### What platforms are supported?
|
|
20
|
+
|
|
21
|
+
- macOS
|
|
22
|
+
- Linux
|
|
23
|
+
- Windows (via WSL or native)
|
|
24
|
+
|
|
25
|
+
### How do I get help?
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# CLI help (no authentication required)
|
|
29
|
+
$ cakemail --help
|
|
30
|
+
$ cakemail campaigns --help
|
|
31
|
+
|
|
32
|
+
# Check version (no authentication required)
|
|
33
|
+
$ cakemail --version
|
|
34
|
+
|
|
35
|
+
# Documentation
|
|
36
|
+
https://docs.cakemail.com
|
|
37
|
+
|
|
38
|
+
# Support
|
|
39
|
+
support@cakemail.com
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Note:** The `--help` and `--version` commands work without authentication.
|
|
43
|
+
|
|
44
|
+
## Installation & Setup
|
|
45
|
+
|
|
46
|
+
### How do I install the CLI?
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
# npm (recommended)
|
|
50
|
+
$ npm install -g @cakemail-org/cakemail-cli
|
|
51
|
+
|
|
52
|
+
# Homebrew (macOS)
|
|
53
|
+
$ brew install cakemail-cli
|
|
54
|
+
|
|
55
|
+
# Verify installation
|
|
56
|
+
$ cakemail --version
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### How do I configure the CLI?
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# Interactive setup
|
|
63
|
+
$ cakemail config init
|
|
64
|
+
|
|
65
|
+
# Manual setup
|
|
66
|
+
$ echo "CAKEMAIL_EMAIL=your@email.com" > .env
|
|
67
|
+
$ echo "CAKEMAIL_PASSWORD=your_password" >> .env
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Where are credentials stored?
|
|
71
|
+
|
|
72
|
+
Credentials are stored in a `.env` file in your current directory or home directory (`~/.cakemail/.env`).
|
|
73
|
+
|
|
74
|
+
### Can I use API keys instead of passwords?
|
|
75
|
+
|
|
76
|
+
Currently, the CLI uses email/password authentication. API key support is planned for future releases.
|
|
77
|
+
|
|
78
|
+
## Authentication
|
|
79
|
+
|
|
80
|
+
### How do I authenticate?
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
$ cakemail config init
|
|
84
|
+
# Follow prompts to enter email and password
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### My credentials aren't working. What should I do?
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# Test credentials
|
|
91
|
+
$ cakemail account test
|
|
92
|
+
|
|
93
|
+
# Re-initialize if needed
|
|
94
|
+
$ cakemail config init
|
|
95
|
+
|
|
96
|
+
# Check .env file
|
|
97
|
+
$ cat .env
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Can I switch between multiple accounts?
|
|
101
|
+
|
|
102
|
+
Yes, use the account commands:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# List accessible accounts
|
|
106
|
+
$ cakemail account list
|
|
107
|
+
|
|
108
|
+
# Switch accounts
|
|
109
|
+
$ cakemail account use 457
|
|
110
|
+
|
|
111
|
+
# Verify current account
|
|
112
|
+
$ cakemail account show
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Contacts & Lists
|
|
116
|
+
|
|
117
|
+
### How do I add a single contact?
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
$ cakemail contacts add 123 \
|
|
121
|
+
-e "user@example.com" \
|
|
122
|
+
-f "John" \
|
|
123
|
+
-l "Doe"
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### How do I import many contacts?
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
# Prepare CSV file
|
|
130
|
+
email,first_name,last_name
|
|
131
|
+
user1@example.com,John,Doe
|
|
132
|
+
user2@example.com,Jane,Smith
|
|
133
|
+
|
|
134
|
+
# Import
|
|
135
|
+
$ cakemail contacts import 123 --file contacts.csv
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Can contacts be in multiple lists?
|
|
139
|
+
|
|
140
|
+
Yes, the same email address can exist in multiple lists. Each list maintains separate subscription status.
|
|
141
|
+
|
|
142
|
+
### How do I export my contacts?
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
$ cakemail contacts export 123
|
|
146
|
+
$ cakemail contacts export-download EXPORT_ID > contacts.csv
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### What's the difference between lists and segments?
|
|
150
|
+
|
|
151
|
+
- **Lists**: Static containers you manually manage
|
|
152
|
+
- **Segments**: Dynamic filters that automatically update based on conditions
|
|
153
|
+
|
|
154
|
+
## Campaigns
|
|
155
|
+
|
|
156
|
+
### How do I create a campaign?
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
$ cakemail campaigns create \
|
|
160
|
+
-n "My Campaign" \
|
|
161
|
+
-l 123 \
|
|
162
|
+
-s 101 \
|
|
163
|
+
--html-file campaign.html \
|
|
164
|
+
--subject "Hello World"
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### Can I schedule campaigns for later?
|
|
168
|
+
|
|
169
|
+
Yes:
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
$ cakemail campaigns schedule 790 --when "2024-03-20 10:00:00"
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### How do I send a test email?
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
$ cakemail campaigns test 790 -e test@example.com
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Can I cancel a scheduled campaign?
|
|
182
|
+
|
|
183
|
+
Yes:
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
$ cakemail campaigns unschedule 790
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### How do I view campaign results?
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
$ cakemail reports campaign 790
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## Custom Attributes
|
|
196
|
+
|
|
197
|
+
### What are custom attributes?
|
|
198
|
+
|
|
199
|
+
Custom attributes are additional fields you can add to contacts beyond the standard email, name fields. Examples: plan_type, signup_date, purchase_count.
|
|
200
|
+
|
|
201
|
+
### How do I create a custom attribute?
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
$ cakemail attributes create 123 -n "plan_type" -t "text"
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### What attribute types are available?
|
|
208
|
+
|
|
209
|
+
- `text`: Strings (e.g., "premium", "basic")
|
|
210
|
+
- `number`: Numeric values (e.g., 42, 99.99)
|
|
211
|
+
- `date`: Dates in ISO format (YYYY-MM-DD)
|
|
212
|
+
- `boolean`: True/false values
|
|
213
|
+
|
|
214
|
+
### Can I change an attribute's type?
|
|
215
|
+
|
|
216
|
+
No, attribute types cannot be changed after creation. You must create a new attribute with the correct type.
|
|
217
|
+
|
|
218
|
+
## Segments
|
|
219
|
+
|
|
220
|
+
### What are segments?
|
|
221
|
+
|
|
222
|
+
Segments are dynamic groups of contacts that automatically update based on conditions. Unlike static lists, segment membership changes as contact data changes.
|
|
223
|
+
|
|
224
|
+
### How do I create a segment?
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
$ cakemail segments create 123 -n "Engaged Users" -c '{
|
|
228
|
+
"match": "all",
|
|
229
|
+
"rules": [
|
|
230
|
+
{"field": "last_open_date", "operator": "greater_than", "value": "2024-01-01"}
|
|
231
|
+
]
|
|
232
|
+
}'
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### Can I send campaigns to segments?
|
|
236
|
+
|
|
237
|
+
Yes:
|
|
238
|
+
|
|
239
|
+
```bash
|
|
240
|
+
$ cakemail campaigns create \
|
|
241
|
+
-n "Segment Campaign" \
|
|
242
|
+
-l 123 \
|
|
243
|
+
-s 101 \
|
|
244
|
+
--segment 456
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
### How often do segments update?
|
|
248
|
+
|
|
249
|
+
Segments update in real-time as contact data changes.
|
|
250
|
+
|
|
251
|
+
## Analytics & Reporting
|
|
252
|
+
|
|
253
|
+
### How do I view campaign analytics?
|
|
254
|
+
|
|
255
|
+
```bash
|
|
256
|
+
$ cakemail reports campaign 790
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### Can I export reports?
|
|
260
|
+
|
|
261
|
+
Yes:
|
|
262
|
+
|
|
263
|
+
```bash
|
|
264
|
+
$ cakemail reports campaign 790 -f json > report.json
|
|
265
|
+
$ cakemail reports campaign 790 -f csv > report.csv
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
### What metrics are tracked?
|
|
269
|
+
|
|
270
|
+
- Delivery rate
|
|
271
|
+
- Open rate (unique and total)
|
|
272
|
+
- Click rate (unique and total)
|
|
273
|
+
- Bounce rate (hard and soft)
|
|
274
|
+
- Unsubscribe rate
|
|
275
|
+
- Spam complaints
|
|
276
|
+
|
|
277
|
+
### How do I view link-specific analytics?
|
|
278
|
+
|
|
279
|
+
```bash
|
|
280
|
+
$ cakemail reports campaign-links 790
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
## Automation
|
|
284
|
+
|
|
285
|
+
### Can I automate campaigns?
|
|
286
|
+
|
|
287
|
+
Yes, using cron or CI/CD:
|
|
288
|
+
|
|
289
|
+
```bash
|
|
290
|
+
# Cron example (daily at 8 AM)
|
|
291
|
+
0 8 * * * /path/to/send-newsletter.sh
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
### Can I integrate with other tools?
|
|
295
|
+
|
|
296
|
+
Yes, via:
|
|
297
|
+
- Shell scripts
|
|
298
|
+
- Webhooks for real-time events
|
|
299
|
+
- CI/CD pipelines (GitHub Actions, GitLab CI)
|
|
300
|
+
- Direct API integration
|
|
301
|
+
|
|
302
|
+
### Does the CLI support webhooks?
|
|
303
|
+
|
|
304
|
+
Yes:
|
|
305
|
+
|
|
306
|
+
```bash
|
|
307
|
+
$ cakemail webhooks create \
|
|
308
|
+
-u "https://your-api.com/webhook" \
|
|
309
|
+
-e "email.opened,email.clicked"
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
## Best Practices
|
|
313
|
+
|
|
314
|
+
### How often should I clean my lists?
|
|
315
|
+
|
|
316
|
+
- Review monthly
|
|
317
|
+
- Remove hard bounces immediately
|
|
318
|
+
- Remove inactive subscribers (90+ days) quarterly
|
|
319
|
+
|
|
320
|
+
### What's a good open rate?
|
|
321
|
+
|
|
322
|
+
Industry average: 15-25%. Varies by:
|
|
323
|
+
- Industry
|
|
324
|
+
- List quality
|
|
325
|
+
- Send frequency
|
|
326
|
+
- Content relevance
|
|
327
|
+
|
|
328
|
+
### What's a good click rate?
|
|
329
|
+
|
|
330
|
+
Industry average: 2-5%. Higher is better.
|
|
331
|
+
|
|
332
|
+
### How do I improve my open rates?
|
|
333
|
+
|
|
334
|
+
1. Write compelling subject lines
|
|
335
|
+
2. Optimize send times
|
|
336
|
+
3. Clean your list regularly
|
|
337
|
+
4. Segment for relevance
|
|
338
|
+
5. Test from multiple senders
|
|
339
|
+
|
|
340
|
+
### How do I reduce unsubscribes?
|
|
341
|
+
|
|
342
|
+
1. Send relevant content
|
|
343
|
+
2. Respect frequency preferences
|
|
344
|
+
3. Segment your audience
|
|
345
|
+
4. Provide value in every email
|
|
346
|
+
5. Make content scannable
|
|
347
|
+
|
|
348
|
+
## Troubleshooting
|
|
349
|
+
|
|
350
|
+
### Error: "No credentials found"
|
|
351
|
+
|
|
352
|
+
```bash
|
|
353
|
+
$ cakemail config init
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
### Error: "List not found"
|
|
357
|
+
|
|
358
|
+
```bash
|
|
359
|
+
# Check available lists
|
|
360
|
+
$ cakemail lists list
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
### Import fails with "Invalid CSV"
|
|
364
|
+
|
|
365
|
+
Ensure CSV format:
|
|
366
|
+
```csv
|
|
367
|
+
email,first_name,last_name
|
|
368
|
+
user@example.com,John,Doe
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
### Campaign won't schedule
|
|
372
|
+
|
|
373
|
+
Check:
|
|
374
|
+
- Campaign is in "draft" status
|
|
375
|
+
- Sender is verified
|
|
376
|
+
- List has contacts
|
|
377
|
+
- HTML content exists
|
|
378
|
+
|
|
379
|
+
### CLI is slow
|
|
380
|
+
|
|
381
|
+
Try:
|
|
382
|
+
- Use JSON format for parsing: `-f json`
|
|
383
|
+
- Use filters to limit results
|
|
384
|
+
- Check internet connection
|
|
385
|
+
- Update CLI to latest version
|
|
386
|
+
|
|
387
|
+
## Advanced Topics
|
|
388
|
+
|
|
389
|
+
### Can I use environment variables?
|
|
390
|
+
|
|
391
|
+
Yes:
|
|
392
|
+
|
|
393
|
+
```bash
|
|
394
|
+
export CAKEMAIL_EMAIL="your@email.com"
|
|
395
|
+
export CAKEMAIL_PASSWORD="your_password"
|
|
396
|
+
$ cakemail account show
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
### Can I use the CLI in scripts?
|
|
400
|
+
|
|
401
|
+
Yes, it's designed for automation:
|
|
402
|
+
|
|
403
|
+
```bash
|
|
404
|
+
#!/bin/bash
|
|
405
|
+
CAMPAIGN_ID=$(cakemail campaigns create \
|
|
406
|
+
-n "Automated" -l 123 -s 101 -f json | jq -r '.id')
|
|
407
|
+
cakemail campaigns schedule $CAMPAIGN_ID
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
### Does the CLI support piping?
|
|
411
|
+
|
|
412
|
+
Yes:
|
|
413
|
+
|
|
414
|
+
```bash
|
|
415
|
+
$ cakemail campaigns list -f json | jq '.data[].id'
|
|
416
|
+
$ cakemail contacts list 123 -f json | jq -r '.data[].email' > emails.txt
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
### Can I use the CLI in Docker?
|
|
420
|
+
|
|
421
|
+
Yes:
|
|
422
|
+
|
|
423
|
+
```dockerfile
|
|
424
|
+
FROM node:18
|
|
425
|
+
RUN npm install -g @cakemail-org/cakemail-cli
|
|
426
|
+
ENV CAKEMAIL_EMAIL=your@email.com
|
|
427
|
+
ENV CAKEMAIL_PASSWORD=your_password
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
## Getting More Help
|
|
431
|
+
|
|
432
|
+
### Where can I find more examples?
|
|
433
|
+
|
|
434
|
+
- [User Manual](/en/cli/)
|
|
435
|
+
- [Command Reference](../09-command-reference/)
|
|
436
|
+
- [GitHub Repository](https://github.com/cakemail-org/cakemail-cli)
|
|
437
|
+
|
|
438
|
+
### How do I report bugs?
|
|
439
|
+
|
|
440
|
+
Create an issue at:
|
|
441
|
+
https://github.com/cakemail-org/cakemail-cli/issues
|
|
442
|
+
|
|
443
|
+
Include:
|
|
444
|
+
- CLI version (`cakemail --version`)
|
|
445
|
+
- Error message
|
|
446
|
+
- Steps to reproduce
|
|
447
|
+
|
|
448
|
+
### How do I request features?
|
|
449
|
+
|
|
450
|
+
Create a feature request at:
|
|
451
|
+
https://github.com/cakemail-org/cakemail-cli/issues
|
|
452
|
+
|
|
453
|
+
### Where can I get support?
|
|
454
|
+
|
|
455
|
+
- Email: support@cakemail.com
|
|
456
|
+
- Documentation: https://docs.cakemail.com
|
|
457
|
+
- Community: https://community.cakemail.com
|
|
458
|
+
|
|
459
|
+
## Version-Specific Questions
|
|
460
|
+
|
|
461
|
+
### What version should I use?
|
|
462
|
+
|
|
463
|
+
Always use the latest stable version:
|
|
464
|
+
|
|
465
|
+
```bash
|
|
466
|
+
$ npm update -g @cakemail-org/cakemail-cli
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
### How do I check my version?
|
|
470
|
+
|
|
471
|
+
```bash
|
|
472
|
+
$ cakemail --version
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
## Still Have Questions?
|
|
476
|
+
|
|
477
|
+
If your question isn't answered here:
|
|
478
|
+
|
|
479
|
+
1. Check the [User Manual](/en/cli/)
|
|
480
|
+
2. Search [Command Reference](../09-command-reference/)
|
|
481
|
+
3. Review [Troubleshooting](../10-troubleshooting/)
|
|
482
|
+
4. Contact support@cakemail.com
|
|
483
|
+
|
|
484
|
+
We're here to help!
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
# Glossary
|
|
2
|
+
|
|
3
|
+
Definitions of key terms and concepts used in the Cakemail CLI documentation.
|
|
4
|
+
|
|
5
|
+
## A
|
|
6
|
+
|
|
7
|
+
**Account**
|
|
8
|
+
Your Cakemail account with associated plan, limits, and settings.
|
|
9
|
+
|
|
10
|
+
**API (Application Programming Interface)**
|
|
11
|
+
Interface that allows the CLI to communicate with Cakemail services.
|
|
12
|
+
|
|
13
|
+
**Attribute (Custom)**
|
|
14
|
+
Additional data fields you define to store custom contact information beyond email and name.
|
|
15
|
+
|
|
16
|
+
## B
|
|
17
|
+
|
|
18
|
+
**Batch Mode**
|
|
19
|
+
Non-interactive mode for running CLI commands in scripts without confirmation prompts.
|
|
20
|
+
|
|
21
|
+
**Bounce**
|
|
22
|
+
Failed email delivery. Can be hard (permanent) or soft (temporary).
|
|
23
|
+
|
|
24
|
+
**Bounce Rate**
|
|
25
|
+
Percentage of sent emails that bounced: (Bounces / Sent) × 100
|
|
26
|
+
|
|
27
|
+
## C
|
|
28
|
+
|
|
29
|
+
**Campaign**
|
|
30
|
+
An email message sent to a list or segment of contacts.
|
|
31
|
+
|
|
32
|
+
**Click Rate (CTR)**
|
|
33
|
+
Percentage of delivered emails where recipient clicked a link: (Unique Clicks / Delivered) × 100
|
|
34
|
+
|
|
35
|
+
**Click-to-Open Rate (CTOR)**
|
|
36
|
+
Percentage of email openers who clicked a link: (Unique Clicks / Unique Opens) × 100
|
|
37
|
+
|
|
38
|
+
**Contact**
|
|
39
|
+
An email subscriber in your lists with associated data.
|
|
40
|
+
|
|
41
|
+
**CSV (Comma-Separated Values)**
|
|
42
|
+
File format used for importing/exporting contact data.
|
|
43
|
+
|
|
44
|
+
**Custom Attribute**
|
|
45
|
+
See Attribute.
|
|
46
|
+
|
|
47
|
+
## D
|
|
48
|
+
|
|
49
|
+
**Deliverability**
|
|
50
|
+
Ability to successfully deliver emails to recipients' inboxes.
|
|
51
|
+
|
|
52
|
+
**Delivery Rate**
|
|
53
|
+
Percentage of emails successfully delivered: (Delivered / Sent) × 100
|
|
54
|
+
|
|
55
|
+
**Double Opt-In**
|
|
56
|
+
Subscription process requiring email confirmation before adding contact to list.
|
|
57
|
+
|
|
58
|
+
**Draft**
|
|
59
|
+
Campaign state before scheduling or sending.
|
|
60
|
+
|
|
61
|
+
## E
|
|
62
|
+
|
|
63
|
+
**Engagement**
|
|
64
|
+
Measure of how recipients interact with emails (opens, clicks).
|
|
65
|
+
|
|
66
|
+
**Export**
|
|
67
|
+
Process of downloading contact or campaign data from Cakemail.
|
|
68
|
+
|
|
69
|
+
## F
|
|
70
|
+
|
|
71
|
+
**Filter**
|
|
72
|
+
Query parameter to narrow results based on specific criteria.
|
|
73
|
+
|
|
74
|
+
**Format**
|
|
75
|
+
Output format for CLI commands (table, json, csv, compact).
|
|
76
|
+
|
|
77
|
+
## H
|
|
78
|
+
|
|
79
|
+
**Hard Bounce**
|
|
80
|
+
Permanent delivery failure (invalid email, domain doesn't exist).
|
|
81
|
+
|
|
82
|
+
**HTML**
|
|
83
|
+
Email content format supporting rich text, images, and styling.
|
|
84
|
+
|
|
85
|
+
## I
|
|
86
|
+
|
|
87
|
+
**Import**
|
|
88
|
+
Process of uploading contact data to Cakemail from external source.
|
|
89
|
+
|
|
90
|
+
**ISO Format**
|
|
91
|
+
Standard date format: YYYY-MM-DD (e.g., 2024-03-15).
|
|
92
|
+
|
|
93
|
+
## J
|
|
94
|
+
|
|
95
|
+
**JSON (JavaScript Object Notation)**
|
|
96
|
+
Data format used for structured data exchange and CLI output.
|
|
97
|
+
|
|
98
|
+
## K
|
|
99
|
+
|
|
100
|
+
**Key Result**
|
|
101
|
+
See KPI.
|
|
102
|
+
|
|
103
|
+
**KPI (Key Performance Indicator)**
|
|
104
|
+
Metric used to evaluate campaign success (open rate, click rate, etc.).
|
|
105
|
+
|
|
106
|
+
## L
|
|
107
|
+
|
|
108
|
+
**List**
|
|
109
|
+
Static collection of contacts you manage manually.
|
|
110
|
+
|
|
111
|
+
**List Health**
|
|
112
|
+
Measure of list quality based on active vs. inactive contacts.
|
|
113
|
+
|
|
114
|
+
## M
|
|
115
|
+
|
|
116
|
+
**Merge Tag**
|
|
117
|
+
Placeholder in email content replaced with contact-specific data (e.g., {{first_name}}).
|
|
118
|
+
|
|
119
|
+
**MRR (Monthly Recurring Revenue)**
|
|
120
|
+
Predictable revenue metric for subscription businesses.
|
|
121
|
+
|
|
122
|
+
## O
|
|
123
|
+
|
|
124
|
+
**Open**
|
|
125
|
+
Tracked event when recipient opens an email.
|
|
126
|
+
|
|
127
|
+
**Open Rate**
|
|
128
|
+
Percentage of delivered emails that were opened: (Unique Opens / Delivered) × 100
|
|
129
|
+
|
|
130
|
+
## P
|
|
131
|
+
|
|
132
|
+
**Pagination**
|
|
133
|
+
Dividing large result sets into pages for easier handling.
|
|
134
|
+
|
|
135
|
+
**Plain Text**
|
|
136
|
+
Email content without HTML formatting.
|
|
137
|
+
|
|
138
|
+
**Profile**
|
|
139
|
+
CLI behavior mode (developer, marketer, balanced) affecting output verbosity and confirmation prompts.
|
|
140
|
+
|
|
141
|
+
## Q
|
|
142
|
+
|
|
143
|
+
**Query**
|
|
144
|
+
Request to filter or search data using specific criteria.
|
|
145
|
+
|
|
146
|
+
**Quota**
|
|
147
|
+
Account limits for contacts, emails sent, etc.
|
|
148
|
+
|
|
149
|
+
## R
|
|
150
|
+
|
|
151
|
+
**Rate Limiting**
|
|
152
|
+
Restriction on number of API requests in a time period.
|
|
153
|
+
|
|
154
|
+
**Recipient**
|
|
155
|
+
Contact who receives a campaign.
|
|
156
|
+
|
|
157
|
+
## S
|
|
158
|
+
|
|
159
|
+
**Segment**
|
|
160
|
+
Dynamic group of contacts automatically updated based on conditions.
|
|
161
|
+
|
|
162
|
+
**Sender**
|
|
163
|
+
Verified email address used as campaign sender.
|
|
164
|
+
|
|
165
|
+
**Smart Default**
|
|
166
|
+
Automatic detection of list/sender when only one exists (v1.4.0+).
|
|
167
|
+
|
|
168
|
+
**Soft Bounce**
|
|
169
|
+
Temporary delivery failure (inbox full, server temporarily unavailable).
|
|
170
|
+
|
|
171
|
+
**Spam Complaint**
|
|
172
|
+
When recipient marks email as spam.
|
|
173
|
+
|
|
174
|
+
**Status**
|
|
175
|
+
State of contact (subscribed, unsubscribed, bounced) or campaign (draft, scheduled, sending, sent).
|
|
176
|
+
|
|
177
|
+
**Subject Line**
|
|
178
|
+
Email subject displayed in recipient's inbox.
|
|
179
|
+
|
|
180
|
+
## T
|
|
181
|
+
|
|
182
|
+
**Template**
|
|
183
|
+
Reusable email design with placeholders for content.
|
|
184
|
+
|
|
185
|
+
**Test Email**
|
|
186
|
+
Preview email sent before campaign launch.
|
|
187
|
+
|
|
188
|
+
**Transactional Email**
|
|
189
|
+
Automated, triggered email (receipts, notifications) vs. marketing campaigns.
|
|
190
|
+
|
|
191
|
+
**Tracking**
|
|
192
|
+
Monitoring email opens and link clicks via invisible pixels and wrapped URLs.
|
|
193
|
+
|
|
194
|
+
## U
|
|
195
|
+
|
|
196
|
+
**Unique Click**
|
|
197
|
+
First click by a specific contact (subsequent clicks not counted).
|
|
198
|
+
|
|
199
|
+
**Unique Open**
|
|
200
|
+
First open by a specific contact (subsequent opens not counted).
|
|
201
|
+
|
|
202
|
+
**Unsubscribe**
|
|
203
|
+
Action where contact opts out of receiving emails.
|
|
204
|
+
|
|
205
|
+
**Unsubscribe Rate**
|
|
206
|
+
Percentage of delivered emails resulting in unsubscribe: (Unsubscribes / Delivered) × 100
|
|
207
|
+
|
|
208
|
+
**UTC (Coordinated Universal Time)**
|
|
209
|
+
Standard time zone reference (timezone +00:00).
|
|
210
|
+
|
|
211
|
+
**UTM Parameters**
|
|
212
|
+
URL tracking parameters for Google Analytics (utm_source, utm_medium, utm_campaign).
|
|
213
|
+
|
|
214
|
+
## V
|
|
215
|
+
|
|
216
|
+
**Verification**
|
|
217
|
+
Process of confirming email address ownership for sender addresses.
|
|
218
|
+
|
|
219
|
+
## W
|
|
220
|
+
|
|
221
|
+
**Webhook**
|
|
222
|
+
HTTP callback that delivers real-time event notifications.
|
|
223
|
+
|
|
224
|
+
**Workflow**
|
|
225
|
+
Automated sequence of CLI commands for common tasks.
|
|
226
|
+
|
|
227
|
+
## Metric Formulas Quick Reference
|
|
228
|
+
|
|
229
|
+
| Metric | Formula |
|
|
230
|
+
|--------|---------|
|
|
231
|
+
| Delivery Rate | (Delivered / Total Recipients) × 100 |
|
|
232
|
+
| Bounce Rate | (Bounced / Total Recipients) × 100 |
|
|
233
|
+
| Open Rate | (Unique Opens / Delivered) × 100 |
|
|
234
|
+
| Click Rate (CTR) | (Unique Clicks / Delivered) × 100 |
|
|
235
|
+
| Click-to-Open Rate (CTOR) | (Unique Clicks / Unique Opens) × 100 |
|
|
236
|
+
| Unsubscribe Rate | (Unsubscribes / Delivered) × 100 |
|
|
237
|
+
| Spam Rate | (Spam Complaints / Delivered) × 100 |
|
|
238
|
+
|
|
239
|
+
## Industry Benchmarks
|
|
240
|
+
|
|
241
|
+
| Metric | Target | Good | Excellent |
|
|
242
|
+
|--------|--------|------|-----------|
|
|
243
|
+
| Delivery Rate | ≥ 95% | ≥ 97% | ≥ 99% |
|
|
244
|
+
| Open Rate | 15-20% | 20-25% | > 25% |
|
|
245
|
+
| Click Rate | 2-3% | 3-5% | > 5% |
|
|
246
|
+
| Unsubscribe Rate | < 0.5% | < 0.3% | < 0.2% |
|
|
247
|
+
| Bounce Rate | < 5% | < 3% | < 2% |
|
|
248
|
+
| Spam Rate | < 0.1% | < 0.05% | < 0.01% |
|
|
249
|
+
|
|
250
|
+
*Note: Benchmarks vary by industry, audience, and email type.*
|
|
File without changes
|