Introduction
Channel Broadcast lets your users write one message and send or schedule it across WhatsApp, Telegram, Slack, Facebook Messenger and email — from a single composer with a live per-channel preview. It can pull the text from an existing Ad Copy, attach a generated Ad Creative, write the message with AI, and deliver it now, on a schedule, or on a recurring cadence. Like Social Media Studio, Channel Broadcast is a delivery tool rather than a generation studio. But there’s a key difference in how it’s wired: there are no platform-wide OAuth apps to register. Each user brings their own credentials per connection — their own WhatsApp Business token, their own Telegram bot, their own Slack webhook, their own recipient lists. The admin only decides which channels are available at all. This guide covers the full lifecycle — where to buy it, how to install it, how to enable channels and set the AI rate, how to grant access by plan, the cron requirement for scheduling, how each user connects a channel, and how the composer works.Included Tools
- Compose — the studio. Load text from an ad copy (or write / AI-generate one), attach a creative, add a CTA link, pick target channels, preview per channel, then send now / schedule / repeat.
- Channels — connect, test, pause, reactivate or disconnect destinations. Each connection stores its own encrypted credentials.
- Activity — history of every broadcast with per-channel status (delivered / scheduled / partial / failed), a detail view, reach totals and delete.
Supported channels
Purchase & Installation
Channel Broadcast is distributed through the in-app plugin marketplace — purchasing and installation both happen inside your MagicAds admin. There’s no third-party download.Open the Plugins marketplace
Purchase (if required)
- Free / already owned → installs directly.
- Paid → routes you to the plugin checkout to complete the purchase.
- Extended License holders → plugins flagged “free for Extended License” install without an extra purchase.
Install / activate
- the plugin’s settings (feature flags, the AI message rate and each channel’s enable switch),
- each user’s connected destinations (with encrypted per-connection credentials),
- every composed broadcast (message + media snapshot + CTA + schedule),
- and each channel target within a broadcast (its own status, remote id, retry and recurrence bookkeeping).
channel-broadcast:send-due) which the scheduler runs once a minute.Configure Channel Broadcast
Go to Admin → General Settings → Plugins → Channel Broadcast (/app/admin/general/plugins/channel-broadcast). The screen has these sections.
General
Channels
One switch per channel — WhatsApp, Telegram, Slack, Facebook Messenger, Email. This is the only thing the admin controls per channel; there are no keys to enter here because credentials belong to each user’s connection. A channel only becomes connectable for users when its switch is on.APP_KEY — never in .env.AI message generation
Writing or optimizing a message with AI in the composer uses your central OpenAI key from Admin → AI Settings (openai_key) and spends the user’s shared credits.
- The cost is the AI message rate (credits per 1000 words) set above; users are charged only on a successful generation.
- Everything else — connecting channels, composing, sending and scheduling — is always free.
Scheduling — cron requirement
Immediate broadcasts publish during the web request. Scheduled and recurring broadcasts are delivered by a background command that the Laravel scheduler runs every minute. For scheduling to work, the host must run Laravel’s single scheduler cron entry:channel-broadcast:send-due (guarded so it only runs when installed). Each minute it reclaims any target stuck mid-send, delivers everything that’s due, and re-arms the next run for recurring broadcasts until their end date.
The delivery worker retries a failed target up to 3 times with a growing backoff, processes up to 25 targets per run, and reclaims targets left mid-send for more than 15 minutes (from a crashed run) so they can retry.
Grant access by plan
Access is gated in two layers:- Platform layer — the master Enable Channel Broadcast switch must be on.
- User layer — who actually gets the studio:
- Subscribed users (on a plan): access is governed by the plan’s Channel Broadcast feature toggle. Edit each plan and enable it for the plans that should include it.
- Non-subscribed users (no plan): access only when both Enable Channel Broadcast and Free Tier Access are on.
- Enable the master switch in the Channel Broadcast config.
- Go to Admin → plan management, edit each plan, and turn the Channel Broadcast feature on for the plans that should include it.
- Optionally enable Free Tier Access if you want plan-less users to try it.
Go-live checklist
Install the plugin
Enable channels
Add an OpenAI key (optional)
Set the AI message rate
Confirm the cron
php artisan schedule:run runs every minute on the server.Enable the feature
Grant plan access
Verify as a user
How to Use
All tools live under Channel Broadcast in the user sidebar.Channels — connecting a destination
Each connection is created by the user with their own credentials, then a test message fires automatically so they get instant confidence. From here they can test again, pause (temporarily exclude a destination from broadcasting), reactivate, or disconnect it. What each channel needs:Create a Meta app with WhatsApp
Get the Phone Number ID
Generate a permanent Access Token
whatsapp_business_messaging and whatsapp_business_management permissions. Temporary 24-hour tokens work for testing but expire.Add recipients & test
Telegram
A bot token and the chat / group ID.Create a bot
/newbot, and copy the bot token it gives you.Add the bot to your group/channel
Get the chat / group ID
@userinfobot or the getUpdates API) and paste it, along with the bot token, into the Telegram connection.Slack
An Incoming Webhook URL — the broadcast is posted to whichever channel the webhook targets.Create a Slack app
Enable Incoming Webhooks
Copy the Webhook URL
Facebook Messenger
A Page Access Token, plus one or more recipient PSIDs (Page-Scoped IDs of people who have messaged your Page), one per line.Create a Meta app with Messenger
Generate a Page Access Token
pages_messaging permission (and page messaging access via App Review to reach real users).Collect recipient PSIDs
Compose
The studio centerpiece:Message
Subject
Media
CTA link
Broadcast to
When
Live preview

