Comment → DM
Someone comments a keyword, they get a private message.
Broadcasts
One message to a filtered slice of your inbox.
Sequences
Timed follow-ups that stop when they reply.
Comment → DM
The classic “comment LINK and I’ll send it to you”. PlugKit watches the posts you name, matches the keyword, and sends the DM.
Instagram and Facebook Pages only — no other platform exposes private replies.
Check what actually fired with
GET /v1/comment-automations/{id}/runs.
Broadcasts
One message to many conversations. Preview the audience before you commit:Create and schedule
POST /v1/broadcasts/{id}/send to queue it, or let the schedule fire.
POST /v1/broadcasts/{id}/cancel puts a scheduled broadcast back to draft.
The 24-hour window governs everything
Meta refuses an unlabelled message more than 24 hours after the contact’s last one. That’s whyactiveWithinDays: 1 is the default audience: it is the slice
that will actually be delivered.
You can widen it, and PlugKit will try. Failures then land per recipient, in
the delivery log, rather than failing the whole broadcast:
The audience is frozen at send time
Recipients are resolved once, when sending starts, and written down. A conversation that arrives mid-send isn’t silently added, and a retry after a partial failure doesn’t message the people who already got it twice.Broadcasts run on Instagram, Facebook, WhatsApp and Telegram. X is
deliberately excluded: its DMs are billed per call, and a 500-recipient
broadcast would build an invoice nobody approved.
Sequences
A series of messages sent over time, to whoever enters. Steps carry their own delay, counted from the previous one:stopOnReply: true drops someone out the moment they answer. Leave it on unless
you have a reason: a human reply that keeps getting followed up by a robot is
the fastest way to lose the conversation you just won.
Follow who’s in and where with GET /v1/sequences/{id}/enrollments.
Sequence steps obey the same 24-hour window. A step that comes due outside it
is recorded as failed for that person, with the reason, and the sequence moves
on rather than stalling.
Buttons, not bare links
All three carry a link button:dmButtonLabel / dmButtonUrl on a comment
automation, buttonLabel / buttonUrl on a broadcast and on each sequence
step. Label and URL go together — one without the other is a 400.
Instagram and Facebook render it as a button template, WhatsApp as a CTA,
Telegram as an inline keyboard. Where the platform refuses it, the URL is
appended to the text rather than lost.
Events
Subscribe to webhooks to know what happened:comment.dm_sent when an automation fires, broadcast.finished when a send
completes.