Skip to main content
An SMS campaign sends one personalised text message to a list of contacts. The composer walks you through three steps: choose your audience, write the message, then review and launch. Nothing sends until you confirm on the final step. To start, open SMS Campaigns and click New campaign.
Each workspace can have one active SMS number. That number is requested separately from the default onboarding voice number and becomes available after approval and setup. The New campaign button is disabled until your workspace has an active SMS number — visit the Numbers page to request one.

Step 1 — Select contacts

Choose one of two source modes:
  • Upload a file — upload a CSV or Excel file, review and adjust the detected mobile, email, and name columns, and choose how many valid rows to use.
  • Use contacts — pick eligible contacts from your organisation’s contact list. Select individual contacts, use Fill N to grab the first N eligible contacts, or tick the header checkbox to select every sendable contact in your workspace.
The composer keeps the audience count visible while you work. Contacts and rows that cannot be messaged are excluded before launch, not discovered after the fact.

Upload a file

For a file audience, Voqo reads the file and shows a full mapping preview — the same one you get when importing contacts on the Contacts page:
  • The detected mobile, email, and name columns.
  • Valid, invalid, and duplicate counts.
  • A row-by-row preview so you can see exactly which rows will send, which are duplicates, and which will be skipped, each flagged with the reason.
  • Available merge-field columns.
  • A Use first N valid rows control for smaller test sends or staged rollouts.
If any column is detected incorrectly, open Change mapping and pick the right column for mobile, email, or name. The preview and the valid/invalid/duplicate counts refresh straight away — you never re-upload the file to fix a mapping. Because a campaign can only text a valid mobile, a mobile column is always required here, so there is no “no phone column” option; if no valid mobile numbers are found, the composer blocks you from continuing until you fix the source.

Use contacts

For a contacts audience, pick the people you want to message from your organisation’s contact list. The audience counter at the top of the picker always shows the true number of sendable contacts across your entire database — not just the rows currently on screen — so you always know exactly how many people your campaign will reach. Contacts without a sendable Australian mobile number, and contacts who can’t receive SMS, are excluded from the sendable count.

Who can’t receive SMS

These contacts are excluded from your audience and cannot receive your campaign:
  • Contacts you have opted out of SMS, by replying STOP or by a team member’s opt-out.
  • Contacts who are blocked in Voqo.
  • Contacts with an opt-out reply waiting for review.
  • Contacts marked Do Not Contact or Unsubscribed in your CRM.
  • Contacts with Do Not SMS set in your CRM. This includes contacts archived in AgentBox, because AgentBox turns on Do Not SMS when a contact is archived.
An opt-out for calls, or for email or letters, does not exclude a contact from SMS. For how opt-outs work, see Consent and Opt-outs. Selecting contacts You have three ways to build your audience:
  • Tick individual contacts — click the checkbox next to any contact to add them to your campaign.
  • Select all N sendable contacts — tick the header checkbox to select every sendable contact in your workspace that matches your current filters. The number shown is the true database total, not the visible page. Untick the header checkbox to clear your selection.
  • Fill N — enter a number in the Use first N contacts field and click Fill to select that many eligible contacts from the top of the current sort. Fill passes over anyone the campaign’s Previous campaigns rule would skip, so the number you enter is the number that ends up in your audience. If you already have contacts selected, Voqo asks whether to Replace your selection or Add to it.
