@koda-sl/baker-cli 0.249.0 → 0.250.0-dev.8313698e6
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/dist/cli.js
CHANGED
|
@@ -58,7 +58,7 @@ import {
|
|
|
58
58
|
ulid,
|
|
59
59
|
validateCanvasDeep,
|
|
60
60
|
ytDlpBlockSignal
|
|
61
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-77OP3PDC.js";
|
|
62
62
|
import {
|
|
63
63
|
csvOrJson,
|
|
64
64
|
daysAgoIso,
|
|
@@ -19266,6 +19266,14 @@ var CTA_TYPES2 = [
|
|
|
19266
19266
|
"BUY_TICKETS",
|
|
19267
19267
|
"NO_BUTTON"
|
|
19268
19268
|
];
|
|
19269
|
+
var LEAD_FORM_CTA_TYPES = [
|
|
19270
|
+
"APPLY_NOW",
|
|
19271
|
+
"DOWNLOAD",
|
|
19272
|
+
"GET_QUOTE",
|
|
19273
|
+
"LEARN_MORE",
|
|
19274
|
+
"SIGN_UP",
|
|
19275
|
+
"SUBSCRIBE"
|
|
19276
|
+
];
|
|
19269
19277
|
var AD_FORMATS2 = ["SINGLE_IMAGE", "CAROUSEL", "SINGLE_VIDEO"];
|
|
19270
19278
|
var ENROLL_STATUSES = ["OPT_IN", "OPT_OUT"];
|
|
19271
19279
|
var STAGEABLE_CREATE_STATUSES3 = ["ACTIVE", "PAUSED"];
|
|
@@ -19697,6 +19705,14 @@ var callToActionSchema = z25.object({
|
|
|
19697
19705
|
* "Choose or create an instant form for your leads campaign".
|
|
19698
19706
|
*/
|
|
19699
19707
|
lead_gen_form_id: z25.string().regex(NUMERIC_ID_REGEX3).optional()
|
|
19708
|
+
}).superRefine((p, ctx) => {
|
|
19709
|
+
if (p.lead_gen_form_id && !LEAD_FORM_CTA_TYPES.some((allowed) => allowed === p.type)) {
|
|
19710
|
+
ctx.addIssue({
|
|
19711
|
+
code: "custom",
|
|
19712
|
+
path: ["type"],
|
|
19713
|
+
message: `${p.type} cannot open an instant form \u2014 Meta refuses it (subcode 1856030). Use one of ${LEAD_FORM_CTA_TYPES.join(", ")}, or drop lead_gen_form_id if this ad should go to the website.`
|
|
19714
|
+
});
|
|
19715
|
+
}
|
|
19700
19716
|
});
|
|
19701
19717
|
var creativeEnhancementsSchema = z25.object({
|
|
19702
19718
|
standardEnhancements: z25.enum(ENROLL_STATUSES).optional(),
|
|
@@ -20441,7 +20457,7 @@ Example: baker ads meta creatives create --page 555 --message "Save now" --link
|
|
|
20441
20457
|
cta: { type: "string", description: "Call-to-action type (SHOP_NOW|LEARN_MORE|SIGN_UP|\u2026)" },
|
|
20442
20458
|
"lead-form": {
|
|
20443
20459
|
type: "string",
|
|
20444
|
-
description: "Instant form id the button opens \u2014 REQUIRED for an ad set that collects leads on the ad. List them with `baker ads meta lead-forms
|
|
20460
|
+
description: "Instant form id the button opens \u2014 REQUIRED for an ad set that collects leads on the ad. List them with `baker ads meta lead-forms`. With a form, --cta must be APPLY_NOW|DOWNLOAD|GET_QUOTE|LEARN_MORE|SIGN_UP|SUBSCRIBE"
|
|
20445
20461
|
},
|
|
20446
20462
|
"image-hash": { type: "string", description: "Meta ad-image hash (already uploaded)" },
|
|
20447
20463
|
"image-ref": { type: "string", description: "meta_temp_* ref of a staged media upload" },
|
|
@@ -23686,7 +23702,7 @@ var ANALYTICS_PRESET_INFO = [
|
|
|
23686
23702
|
},
|
|
23687
23703
|
{
|
|
23688
23704
|
name: "flow",
|
|
23689
|
-
description: "One Form in depth: conversions counted at the node that produced them, step-to-step paths for a branching Form, the per-step table, every trigger raised, and each marked conversion by name. Read convertedSessions rather than submits \u2014 a Form whose scheduling widget sits mid-flow never emits a submit and reports zero on every other report. An empty `conversions` array means nobody has marked what this Form is for, so the numbers rest on a built-in guess; mark it in the Forms builder or with `conversions: [{ triggerId }]` on the node.",
|
|
23705
|
+
description: "One Form in depth: conversions counted at the node that produced them, step-to-step paths for a branching Form, the per-step table, every trigger raised, and each marked conversion by name. Read convertedSessions rather than submits \u2014 a Form whose scheduling widget sits mid-flow never emits a submit and reports zero on every other report. An empty `conversions` array means nobody has marked what this Form is for, so the numbers rest on a built-in guess; mark it in the Forms builder or with `conversions: [{ triggerId }]` on the node. `flowDestinations` is the other half and is evidence rather than a count: which Forms demonstrably handed something over in this window. Read it against the scaffold's `flow-no-destination` warning before acting on one \u2014 the stored picture of a Form is only rewritten when it is published, so a destination added since then shows there and not in the tree.",
|
|
23690
23706
|
playbook: "flow-builder \u2014 fix the branch or the step that loses people"
|
|
23691
23707
|
},
|
|
23692
23708
|
{
|
|
@@ -24165,7 +24181,7 @@ var funnelCommand = presetCommand({
|
|
|
24165
24181
|
var flowCommand = presetCommand({
|
|
24166
24182
|
name: "flow",
|
|
24167
24183
|
preset: "flow",
|
|
24168
|
-
description: "One Form in depth: how many people it converted, where they went between steps, the per-step table, and every trigger it raised. Every count is DISTINCT VISITS, so quote shares against `funnels[].visits` \u2014 the visits that opened the Form \u2014 and never against `starts`, which is only the visits that touched it. The gap between the two is people who read the Form and left, and on most Forms it is the largest loss there is. Read `flowSummary.convertedSessions`, not `submits` \u2014 a Form that books a call on a scheduling node in the MIDDLE of the flow never emits a submit, so it reports zero submits and every one of its real bookings as conversions. `flowPaths` is the flow as edges between steps, bracketed by __flow_start__, __flow_converted__ and __flow_exit__, which is how a branching Form is read at all: a per-step table cannot say that of the people who left step two, forty went to the booking branch and ninety went nowhere.",
|
|
24184
|
+
description: "One Form in depth: how many people it converted, where they went between steps, the per-step table, and every trigger it raised. Every count is DISTINCT VISITS, so quote shares against `funnels[].visits` \u2014 the visits that opened the Form \u2014 and never against `starts`, which is only the visits that touched it. The gap between the two is people who read the Form and left, and on most Forms it is the largest loss there is. Read `flowSummary.convertedSessions`, not `submits` \u2014 a Form that books a call on a scheduling node in the MIDDLE of the flow never emits a submit, so it reports zero submits and every one of its real bookings as conversions. `flowPaths` is the flow as edges between steps, bracketed by __flow_start__, __flow_converted__ and __flow_exit__, which is how a branching Form is read at all: a per-step table cannot say that of the people who left step two, forty went to the booking branch and ninety went nowhere. `flowDestinations` is the other half and is evidence rather than a count: which Forms demonstrably handed something over in this window. Read it against the scaffold's `flow-no-destination` warning before acting on one \u2014 the stored picture of a Form is only rewritten when it is published, so a destination added since then shows there and not in the tree.",
|
|
24169
24185
|
extraArgs: { flow: { type: "string", description: "Form slug (default: every Form)", required: false } },
|
|
24170
24186
|
resolve: (args) => ({ preset: "flow", flowSlug: args.flow ? String(args.flow) : void 0 })
|
|
24171
24187
|
});
|