@koda-sl/baker-cli 0.311.0-dev.64b243bc4 → 0.312.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/README.md +10 -1
- package/dist/{chunk-ZBC4NFST.js → chunk-WONWYE7B.js} +4 -4
- package/dist/chunk-WONWYE7B.js.map +1 -0
- package/dist/cli.js +970 -739
- package/dist/cli.js.map +1 -1
- package/dist/engine/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-ZBC4NFST.js.map +0 -1
package/README.md
CHANGED
|
@@ -886,8 +886,17 @@ baker ads meta audiences --account-id act_123
|
|
|
886
886
|
# "Is the pixel firing?"
|
|
887
887
|
baker ads meta pixels --account-id act_123
|
|
888
888
|
baker ads meta pixels --pixel-id 9988 --stats --days 7
|
|
889
|
+
|
|
890
|
+
# "Why isn't it using MY conversions?"
|
|
891
|
+
baker ads meta custom-conversions --account-id act_123 # id, event category, pixel, and the rule as a phrase
|
|
892
|
+
baker ads meta custom-conversions --account-id act_123 --full # raw rule JSON, retention, timestamps
|
|
889
893
|
```
|
|
890
894
|
|
|
895
|
+
**Custom Conversions** — a marketer's own conversion (a pixel event narrowed by a rule, e.g. "PageView on /gracias"), which is what "my conversions" almost always means. To optimize an ad set toward one, pass `--custom-conversion-id <id>` and nothing else: Baker reads the conversion off Meta at stage time and fills its pixel, event category and rule, the same four fields Ads Manager stores. Staging refuses an archived or unavailable conversion, one not built on a pixel, and one belonging to another ad account. Deleting one — in Events Manager or over the API — archives it: it leaves the panel but stays readable on the account, so the listing still shows it flagged `archived`.
|
|
896
|
+
|
|
897
|
+
`custom-conversions create` stages a new one (`--name`, `--pixel-id`, `--custom-event-type`, plus `--url-contains "/gracias"` or `--rule-file`). A rule is a tree of `and`/`or` over `{"<field>":{"<operator>":<value>}}` leaves, where the field is `URL`, `event`, `referrer` or any event parameter the pixel sends (`value`, `content_category`, or your own), so `--url-contains` is only the single-URL shortcut and `--rule-file` reaches the rest. Meta accepts an unmatchable rule and reports success, so staging refuses unknown operators, bare values, empty branches and two conditions written side by side where `and` was meant, before the op is staged. A case-sensitive `contains` is a real operator and gets through — on a URL always write `i_contains`. It is create-only, because Meta's edge offers neither update nor a delete that removes — which is also why staging refuses a create whose pixel, event category and rule already exist, live on the account or staged earlier in the same chat, or one that would pass Meta's cap of 100 per account. An ad set in the same chat can chain to it with `--custom-conversion-id meta_temp_*`.
|
|
898
|
+
|
|
899
|
+
|
|
891
900
|
**Instant-form leads** — `leads` returns **one page** plus a `nextCursor`; a response carrying one is not the whole set, so follow it before quoting any total. Email and phone answers come back masked unless `--full`. Both commands need Meta lead ads switched on for the company (`pages_manage_ads` + `leads_retrieval`, granted at connect time — a company switched on after connecting must reconnect Meta first); each says which of the two is missing.
|
|
892
901
|
|
|
893
902
|
|
|
@@ -1373,7 +1382,7 @@ baker funnel --steps '[...]' # the whole funnel, restat
|
|
|
1373
1382
|
|
|
1374
1383
|
**Every write says what it dropped.** `--step` changes one step and leaves the rest as it stands; `--steps` replaces the whole funnel and `--preset` draws over it. Every write returns `removed[]` and a `REMOVED steps:` hint when a step went, so a restatement written from a stale read is caught in the same turn.
|
|
1375
1384
|
|
|
1376
|
-
**A step says what triggers it, and every trigger is PICKED from `--moments`.** `triggers` is a list and any one of them firing is enough. Three kinds: `{"kind":"event","eventKey":"submit:contact"}` for anything the company's Forms, pages or systems produced (`moments.events`, `moments.sources`), `{"kind":"landing","landingId":"<id>"}` for one landing being viewed (`moments.landings`), and `{"kind":"any_landing"}` for any landing — what the default first step listens for. Nothing has to be named first: the event is used by its own key, and the step shows it by its own words. `moments.events[].origin` tells a page's event (`site`) from one the client's own systems sent (`systems`); `moments.sources` lists the client's systems by the `page:<name>` key each raises, pickable before the first send arrives.
|
|
1385
|
+
**A step says what triggers it, and every trigger is PICKED from `--moments`.** `triggers` is a list and any one of them firing is enough. Three kinds: `{"kind":"event","eventKey":"submit:contact"}` for anything the company's Forms, pages or systems produced (`moments.events`, `moments.sources`), `{"kind":"landing","landingId":"<id>"}` for one landing being viewed (`moments.landings`), and `{"kind":"any_landing"}` for any landing — what the default first step listens for. Nothing has to be named first: the event is used by its own key, and the step shows it by its own words. `moments.events[].origin` tells a page's event (`site`) from one the client's own systems sent (`systems`); `moments.sources` lists the client's systems by the `page:<name>` key each raises, pickable before the first send arrives. A key typed from memory saves, publishes and counts nobody forever — the hint "has a trigger and nobody reached it while N people entered" is that mistake caught after the fact. A step written with `offlineConversions`, a `conversion` trigger or an `analytics` trigger is refused before any round trip, with the shape to use.
|
|
1377
1386
|
|
|
1378
1387
|
**A landing being viewed can be a step** — where most funnels start — and never a conversion: `baker analytics conversions` refuses a `view:` key.
|
|
1379
1388
|
|
|
@@ -17,9 +17,9 @@ import {
|
|
|
17
17
|
shouldEscalate
|
|
18
18
|
} from "./chunk-UIQJZGBG.js";
|
|
19
19
|
|
|
20
|
-
//
|
|
20
|
+
// ../../node_modules/.pnpm/safe-stable-stringify@2.5.0/node_modules/safe-stable-stringify/index.js
|
|
21
21
|
var require_safe_stable_stringify = __commonJS({
|
|
22
|
-
"
|
|
22
|
+
"../../node_modules/.pnpm/safe-stable-stringify@2.5.0/node_modules/safe-stable-stringify/index.js"(exports, module) {
|
|
23
23
|
"use strict";
|
|
24
24
|
var { hasOwnProperty } = Object.prototype;
|
|
25
25
|
var stringify = configure2();
|
|
@@ -1111,7 +1111,7 @@ function resolveAdaptFormats(params) {
|
|
|
1111
1111
|
return params.formats ?? [];
|
|
1112
1112
|
}
|
|
1113
1113
|
|
|
1114
|
-
//
|
|
1114
|
+
// ../../node_modules/.pnpm/safe-stable-stringify@2.5.0/node_modules/safe-stable-stringify/esm/wrapper.js
|
|
1115
1115
|
var import__ = __toESM(require_safe_stable_stringify(), 1);
|
|
1116
1116
|
var configure = import__.default.configure;
|
|
1117
1117
|
var wrapper_default = import__.default;
|
|
@@ -9661,4 +9661,4 @@ export {
|
|
|
9661
9661
|
defaultRegistry,
|
|
9662
9662
|
createEngineFromEnv
|
|
9663
9663
|
};
|
|
9664
|
-
//# sourceMappingURL=chunk-
|
|
9664
|
+
//# sourceMappingURL=chunk-WONWYE7B.js.map
|