Below the field, Voqo shows how many contacts Fill can draw from, for example 180 eligible · 20 skipped. The Fill button label previews the exact count it will apply (for example, “Fill 180”). If you enter a number higher than the eligible total, Voqo clamps it down so the label never overpromises, and an Only 180 eligible badge appears beside the field. After the click, the button reads ✓ Filled 180 recipients. If fewer contacts were eligible than you asked for, Voqo says so plainly: Filled 180 of 200 — that’s every eligible contact matching these filters. If everyone matching your filters would be skipped, the line reads No eligible contacts and Fill is unavailable. Start from a recent upload Click Recent upload to reuse one import batch without uploading the file again. Uploads are listed newest first with their filename, upload date, total rows, created contacts, and status. Use Next and Previous to browse older uploads. Processing and failed uploads remain visible for context, but only completed uploads can be selected; an upload that completes while the picker is open appears as ready automatically. Selecting an upload scopes the table, Fill N, and Select all to active contacts first created by that import. The created count can be lower than the file’s row count because rows that updated an existing contact are not members of the new batch. A contact stays in its original batch if a CRM later takes over that contact, while contacts that have since been removed are excluded. Choosing an upload resets Source to All Sources. Any source or contact filters you apply afterward narrow that upload further. Clear the upload beside its filename to return to the full contact directory. Auto-selection on entry For small and medium workspaces (up to 500 sendable contacts), Voqo pre-selects your full audience on entry so a single click gets you to the next step. For larger workspaces, nothing is selected by default — you have to opt in via Fill N or Select all so a big send is always a deliberate action, never an accident. Filtering contacts Use the filter popover to narrow the contact list before selecting. You can filter by:
  • Source — where the contact came from (e.g. SMS Upload, Manual, CRM).
  • Can’t receive SMS — separates the contacts Voqo won’t text from those it will, for the reasons listed under Who can’t receive SMS.
  • Has name — contacts with a recorded name versus those without.
Filters stack: applying more than one narrows the list further. Filters on Source shape the audience that Select all and Fill N act on. Filters applied client-side (Can’t receive SMS, Has name) narrow only what you can see and tick manually — while those filters are active, the header checkbox falls back to selecting just the visible rows. People your workspace messaged recently are handled separately, by the Don’t message someone if rule described below. That rule is not a view filter. It is applied when your audience is confirmed and again at send time, so it holds however you built the list. Searching contacts Type in the search bar to find a specific contact by name, email, or mobile. Search is a lens for the table, not a scope for the audience — Select all and Fill N ignore the search term and act on the full filtered audience. Click the × button in the search field to clear it. Sorting contacts Use the sort control to reorder contacts by name (A to Z) or by date added (newest first). Fill N takes the first N eligible contacts by the current sort, so change the sort before clicking Fill if you want a different slice. Already-messaged badges While Voqo checks the list, each row shows Checking… and cannot be ticked. A contact your workspace texted inside the window then shows Messaged in the last 30 days on their row, and their tick box stays locked. The badge names the window in force, so a campaign set to ever reads Messaged before instead. Someone waiting on another campaign reads Already queued on another campaign. When you have used Select all, a locked row can still look ticked. The badge is what counts: a badged contact is left out of your audience and is never charged, whether the box appears ticked or not. The badge is windowed, not permanent. Someone you texted outside the window carries no badge and stays selectable. When the campaign is set to Message everyone on this list, no badges appear at all.

Contacts you messaged recently

