Skip to content
N1
Integrations · Bizon365 · WhatsApp · webinar funnel

A webinar funnel without dragging deals by hand

Client: Online school, NDA Category: Integrations Stack: PHP 8, Bitrix24 REST (cloud), Bizon365 webhooks, ChatApp (WhatsApp), cron, flock, offline tests Timeline: about 3 weeks
Problem

The online school runs multi-day webinars, and managers moved participants' deal stages by hand: who attended, who did not, who to invite to the broadcast. The previous ChatApp integration had spawned ~1,470 extra deals and 261 extra contacts in two days.

Constraints

A live cloud portal with robots and mailings on stages — any mass move immediately sends messages to real people. REST silently ignores some filters and limits execution time, and the server and the portal live in different time zones.

What I did
  • Intake of Bizon365 attendance reports: by broadcast day, a deal moves only forward by stage weights and never rolls back
  • A separate branch for case-study webinars — a task for the owner instead of a new deal, idempotency by an event sha256 key and a dry_run mode with zero writes
  • Moving no-shows to "Did not attend" in batches: writes only with --execute, protection against repeated and parallel runs, protection for those who attended the broadcast
  • An invitation 10 minutes before the broadcast via a trigger stage, returning the deal to its original stage; course buyers are excluded from the mailing
  • Joining a WhatsApp chat via ChatApp moves the deal to the right stage — through a file queue with flock instead of creating new deals
  • A REST wrapper that never reports errors as success and waits on its own until the portal allows requests again
Architecture
Bizon365 / ChatApp → Webhooks and queue → Stage rules → Cron scripts with --execute → Bitrix24 REST
Result

Broadcast invitations reached 628 of 628 participants with no errors, 451 of 451 deals were moved to "Did not attend", and a backlog of 396 deals was cleared; attendee protection filtered out 65 of 78 deals. A contact audit found 564 cards with a phone number in the "Name" field — the source of undeletable duplicates.

What can be reused
"Forward-only" deal movement by stage weights Mass-operation CLI scripts: dry-run by default, writes only with --execute Bitrix24 REST wrapper with honest error handling and rate-limit waiting