feat(broadcasts): the 15th module — WhatsApp campaigns over the flow API - #7
Merged
Merged
Conversation
OlegKrasikov
force-pushed
the
w22-broadcasts
branch
from
September 7, 2026 09:24
023b42d to
6299f33
Compare
A campaign is a flow: an entry point (one-time or scheduled) connected to a template block. The module reads every such flow on the bot, lists it with a status derived from the element and the clock (draft / scheduled / sending / sent — the API has no paused state), and edits it through a five-step composer: name and kind, the message (an approved template picked from the catalog and filled, attribute references inserted from the bot's own list), the audience (a two-level AND/OR builder over the contact attributes, with a live recipient count), the schedule (first send on the bot's wall clock, once / weekdays / every N days / on dates, weekdays corrected for the bot's zone), and the review, where a one-time campaign is sent behind a confirm and a scheduled one is armed. Duplicate replays a campaign onto a fresh draft; there is no clone API. The Templates tab is the read-only catalog with a hand-off to WhatsApp Manager, because no public API authors a template. A bot with no WhatsApp number sees a connect state on every surface instead of the server error the catalog query answers. What the live pass found and the code is built around: there are no send statistics (the resolver panics), disabling a scheduled entry point resets it to Draft, the one-time pair is born enabled, an unknown attribute name in a parameter silently creates the attribute, a template block cannot be deleted, and every unregistered error arrives as a bare InternalServerError. All of it is written into the skill. The generated client for this module is joined with `inlineFragmentTypes: 'combine'`, which brings the Flow/Block/BlockElement interface product down from 13.5 MB to 250 KB. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E21NfSAQzT78rt8eK26B6K
OlegKrasikov
force-pushed
the
w22-broadcasts
branch
from
September 7, 2026 09:31
6299f33 to
a1bfdc0
Compare
OlegKrasikov
added a commit
that referenced
this pull request
Sep 8, 2026
The broadcasts module landed on main (#7) and nothing published carries it. Minor bump: a new default module changes what --yes scaffolds. Changed: the manifest version and the 0.4.0 section of the changelog, which the release workflow reads for the GitHub Release body. Claude-Session: https://claude.ai/code/session_01E21NfSAQzT78rt8eK26B6K Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
The broadcasts module: WhatsApp campaigns shaped like an email-marketing tool, over Chatfuel's flow API.
draft/scheduled/sending/sent), filters, search, an inline panel, row actions,⌘Kpalette and keyboard bindings.{{Attribute}}inserted from the bot's own list), audience (two-level AND/OR builder with a live recipient count), schedule (bot wall clock, once / weekdays / every N days / on dates, weekdays corrected by zone), review (send behind a confirm, or arm). Duplicate replays a campaign onto a fresh draft.InternalServerError).Review pass
Four reviewers over the branch before this squash; fixed here:
Repeatingdraft could never be set toOnce; a refused first pick showed nothingrefetchFlowcould revert a write that landed while it was out;writeBlockmerged into a stale flown/ palette could create a draft on a bot with no number;[]walked hidden rowsstatsis not in the bundled schema, the knob rows name the right fileGates
validate,codegen:check,check,lint,test(4040 shell tests),buildgreen. The fourwrite EPIPEproxy tests are the known macOS-only set. Live pass on the Panel bot: use-in-a-campaign, duplicate, repeating→once, kind switch with a filtered audience — all verified, net-zero.🤖 Generated with Claude Code