This rule applies to both source modes — an uploaded file and your contacts. Open Volume in the contact picker. Under Previous campaigns a dropdown reads Don’t message anyone messaged in the last 30 days, or whichever rule your workspace uses by default. Voqo skips anyone your workspace already texted inside that window. The summary reads 14 people won’t be messaged · messaged in the last 30 days, or already queued on another campaign, and those people are never charged to your credits. The window matches on the contact record and on the mobile number the text goes to. That is what stops an overlapping list, a re-uploaded file, or a second Fill N batch from texting someone twice. If the same person exists twice in your contacts, for example because your CRM holds two records for them, Voqo still messages that mobile once. You do not need to delete either record. Two people who share one mobile, such as a household, count as one too: messaging one of them skips the other. One campaign texts each mobile once. To reach the second person, create a separate campaign set to Message everyone on this list after the first text has gone out. If that campaign is scheduled or sending before then, the first campaign skips the first person instead. Only the mobile Voqo would text counts for the match by number. Another contact who shares only a landline, or a mobile this campaign would not text, is not skipped. A contact you already texted on one of their mobiles is still skipped on the others, because the contact record matches. Only campaign messages that reached the carrier count. Inbox replies, messages your team sends from the Inbox, and AI sends never block a campaign. Messages that failed at the carrier do not count either, because they never reached a handset. Fill N skips these people while it fills, so it keeps going down the list until it has N contacts who will all be messaged. Your audience holds N whenever at least N eligible contacts exist. Use first N valid rows on an uploaded file works differently: it takes exactly the first N rows in order. Skipped people use up part of that slice, so fewer than N will actually send. The Ready to launch? dialog shows both numbers: the audience you picked, and a line reading 14 people won’t be messaged · messaged in the last 30 days. The credit estimate beside it counts only the texts that will really go out. Change the rule for one campaign The dropdown starts on your workspace’s default from Settings → Advanced. Pick a different entry to change the rule for this campaign only: Message everyone on this list, a shorter or longer window, or Don’t message anyone who has ever been messaged. Your workspace default does not change. It ignores the window for everyone in this campaign. The campaign therefore texts the people you recently reached plus everyone else. It is not a follow-up control, and it does not select only the people you messaged before. Set the dropdown before you launch. Once a campaign is scheduled, sending, or finished, its audience is locked and the rule can no longer be changed — the campaign page shows a Messaged anyway badge when the campaign was set to message everyone, and that badge is read-only. To reach people a launched campaign skipped, create a new campaign set to Message everyone on this list. The Ready to launch? dialog restates your audience size and credit cost before anything sends, so you can check the number one last time. When the window is Off Every workspace starts at Off, new and existing. Turn it on in Settings → Advanced. When the window is Off, nobody is skipped for having been messaged before. Your campaign will send to everyone you select, including people your team has texted in the past. The Previous campaigns block reads Everyone on this list will be messaged, and no badges appear on contact rows. This composer used to carry its own Exclude previously messaged contacts tick, switched on by default. That tick and its “Some contacts were already messaged” confirmation are gone — the workspace window replaces both, and it covers every campaign your workspace sends rather than one campaign at a time. An admin sets the workspace default in Settings → Advanced, and every campaign can change its own rule in Volume. See Settings Admin Controls.

File rows become organisation contacts

When you campaign from a file, the rows you reserve for the campaign are merged into your organisation’s contacts automatically as the audience is confirmed — there is no toggle to turn this on, and it always runs. Voqo keeps one contact per mobile number: a row that matches an existing contact updates that contact (your saved names are preserved), and a new number becomes a new contact. Each imported contact is stamped with the SMS Upload source, so you can filter for exactly these people on the Contacts page. Contacts owned by a connected CRM are never overwritten. Voqo imports only the rows you reserve for this campaign, never the rest of the uploaded file, so imported contacts and campaign recipients stay one-to-one.
A high invalid count is your early warning. If most rows are flagged, check the detected mobile column first; CRM exports often include landline or office-phone columns before mobile numbers.

Step 2 — Write the message

Write one message body, insert merge fields, and preview what a real recipient will receive. There are no AI-generated variants — the words in the message box are the words that will be sent.

Your details (agent name and company name)

Click Set details to enter your name and agency name. These values pre-fill {{agent_name}} and {{company_name}} in your message. Once you’ve filled both fields, Voqo offers to save them as workspace defaults so they’re pre-filled in future campaigns.

Use merge fields

Use {{first_name}} for the recipient name and {{mobile}} for the phone number. Use {{agent_name}} and {{company_name}} for your details (set via the Set details button). If you add any other {{variable}}, map it to a column from the selected CSV before launch. CSV columns are source fields, not reusable template variables by default. If a recipient is missing data for a mapped variable, launch is blocked until you fix the data, change the mapping, or remove that merge field. Variable chips highlight when already inserted into the message body. The count under the message turns amber when a contact will get more than one segment.

How many segments

The message card and the editor show the character count and the segment count, for example 282 characters · 5 segments. A pasted curly quote, long dash, or ellipsis can make each segment shorter. When a swap would help, the card says so: 3 characters are making each segment shorter. Standard characters would make this 2 segments. Click Optimise this text - save N segments to swap only those characters. Undo puts your exact wording back. The swap leaves emoji, accented letters, and merge fields such as {{first_name}} as you typed them. An emoji gets its own line, for example An emoji makes this 2 segments. Voqo highlights those characters on the message card and in the editor. You can send without the swap. The saved wording is the wording that sends. Each segment costs 5 credits per contact.

