Sending and warm-up in Multi Messenger CRM

Multi Messenger CRM

Sending and warm-up

The Sending & warm-up section sends messages by itself, without your involvement. Each messenger account on each phone can send messages to your customers from a list, warm up by chatting with other accounts, or do both in turn.

Phone numbers and device codes in the videos are sample values.

Step by step

Sending & warm-up: step-by-step guide

The guide has 3 parts. Parts 1 and 2 are enough for your first campaign. Steps are numbered within each part: step 2.3 is the third step of part 2. Each step is shown in a short video of the real program interface. The video starts by itself when the step appears on screen. Click a video to open it large.

Part 1 of 3

1The senders table

Each row is one of your WhatsApp, Telegram or MAX accounts on one phone. Here you decide what this account sends and when.

  1. Open “Sending & warm-up”

    In the left panel, click “Sending & warm-up”. A table opens: one row is one messenger account on one phone.

    Every setting is saved as soon as you change it. There is no “Save” button here.

    The table shows only accounts that have a phone number. If a row is missing, enter the number in “SIM cards”.

  2. What a row shows

    From left to right:

    • the run switch, and next to it the phone number in the program;
    • the account number;
    • device_id, the phone code;
    • the application: WhatsApp Personal, WhatsApp Business, Telegram or MAX. Telegram and MAX also show the account slot on the phone;
    • then the campaign settings, see part 2;
    • on the right, the state: what the account is doing right now.

    The number, device_id and application are only shown here; you do not need to change them. The “application” button in the header is a filter: you can, for example, keep only WhatsApp. The filter only changes the view and turns nothing off.

  3. Find an account by number

    Start typing a number in the “Phone” field in the header. The last digits are enough: only matching rows stay in the table.

    The ↕ button next to the field sorts the rows by number. The device_id field works the same way.

  4. The “account” switch is a full stop

    The switch in the “account” column is the main block. When it is off, nothing is sent from this account:

    • no warm-up,
    • no campaign,
    • no replies from “Chats”,
    • no auto-replies.

    Turn it off if the account is blocked or the phone is lent out for a while. For everything else it must be on.

    To simply stop a campaign you do not need this switch. Use the run switch on the left, step 2.5.

Part 2 of 3

2Start a campaign

