@cakemail-org/cakemail-cli 1.5.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.
Files changed (234) hide show
  1. package/.claude/settings.local.json +12 -0
  2. package/.env.example +40 -0
  3. package/.env.test.example +45 -0
  4. package/CHANGELOG.md +1031 -0
  5. package/README.md +319 -15
  6. package/audit-formats.js +128 -0
  7. package/cakemail.rb +20 -0
  8. package/dist/cli.js +27 -10
  9. package/dist/cli.js.map +1 -1
  10. package/dist/client.d.ts +2 -0
  11. package/dist/client.d.ts.map +1 -1
  12. package/dist/client.js +16 -6
  13. package/dist/client.js.map +1 -1
  14. package/dist/commands/account.js +1 -1
  15. package/dist/commands/account.js.map +1 -1
  16. package/dist/commands/attributes.js +1 -1
  17. package/dist/commands/attributes.js.map +1 -1
  18. package/dist/commands/campaigns.d.ts.map +1 -1
  19. package/dist/commands/campaigns.js +103 -8
  20. package/dist/commands/campaigns.js.map +1 -1
  21. package/dist/commands/config.d.ts.map +1 -1
  22. package/dist/commands/config.js +63 -4
  23. package/dist/commands/config.js.map +1 -1
  24. package/dist/commands/contacts.d.ts.map +1 -1
  25. package/dist/commands/contacts.js +91 -12
  26. package/dist/commands/contacts.js.map +1 -1
  27. package/dist/commands/emails.js +1 -1
  28. package/dist/commands/emails.js.map +1 -1
  29. package/dist/commands/interests.d.ts +5 -0
  30. package/dist/commands/interests.d.ts.map +1 -0
  31. package/dist/commands/interests.js +172 -0
  32. package/dist/commands/interests.js.map +1 -0
  33. package/dist/commands/lists.d.ts.map +1 -1
  34. package/dist/commands/lists.js +6 -8
  35. package/dist/commands/lists.js.map +1 -1
  36. package/dist/commands/logs.d.ts +5 -0
  37. package/dist/commands/logs.d.ts.map +1 -0
  38. package/dist/commands/logs.js +237 -0
  39. package/dist/commands/logs.js.map +1 -0
  40. package/dist/commands/reports.js +1 -1
  41. package/dist/commands/reports.js.map +1 -1
  42. package/dist/commands/segments.js +1 -1
  43. package/dist/commands/segments.js.map +1 -1
  44. package/dist/commands/senders.d.ts.map +1 -1
  45. package/dist/commands/senders.js +11 -8
  46. package/dist/commands/senders.js.map +1 -1
  47. package/dist/commands/suppressed.js +1 -1
  48. package/dist/commands/suppressed.js.map +1 -1
  49. package/dist/commands/tags.d.ts +5 -0
  50. package/dist/commands/tags.d.ts.map +1 -0
  51. package/dist/commands/tags.js +124 -0
  52. package/dist/commands/tags.js.map +1 -0
  53. package/dist/commands/templates.js +1 -1
  54. package/dist/commands/templates.js.map +1 -1
  55. package/dist/commands/transactional-templates.d.ts +5 -0
  56. package/dist/commands/transactional-templates.d.ts.map +1 -0
  57. package/dist/commands/transactional-templates.js +354 -0
  58. package/dist/commands/transactional-templates.js.map +1 -0
  59. package/dist/commands/webhooks.js +1 -1
  60. package/dist/commands/webhooks.js.map +1 -1
  61. package/dist/utils/auth.d.ts +8 -1
  62. package/dist/utils/auth.d.ts.map +1 -1
  63. package/dist/utils/auth.js +39 -11
  64. package/dist/utils/auth.js.map +1 -1
  65. package/dist/utils/config-file.d.ts +7 -0
  66. package/dist/utils/config-file.d.ts.map +1 -1
  67. package/dist/utils/config-file.js +15 -0
  68. package/dist/utils/config-file.js.map +1 -1
  69. package/dist/utils/config.d.ts +2 -0
  70. package/dist/utils/config.d.ts.map +1 -1
  71. package/dist/utils/config.js +12 -4
  72. package/dist/utils/config.js.map +1 -1
  73. package/dist/utils/errors.js +1 -1
  74. package/dist/utils/errors.js.map +1 -1
  75. package/dist/utils/list-defaults.d.ts +33 -0
  76. package/dist/utils/list-defaults.d.ts.map +1 -0
  77. package/dist/utils/list-defaults.js +52 -0
  78. package/dist/utils/list-defaults.js.map +1 -0
  79. package/dist/utils/output.d.ts.map +1 -1
  80. package/dist/utils/output.js +36 -13
  81. package/dist/utils/output.js.map +1 -1
  82. package/dist/utils/progress.d.ts.map +1 -1
  83. package/dist/utils/progress.js +32 -4
  84. package/dist/utils/progress.js.map +1 -1
  85. package/dist/utils/spinner.d.ts +17 -0
  86. package/dist/utils/spinner.d.ts.map +1 -0
  87. package/dist/utils/spinner.js +43 -0
  88. package/dist/utils/spinner.js.map +1 -0
  89. package/docs/DOCUMENTATION-STANDARD.md +1068 -0
  90. package/docs/README.md +161 -0
  91. package/docs/developer/ARCHITECTURE.md +516 -0
  92. package/docs/developer/AUTH.md +204 -0
  93. package/docs/developer/CONTRIBUTING.md +227 -0
  94. package/docs/developer/DOCUMENTATION_SUMMARY.md +346 -0
  95. package/docs/developer/PROJECT_INDEX.md +365 -0
  96. package/docs/planning/API_COVERAGE.md +1045 -0
  97. package/docs/planning/BACKLOG.md +1159 -0
  98. package/docs/planning/PROFILE_SYSTEM_TASKS.md +287 -0
  99. package/docs/planning/UX_IMPLEMENTATION_PLAN.md +691 -0
  100. package/docs/planning/archive/RELEASE_CHECKLIST_v1.3.0.md +332 -0
  101. package/docs/planning/archive/RELEASE_v1.3.0.md +428 -0
  102. package/docs/planning/archive/cakemail-cli-ux-improvements.md +438 -0
  103. package/docs/planning/cakemail-profile-system-plan.md +1121 -0
  104. package/docs/testing/AI_USER_SIMULATION_DESIGN.md +1342 -0
  105. package/docs/testing/KENOGAMI_BIDIRECTIONAL_FLOW.md +1517 -0
  106. package/docs/testing/KENOGAMI_TRUTH_RECONCILIATION_SYSTEM.md +1369 -0
  107. package/docs/user-manual/.obsidian/app.json +1 -0
  108. package/docs/user-manual/.obsidian/appearance.json +1 -0
  109. package/docs/user-manual/.obsidian/core-plugins.json +33 -0
  110. package/docs/user-manual/.obsidian/workspace.json +167 -0
  111. package/docs/user-manual/01-getting-started/01-installation.md +214 -0
  112. package/docs/user-manual/01-getting-started/02-quick-start.md +432 -0
  113. package/docs/user-manual/01-getting-started/03-authentication.md +448 -0
  114. package/docs/user-manual/01-getting-started/04-configuration.md +430 -0
  115. package/docs/user-manual/01-getting-started/05-output-formats.md +447 -0
  116. package/docs/user-manual/02-core-concepts/01-accounts.md +514 -0
  117. package/docs/user-manual/02-core-concepts/02-profile-system.md +771 -0
  118. package/docs/user-manual/02-core-concepts/03-smart-defaults.md +485 -0
  119. package/docs/user-manual/02-core-concepts/04-authentication-methods.md +435 -0
  120. package/docs/user-manual/02-core-concepts/05-pagination-filtering.md +600 -0
  121. package/docs/user-manual/02-core-concepts/06-error-handling.md +718 -0
  122. package/docs/user-manual/02-core-concepts/07-api-coverage.md +483 -0
  123. package/docs/user-manual/03-email-operations/01-senders.md +490 -0
  124. package/docs/user-manual/03-email-operations/02-templates.md +444 -0
  125. package/docs/user-manual/03-email-operations/03-transactional-emails.md +706 -0
  126. package/docs/user-manual/03-email-operations/04-email-tracking.md +407 -0
  127. package/docs/user-manual/04-campaign-management/01-campaigns-basics.md +394 -0
  128. package/docs/user-manual/04-campaign-management/02-campaign-scheduling.md +630 -0
  129. package/docs/user-manual/04-campaign-management/03-campaign-testing.md +997 -0
  130. package/docs/user-manual/04-campaign-management/04-campaign-lifecycle.md +709 -0
  131. package/docs/user-manual/04-campaign-management/05-campaign-links.md +934 -0
  132. package/docs/user-manual/05-contact-management/01-lists.md +836 -0
  133. package/docs/user-manual/05-contact-management/02-contacts.md +1035 -0
  134. package/docs/user-manual/05-contact-management/03-custom-attributes.md +788 -0
  135. package/docs/user-manual/05-contact-management/04-segments.md +1028 -0
  136. package/docs/user-manual/05-contact-management/05-contact-import-export.md +1031 -0
  137. package/docs/user-manual/06-analytics-reporting/01-campaign-analytics.md +867 -0
  138. package/docs/user-manual/06-analytics-reporting/02-account-reports.md +227 -0
  139. package/docs/user-manual/07-integrations/01-webhooks-integration.md +259 -0
  140. package/docs/user-manual/07-integrations/02-automation.md +326 -0
  141. package/docs/user-manual/08-advanced-usage/01-scripting-patterns.md +672 -0
  142. package/docs/user-manual/08-advanced-usage/02-bulk-operations.md +932 -0
  143. package/docs/user-manual/08-advanced-usage/03-ci-cd-integration.md +892 -0
  144. package/docs/user-manual/08-advanced-usage/04-performance-optimization.md +766 -0
  145. package/docs/user-manual/09-command-reference/01-config.md +776 -0
  146. package/docs/user-manual/09-command-reference/02-account.md +652 -0
  147. package/docs/user-manual/09-command-reference/03-lists.md +958 -0
  148. package/docs/user-manual/09-command-reference/04-contacts.md +1408 -0
  149. package/docs/user-manual/09-command-reference/05-attributes.md +617 -0
  150. package/docs/user-manual/09-command-reference/06-segments.md +894 -0
  151. package/docs/user-manual/09-command-reference/07-senders.md +803 -0
  152. package/docs/user-manual/09-command-reference/08-templates.md +818 -0
  153. package/docs/user-manual/09-command-reference/09-campaigns.md +1250 -0
  154. package/docs/user-manual/09-command-reference/10-emails.md +807 -0
  155. package/docs/user-manual/09-command-reference/11-reports.md +1135 -0
  156. package/docs/user-manual/09-command-reference/12-webhooks.md +773 -0
  157. package/docs/user-manual/09-command-reference/13-suppressed.md +797 -0
  158. package/docs/user-manual/09-command-reference/14-interests.md +630 -0
  159. package/docs/user-manual/09-command-reference/15-tags.md +584 -0
  160. package/docs/user-manual/09-command-reference/16-logs.md +656 -0
  161. package/docs/user-manual/09-command-reference/17-transactional-templates.md +850 -0
  162. package/docs/user-manual/10-troubleshooting/01-common-errors.md +457 -0
  163. package/docs/user-manual/10-troubleshooting/02-authentication-issues.md +558 -0
  164. package/docs/user-manual/10-troubleshooting/03-connection-problems.md +634 -0
  165. package/docs/user-manual/10-troubleshooting/04-debugging.md +725 -0
  166. package/docs/user-manual/11-appendix/04-faq.md +484 -0
  167. package/docs/user-manual/11-appendix/05-glossary.md +250 -0
  168. package/docs/user-manual/README.md +0 -0
  169. package/package.json +13 -47
  170. package/src/cli.ts +125 -0
  171. package/src/client.ts +16 -0
  172. package/src/commands/account.ts +267 -0
  173. package/src/commands/accounts.ts +78 -0
  174. package/src/commands/actions.ts +249 -0
  175. package/src/commands/attributes.ts +139 -0
  176. package/src/commands/campaign-blueprints.ts +106 -0
  177. package/src/commands/campaigns.ts +469 -0
  178. package/src/commands/config.ts +77 -0
  179. package/src/commands/contacts.ts +612 -0
  180. package/src/commands/custom-attributes.ts +127 -0
  181. package/src/commands/dkims.ts +117 -0
  182. package/src/commands/domains.ts +82 -0
  183. package/src/commands/email-apis.ts +569 -0
  184. package/src/commands/emails.ts +197 -0
  185. package/src/commands/forms.ts +283 -0
  186. package/src/commands/interests.ts +155 -0
  187. package/src/commands/links.ts +38 -0
  188. package/src/commands/lists.ts +406 -0
  189. package/src/commands/logos.ts +71 -0
  190. package/src/commands/logs.ts +386 -0
  191. package/src/commands/reports.ts +306 -0
  192. package/src/commands/segments.ts +158 -0
  193. package/src/commands/senders.ts +204 -0
  194. package/src/commands/sub-accounts.ts +271 -0
  195. package/src/commands/suppressed-emails.ts +234 -0
  196. package/src/commands/suppressed.ts +198 -0
  197. package/src/commands/system-emails.ts +85 -0
  198. package/src/commands/tags.ts +146 -0
  199. package/src/commands/tasks.ts +116 -0
  200. package/src/commands/templates.ts +189 -0
  201. package/src/commands/tokens.ts +83 -0
  202. package/src/commands/transactional-emails.ts +374 -0
  203. package/src/commands/transactional-templates.ts +385 -0
  204. package/src/commands/users.ts +506 -0
  205. package/src/commands/webhooks.ts +172 -0
  206. package/src/commands/workflow-blueprints.ts +123 -0
  207. package/src/commands/workflows.ts +265 -0
  208. package/src/types/profile.ts +93 -0
  209. package/src/utils/auth.ts +272 -0
  210. package/src/utils/config-file.ts +96 -0
  211. package/src/utils/config.ts +134 -0
  212. package/src/utils/confirm.ts +32 -0
  213. package/src/utils/defaults.ts +99 -0
  214. package/src/utils/errors.ts +116 -0
  215. package/src/utils/interactive.ts +91 -0
  216. package/src/utils/list-defaults.ts +74 -0
  217. package/src/utils/output.ts +190 -0
  218. package/src/utils/progress.ts +320 -0
  219. package/src/utils/spinner.ts +22 -0
  220. package/tests/IMPLEMENTATION_STATUS.md +258 -0
  221. package/tests/PTY_SETUP.md +118 -0
  222. package/tests/PTY_TESTING_GUIDE.md +507 -0
  223. package/tests/README.md +244 -0
  224. package/tests/fixtures/api-responses/campaigns.json +34 -0
  225. package/tests/fixtures/test-config.json +13 -0
  226. package/tests/helpers/cli-runner.ts +128 -0
  227. package/tests/helpers/mock-server.ts +301 -0
  228. package/tests/helpers/pty-runner.ts +181 -0
  229. package/tests/integration/campaigns-real-api.test.ts +196 -0
  230. package/tests/integration/setup-integration.ts +50 -0
  231. package/tests/pty/campaigns.test.ts +241 -0
  232. package/tests/setup.ts +34 -0
  233. package/tsconfig.json +15 -0
  234. 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