Templates and message history

Click Templates & History to open a modal with two tabs:
  • History — shows messages you’ve sent in previous campaigns, sorted by most recently used. Select a message to preview it, then click Use this message to fill it into the editor.
  • Templates — shows starter templates for common use cases (vendor appraisal, seller check-in, open-home follow-up). Select one to preview, then click Use this message to apply it.
Use the search bar to filter messages by content. The history tab shows how many times each message was used and which campaigns it appeared in.

Starter templates

Below the editor, three starter templates are available for quick selection. Click a template name to fill it into the editor. Hover over a template to preview it in the phone mockup on the right.

Step 3 — Review and launch

The final step shows a summary of your campaign (name, audience count, segments per message) alongside the phone preview. Choose when to send:

Hot reply alerts

Hot reply alerts are off by default. Turn on Notify my team about hot replies and add at least one consenting internal recipient (up to 10). When enabled, a new campaign reply classified as a hot lead triggers an immediate, best-effort SMS to every campaign recipient from the campaign’s SMS number. Each recipient consumes the displayed SMS credits, so multiple recipients multiply the cost. Workspace managers can maintain default recipients. Enabling a campaign with no saved recipients copies the workspace defaults into that campaign; campaigns never inherit a live recipient list. Turning alerts off preserves the campaign’s recipients and message for later. Use Reset to workspace recipients to copy the latest workspace defaults explicitly. The reset affects only that campaign, and an enabled campaign must always have at least one recipient. Workspace managers manage the default alert message in Settings → Workspace → Hot lead SMS alerts. Campaigns inherit the latest workspace default until you customize their message. Use Reset to workspace default to resume live inheritance. The editor supports lead name or phone, lead name, lead phone, reply snippet, campaign name, organization name, and Inbox link variables; the required context is identified inline. Alert messages are plain-text SMS. Line breaks and blank lines are preserved exactly in the message that staff receive. The Voqo default uses a short structured format:
The estimate uses representative rendered values, including a full Inbox link, to show the encoding, character count, segments, and credits for each recipient. Actual values can change the final length. Each accepted alert costs 5 credits per rendered SMS segment, per configured recipient. Emoji, smart punctuation, and other non-ASCII characters use Unicode SMS encoding, which has shorter segments and can increase the credit estimate. Provider rejection or a failed attempt is not charged. This is an immediate best-effort alert rather than guaranteed delivery or a delivery receipt. Save the draft to keep recipient and message changes. You can also edit alert settings from the campaign overview. Leaving the recipient list empty disables alerts without blocking launch.
  • Send now — start dispatching as soon as launch succeeds.
  • Schedule — choose a specific date and time.
  • Spread over time — choose how gently to send and see each batch on a calendar, where you can move any batch to its own day and time. Each person gets the message once. See Spread a campaign over time for the limits and controls.
Click Launch now or Schedule to open the confirmation dialog. The dialog shows recipients, campaign name, and scheduled time (if applicable), then asks you to confirm. Once confirmed, messages begin sending (or are queued for the scheduled time). Before launch, Voqo checks that the campaign has a message, a confirmed audience, enough credits, and no unresolved merge fields. If anything is missing, the composer shows the reason and blocks launch. Once launched, open the campaign monitor to watch send status, reply count, failed sends, and pause/resume/cancel actions.

Delete multiple campaigns at once

Old drafts, stale one-offs, and finished campaigns pile up quickly. You can select several campaigns from the SMS Campaigns list and delete them in a single confirmation, on both the active and archived tabs. To select campaigns:
  • In List view, tick the checkbox at the start of each row. Use the checkbox in the header to select every campaign on the current page.
  • In Grid view, hover a campaign card and tick the checkbox that appears in the top-left corner. Use the Select all on this page checkbox above the grid to select every campaign visible.
  • Press Cmd + A (Mac) or Ctrl + A (Windows) while your focus is on the campaigns list to select every campaign on the current page.