Five settings in one row, and the account sends your messages to a contact list by itself. The video sets up the last row, number …0007.

  1. Choose the messages

    Click the field in the “Messages (random selection)” column. A list of your messages opens. Tick one or more. A click outside closes the list; the choice is saved by itself.

    If several are ticked, the program picks one at random before each send. The campaign looks more natural, and the messenger is less likely to treat it as spam.

    Only enabled messages with a filled “text” field are listed. HTTP requests, empty and disabled messages are not. To create a message, go to “Messages”. The same messages are used for warm-up, so choose them in any mode.

    Required for campaigns: every chosen message must have an “on success” label in “Messages”, for example “sent”. How to set it. This label tells the program who has already received the message. Without it, the same customer will get the message again and again.

  2. Choose a contact list

    Click the field in the “Contact list” column and choose who to write to, for example “New customers”.

    Lists are created in “Contacts”. Each contact gets the message once: whoever has received it gets the “on success” label from step 2.1, and the program skips them. So running the same list again only sends to those who have not received it yet.

    “— no list —” is only for the “Warm-up” mode. In a campaign without a list the account sends nothing, and the state shows “no contact list”.

  3. Choose the “Campaign” mode

    Click the field in the “mode” column and choose one of three:

    • “Warm-up”: only chatting with other accounts, nothing goes to customers;
    • “Campaign”: messages to customers from the list;
    • “Campaign + warm-up”: in turn, one message to a customer, then several warm-up messages.

    For an ordinary campaign, choose “Campaign”.

    The column is narrow, so the name is cut off: “Ca…” is “Campaign” or “Campaign + warm-up”, “W…” is “Warm-up”. Click the field to see the full name.

  4. Set the pauses

    In the “pause from, sec” and “pause to, sec” columns, enter how many seconds to wait between messages. Before each send the program picks a random number in this range. The video uses 90 to 240 seconds, that is one and a half to four minutes.

    Longer pauses mean a calmer campaign and a lower risk of being blocked.

    The next pause starts only after the phone has sent the previous message. If “to” is less than “from”, the program raises it to “from”. A new account starts with 10 to 60 seconds.

  5. Turn on the run switch

    Click the switch on the left of the row. It turns green. The account starts working by itself: the “state” column shows “pause” with a countdown, and when it reaches zero the first message goes out.

    Turn the switch off to stop the campaign. Turn it on again to continue with those who have not received it yet.

    The switch in the header turns all accounts on or off at once. In the “Campaign” mode, the switch turns off by itself when the list is finished.

  6. Watch the state

    The “state” column shows what the account is doing now. It refreshes by itself every 3 seconds:

    • “pause 1:22”: waiting until the next message;
    • “sending… ⏭ number”: the phone is sending a message to this recipient;
    • “sent → number · 1:22”: the last message went out, a pause runs until the next one;
    • “not sent → number”: the phone could not send the last message;
    • “no recipients for this account · waiting for other accounts”: other accounts are handling the rest of the list;
    • “finished · N not sent: waiting for accounts …”: these customers wait for the accounts that already wrote to them. Turn on the run switch of the listed accounts;
    • “broadcast finished · list complete”: everyone on the list has received it;
    • “MAX warm-up is not supported yet”: see step 3.1;
    • “no messages”: no messages chosen, step 2.1;
    • “no contact list”: no list chosen, step 2.2;
    • “account disabled”: the “account” switch is off, step 1.4;
    • “outside the sending window 09:00–21:00”: it is outside working hours now, step 3.5;
    • “phone_mod is offline”: the program on the computer with the phones has not checked in for more than 30 seconds. Make sure it is running and online;
    • “error: …”: the reason follows the colon.

    Long text is cut off. Hover over the cell to see the full text.

  7. One setting for all accounts

    You do not need to set up every row by hand. Right-click a setting in a finished row and choose “Apply mode to all”. The program asks for confirmation; click “OK”.

    Right-click copies these to all accounts too:

    • messages: “Apply messages to all”;
    • the contact list: “Apply list to all”;
    • pauses and any optional column from part 3: “Apply to all”.

    Each setting is copied separately. For example, copying the mode leaves other accounts' lists and messages as they were. The setting goes to every account in the table, including those hidden by search or a filter.

Part 3 of 3

3Warm-up and fine tuning

Warm-up means the account chats with other accounts so the messenger treats it as a live user and does not block it. This part also covers campaign hours and optional settings.

  1. The “Warm-up” mode

    A new account that starts sending campaigns right away is quickly blocked by the messenger. So it is warmed up first: for several days it chats with other accounts like an ordinary person.

    Choose the “Warm-up” mode, choose messages (step 2.1), set the pauses and turn on the run switch. No contact list is needed: the warm-up server picks the partners.

    Warm-up works for WhatsApp and Telegram. MAX is not supported yet: a MAX row in this mode sends nothing, and the state reads “MAX warm-up is not supported yet”.

  2. The “Campaign + warm-up” mode

    The account alternates: one message to a customer from the list, then several warm-up messages, then a customer again. The campaign is mixed with ordinary chatting and looks more natural.

    How many warm-up messages come between customer messages is set by the Warm-up ratio columns from step 3.3. By default it is one warm-up message.

    A contact list is required in this mode, as for an ordinary campaign. Right after the mode is turned on, the first message goes to a customer. When the list is finished, the run switch does not turn off: the account goes on with warm-up only.

  3. Optional columns

    The gear button at the top right opens the list of optional columns: calls, voice messages, photos and videos for warm-up, campaign hours, Warm-up ratio and others.

    Tick a column and it appears on the right of the table. Untick it and the column hides, but its value is kept and still works.

    For an ordinary campaign you do not need to change anything here: the defaults are fine. What each icon means is in the reference below.

  4. Campaign hours

    In the gear menu, in the “🕘 Campaign hours” group, tick two columns: 🕘⏮ for the start and 🕘⏭ for the end. They appear on the right of the table. If the table does not fit on the screen, scroll it to the right.

    Enter the times, for example 09:00 and 21:00. Messages to customers go out only during these hours; at night the campaign waits.

    The time follows the clock of the server where the program's website runs. By default it is 00:00 to 23:59, the whole day. If the end is earlier than the start, the program sets it equal to the start, and the time limit stops working. A window across midnight, such as 22:00–06:00, cannot be set this way.

  5. Outside campaign hours

    Outside working hours the state reads “outside the sending window 09:00–21:00”. You do not need to do anything: at 09:00 in the morning the campaign continues by itself.

    In the “Campaign + warm-up” mode, customer messages wait outside working hours, while warm-up continues.