Once you’ve selected at least one campaign, a campaigns selected bar appears above the list with a Clear button and a Delete button. Clicking Delete opens a confirmation dialog that asks you to confirm the action. If any of the selected campaigns are still sending, scheduled, or paused, the dialog warns you that deleting will stop message delivery for those live campaigns. Deleting is permanent and cannot be undone. Your selected campaigns will be removed from your SMS Campaigns list, and any live sends they were doing will be cancelled. Reply threads that already exist stay in your Inbox so you don’t lose recent conversations. If a campaign can’t be deleted — for example, because it was already removed from a different browser tab, or an unexpected error occurred — the dialog stays open, lists which campaigns were skipped and why, and confirms how many were successfully deleted. Deleted campaigns disappear from the list at the same time, so you always see the accurate remaining state. Selection is scoped to the current page and current filter. Changing the search term, status filter, or page clears your selection.

Troubleshooting

Why is this contact greyed out in the picker? A greyed contact cannot receive your campaign. The chip next to it gives the reason. No mobile number means there is no Australian mobile on file. Every other greyed contact can’t receive SMS, for the reasons listed under Who can’t receive SMS. These contacts are excluded as you select them, so the audience summary is always accurate. Why are so many of my file rows invalid? The most common cause is the wrong mobile column — CRM exports often list a landline or fax column before the mobile column. Open Change mapping and check the selected mobile column contains mobile numbers; the counts and row preview refresh as soon as you change it, so you can confirm the fix worked before continuing. Individual rows are invalid when the cell is empty, the number is too short, or it isn’t a valid Australian mobile format. Why can’t I move past the audience step? You have no valid recipients yet. Select at least one eligible contact, confirm a file with valid mobile numbers, or reduce Fill N to a value that still leaves sendable recipients. Why did “Select all” only tick the contacts I can see? You have a client-side filter active — Can’t receive SMS or Has name. While one of those is on, the header checkbox falls back to selecting just the visible rows so the tick doesn’t silently ignore your filter. Clear those filters and Select all returns to covering the full database audience. My audience count dropped and I did not change my selection This campaign carries a Don’t message someone if rule, and some of those people were texted inside its window. The summary names the count as N people won’t be messaged · messaged in the last 30 days. You are not charged for them. While the campaign is still a draft, open Volume and choose Message everyone on this list to send anyway. Where did the “Exclude previously messaged” tick go? It has been replaced by the Don’t message someone if rule. An admin sets the default in Settings → Advanced, and the Volume menu shows it on every campaign, where you can change it for that campaign. If the default is Message everyone, nobody is being skipped unless you pick a window in Volume. Why aren’t all my contacts pre-selected on entry? For workspaces with more than 500 sendable contacts, Voqo leaves the selection empty on entry so a giant send is never accidental. Use Fill N to select a batch, or tick the header checkbox to select the full audience. Where did my uploaded file go? There is no separate file library. The rows you campaign from a file are merged into your organisation’s contacts automatically (one contact per mobile number) and tagged with the SMS Upload source. To reuse those people in another campaign, switch the source to Use contacts and filter by the SMS Upload source on the picker. Why is launch blocked for merge fields? A recipient is missing data for one of your variables. Fix the source data or remove the variable before launching; Voqo will not send messages with unresolved placeholders. Why is launch blocked? The composer lists exactly what’s missing: a message, valid recipients, sufficient credits, a valid scheduled time, resolved merge fields, or a selected sender number. Resolve the flagged item and launch again. There is one more reason, and it only appears when the campaign carries a Don’t message someone if rule: every person in your audience was already texted inside the window, or is already queued on another campaign. Add more contacts, or choose Message everyone on this list in Volume to send to them anyway. A campaign where only some people are skipped still launches normally. You usually meet this earlier than launch. When you confirm an audience and every person in it is skipped, Voqo refuses the confirmation there and then, and the message names the window and the way out. Launch stays blocked only when people are skipped after you confirmed — a draft you left open while another campaign queued the same people, for example. If you’re stuck at any step, contact support with your workspace ID and what step you’re on.