Campaign not sending? Check in this order

  1. The account row is in the table — if not, enter the account number in “SIM cards”.
  2. The “account” switch is on — a disabled account sends nothing at all.
  3. The run switch on the left is on — it turns off by itself when the list is finished.
  4. Messages are chosen — only messages with text, not HTTP requests. Otherwise the state shows “no messages”.
  5. A contact list is chosen — it is required for “Campaign” and “Campaign + warm-up”.
  6. The mode is not “Warm-up” — in “Warm-up” nothing goes to customers.
  7. It is within campaign hours — outside 🕘⏮–🕘⏭ customer messages wait.
  8. No “phone_mod is offline” — the program on the computer with the phones must be running and the phones connected.
  9. “finished · N not sent: waiting for accounts …” — these customers are tied to the accounts that already wrote to them. Turn on the run switch of the listed accounts.
  10. A customer gets the message again — the message has no “on success” label, step 2.1. Set it in “Messages”.
  11. The contact has an undelivered or NotAvailable label — the campaign no longer writes to such contacts. See the reference below.

The table and the state refresh by themselves every 3 seconds.

Buttons and clicks

ClickWhat happens
Switch on the leftstart or stop the account
Switch in the headerstart or stop all accounts
Right mouse buttonon a pause, messages, list, mode or optional column: apply to all
↕sort by number or device_id
Gearshow or hide optional columns
ⓘopen this guide at the right place

Reference

This covers what the steps above do not: how the program picks a recipient, which labels it sets by itself, and what each optional column means.

How a campaign recipient is selected

The system starts with contacts from the selected list in the same messenger channel and excludes records already in progress or excluded by campaign labels.

If a recipient has previously communicated with internal accounts, the prior-account rule applies:

  1. If there are no prior accounts, the currently available account may take the recipient.
  2. If prior accounts include accounts currently running the same list, the most recent running prior account owns the recipient. Other accounts skip it.
  3. If no prior account is running but a prior account still exists and has not been manually disabled, the contact receives the ждёт аккаунт label and waits for that account.
  4. If all prior accounts have been manually disabled, removed or no longer have a working number, another available account may take the recipient.

This preserves an existing sender relationship while still allowing the campaign to continue when the previous account has actually dropped out.

Campaign labels

2send and sent are not hard-coded system stages. They are a common workflow built from a contact list and template labels. The campaign mechanism itself relies especially on sending, undelivered, NotAvailable and ждёт аккаунт.

A typical flow is:

2send → sending → sent

Here sent is an example success label assigned to the template.

Automatic behavior:

  • sending is applied as soon as the real message enters the queue, preventing another account from taking the same recipient at the same time;
  • while the message remains pending or sending, the intermediate label stays in place;
  • on sent or read, sending is removed and the success label changes of the actual sent template are applied;
  • on failed, sending is removed, the template’s failure label changes are applied, and the contact may return to the pool;
  • after three consecutive failed attempts, undelivered is applied and the contact drops out of further campaign sending;
  • NotAvailable excludes a number determined to be unavailable in the messenger;
  • ждёт аккаунт means the recipient is waiting for a prior account that is currently not running.

A contact that already has any success label from the selected template pool is also skipped on later attempts. This makes rerunning the same list behave as a send-to-remaining operation.

Optional columns: reference

Legend: 🔥 — warm-up; ⏳ — delay; ⛔ — threshold; ⏮ — minimum or start; ⏭ — maximum or end; ↑ — outgoing or sent; ↓ — incoming or received; % — probability; Σ — cumulative counter. Durations and delays are in seconds.

The combined probabilities for 📞%, 🎙️%, 📷% and 🎥% cannot exceed 100%. 👍% and 😊% are independent and may both occur.

Warm-up text messages

  • 🔥⏳⛔⏮ (warm_msg_stop_pause_min_sec) — minimum warm-up message delay threshold, seconds.
  • 🔥⏳➕ (warm_msg_pause_decrement) — delay adjustment after each sent message. A negative value, default -5, shortens the delay.
  • 🔥⏳⛔⏭ (warm_msg_stop_pause_max_sec) — maximum warm-up message delay threshold, seconds.
  • 🔥💬↑ (warm_msg_sent_counter_qty) — cumulative number of sent warm-up text messages.
  • 🔥💬↓ (warm_msg_receive_counter_qty) — cumulative number of received warm-up text messages.

Warm-up calls

  • 🔥📞% (warm_call_prob_percent) — probability of an outgoing warm-up call after a message.
  • 🔥📞⏮ (warm_call_outgoing_duration_min_sec) — minimum outgoing call duration.
  • 🔥📞⏭ (warm_call_outgoing_duration_max_sec) — maximum outgoing call duration.
  • 🔥📞↑ (warm_call_sent_counter_qty) — cumulative outgoing warm-up call count.
  • 🔥📞↓ (warm_call_receive_counter_qty) — cumulative incoming warm-up call count.

Voice messages and audio attachments

  • 🔥🎙️% (warm_voice_message_prob_percent) — probability of sending a voice message.
  • 🔥🎙️⏮ (warm_voice_message_outgoing_duration_min_sec) — minimum voice-message recording duration.
  • 🔥🎙️⏭ (warm_voice_message_outgoing_duration_max_sec) — maximum voice-message recording duration.
  • 🔥🎤↑ (warm_audio_sent_counter_qty) — cumulative sent audio-file count, excluding voice messages.
  • 🔥🎤↓ (warm_audio_receive_counter_qty) — cumulative received audio-file count, excluding voice messages.

Photos

  • 📷% (warm_image_prob_percent) — probability of sending a photo.
  • 📷↑Σ (warm_image_sent_counter_qty) — cumulative sent photo count.
  • 📷↓Σ (warm_image_receive_counter_qty) — cumulative received photo count.

Videos

  • 🔥🎥% (warm_video_prob_percent) — probability of sending a video.
  • 🔥🎥↑ (warm_video_sent_counter_qty) — cumulative sent video attachment count.
  • 🔥🎥↓ (warm_video_receive_counter_qty) — cumulative received video attachment count.

Reactions and standalone emoji

  • 👍% (warm_reaction_answer_prob_percent) — probability of additionally reacting to the latest chat message on warm_out. It does not replace the text; 0 disables the action.
  • 😊% (warm_emoji_answer_prob_percent) — probability of additionally sending a random emoji as a separate warm_out message. It does not replace the text; 0 disables the action.

Allowed campaign time

  • 🕘⏮ (send_allowed_from) — start of the allowed time for real campaign messages.
  • 🕘⏭ (send_allowed_to) — end of the allowed time. If it is set earlier than the start, it is raised to the start value.

Warm-up ratio in mixed mode

  • 🔥🔀⏮ (warm_ratio_min) — minimum number of warm-up messages between real sends.
  • 🔥🔀⏭ (warm_ratio_max) — maximum number of warm-up messages between real sends.

Both values are at least 1. If the maximum is below the minimum, it is raised to the minimum. After a real message, the system randomly chooses an integer from this range.

Pool key

  • 🔑1/0 (warm_pool_key_enabled) — 1 includes pool_key in the AndroidSender warm-up request; 0 disables pool-key use.
  • 🔑key (warm_pool_key) — secret pool key shared by several offices. The accepted format is 1–64 Latin letters, digits, _ or -.