Outbound Campaigns Guide
By Alex Bisbe. September 8th.
Module: Outbound Reactivation (Enterprise only) Requires: A CRM integration to fire triggers · your own opted-in database — VoiceB never dials cold, purchased lists.
This guide walks through how to build, launch, and operate an outbound campaign in VoiceB: how a call gets triggered from your own CRM, how VoiceB works around Spain's new "400" commercial-numbering rule, how the low outbound pickup rate is offset with an SMS bridge, and how outcomes flow back into HubSpot, Salesforce, or your own webhook.
What the Outbound Reactivation module is — and isn't
The Outbound module lets an Enterprise client trigger autonomous calls from their own CRM instead of waiting for an inbound lead. It is built for reactivation of an existing, opted-in database — customers who filled a form, gave consent, or have an active commercial relationship. It is explicitly not a cold-calling or purchased-list tool.
What's included:
Trigger API with automatic retries to maximize contact ratio
All post-call features: deterministic outcome classification, CRM write-back
Multi-language agents
Runs strictly on the client's own opted-in database
What VoiceB does not commit to on outbound: we guarantee the mechanism runs flawlessly (trigger, retry, SMS bridge, opt-out, CRM sync). We do not commit to a fixed conversion rate or AI-response rate the way we sometimes benchmark inbound, because outbound pickup behavior is inherently less predictable and is about to get harder still under the October 2026 numbering rules described below.
Architecture at a glance
The one part clients get wrong most often is treating the SMS as a separate "post-call" system. It isn't — it's the same Warm-up SMS feature, just attached to a scheduled call rather than the immediate first one.
The other two recurring mistakes are:
Triggering from a system that doesn't already have consent
Forgetting that starting October 17, 2026 in Spain, the number the call comes from can no longer receive a call back at all — which is exactly why the SMS bridge matters so much
Triggering and scheduling calls from your own system
Configure the agent as Click to Call
Outbound triggering is configured at the agent level, not globally:
Each agent has its own credentials and endpoint. If you run outbound for two different products or two different databases, use two agents so you can tune retries, scripts, and SMS independently.
Fire the trigger from your CRM
Headers:
api-key
Your agent's API Token
signature
HMAC-SHA256 of the request body, signed with your API Secret
Body:
Anything in variables becomes available in the script as {{variable_name}} — this is how your CRM passes context, such as plan, contract end date, or campaign name, into the call without the agent asking for it again.
Reference every variable you send explicitly in the script; unreferenced or undefined variables can cause call failures, so send optional fields as empty strings rather than omitting them.
If your triggering system can't sign requests, such as some marketing automation tools, the agent config exposes a Disable Signature Verification option. Use it only from a trusted internal system, never expose the raw endpoint publicly.
Scheduling the launch itself is a decision you make on your side, not inside VoiceB: the API executes the call the moment it receives the request. "Programming" a campaign launch means your CRM, or the middleware in front of it, queues and paces the POST requests — for example, releasing 500 triggers at 09:00 local time instead of firing a whole database at once.
Batch your launch so retries don't stack multiple campaigns' backoffs into the same evening.
Let the Retry Policy do the re-dialing
A single dial attempt reaches roughly 30–50% of leads; three to four spaced attempts typically lift that above 70%.
Configure the Retry Policy per agent rather than re-triggering manually from your CRM:
Max attempts — total dials including the first. 3–5 is the right range for most B2C outbound; more rarely helps and can raise compliance flags.
Retry on — which outcomes re-trigger a dial: typically
no answered,busy,voicemail. Do not retry onfailed,dropped, orunreachable— those are number-level problems more attempts won't fix.Backoff — Exponential (15 → 30 → 60 → 120 min, capped) for most lead-gen; a custom sequence, such as
15, 60, 240, 1440, when you want a precise cadence.Business hours — respected in the campaign's local timezone, with a weekdays-only option. A retry that would fall outside the window is pushed to the next valid slot, never placed early.
A safe Spain/EU default: 4 attempts, retry on no-answer/busy/voicemail, exponential backoff (15/2/1440), 9:00–20:00 weekdays only.
Every retry is logged as its own call in the dashboard (retry 1/3, retry 2/3...), so you can audit the full attempt chain per lead.
The SMS bridge: one feature, correctly timed
There is only one SMS feature in the product — Warm-up SMS — configured per campaign and sent a defined amount of time, from 1 minute to 1 week, before a scheduled call.
In an inbound or immediate-trigger context, that naturally means "before the very first call." In a CRM-triggered outbound campaign with retries, it naturally means after the first call has already gone unanswered, and before the retry — because that retry is the only scheduled call in the sequence.
Get the cadence right and this single feature does double duty as both a warm-up and a "we just tried to reach you" bridge:
Setting it up
Because it's a free-text field, you write the bridge content directly into it — there's no separate opt-out or callback-number setting; both live in the message body.
Message content
Hi {{name}}, this is {{brand}} — we just tried to reach you about {{topic}}. Call us now on {{inbound_number}} if you'd like to talk, or we'll call you again shortly from {{outbound_number}}. Don't want us to call? Reply STOP.
{{inbound_number}} must be a real, bidirectional number the lead can actually call — never the 400 CLI. Depending on the market this is a geographic or national number, for example +34930XXXXXX (Spain), +1 250 566 XXXX (Canada/US), or +44 1527 65XXXX (UK) — whatever bidirectional line the client already staffs or routes through an IVR.
Opt-out is mandatory, not optional
Every bridge message must include a working opt-out (STOP reply or a link) — this isn't a nice-to-have, it's a legal requirement for commercial communications in Spain and most markets we operate in.
The opt-out must:
Immediately suppress any pending retries for that lead in VoiceB
Be written back into the same outcome payload that reaches the client's CRM (
optOut: true) or fire its own webhook trigger conditionBe treated by the client as authoritative for that phone number from that point on, across every campaign, not just the one it came from
If the call is cancelled or rescheduled before it goes out, the pending SMS is cancelled automatically — no lead ever gets a bridge message for a retry that never happens.
Recommended campaign setup
Always run this as a separate campaign, independent from inbound, inside app.voiceb.ai.
This keeps retry cadence, business-hours rules, and SMS timing isolated from inbound agents, and keeps outbound-specific metrics — contact rate, SMS-driven callbacks, opt-out rate — from diluting inbound conversion reporting.
VoiceB commits to the mechanism working reliably end-to-end — trigger, retry, bridge SMS, opt-out, CRM sync — but not to a fixed conversion rate or AI pickup-response rate, since those depend on factors outside the platform: list quality, time since last contact, and market-wide pickup decline.
Spain, October 17, 2026: the "400" prefix and what it forces you to redesign
Under Ley 10/2025 (customer service law) and the Government's anti-fraud plan, Spain's telecoms regulator has reserved a new nine-digit numbering range — the 400 block — exclusively for commercial calls.
From October 17, 2026:
Every commercial outbound call in Spain must show a
400xxxxxxcaller ID.Telecom operators will block commercial calls that don't use this range.
The 400 range is unidirectional — outbound only. It cannot receive incoming calls. A lead cannot call it back, and it cannot be used as a customer-service number.
400 numbers must be requested through your telephony operator. The CNMC assigns blocks to operators, not directly to businesses, and they must be kept separate from customer-service lines such as geographic and 800/900 lines.
Before October 17, a lead who missed your call could simply call the displayed number back. After October 17, that path disappears entirely for any number in the 400 range. The bridge SMS stops being a nice-to-have and becomes the only route back to a live conversation for a lead who misses the call.
Action items for clients ahead of the deadline:
Writing Script Blocks for outbound agents
Outbound scripts use the same Script Block structure as inbound:
Goal
Role
Objective
Guardrails
Script
Pricing
Objections
Three blocks need outbound-specific adjustments because the lead did not initiate this contact.
Initial Message
An inbound agent can jump straight to helping; an outbound agent has to earn the first five seconds. State who you are, the company, and why you're calling this specific person before asking anything:
"Hello, this is Laia from {{brand}}. I'm calling because {{reason_for_call}} — do you have a minute?"
Guardrails
Add outbound-specific hard rules on top of the standard set:
Always state the reason for the call and the company name within the first two sentences.
Never claim the call is a random check-in if it was triggered by a specific CRM event — reference the real reason.
If the lead says they didn't consent or don't recognize the company, acknowledge, do not argue, and route to the opt-out path.
Respect the configured business-hours and weekday restrictions at the campaign level; the script should never encourage retrying "off the books".
Objections
Outbound leads raise a different first objection set than inbound. Cover these explicitly, in addition to the standard price/timing objections:
"How did you get my number?" → State plainly and honestly: existing customer relationship, form submission, opted-in database. Never deflect.
"I didn't ask for this call." → Acknowledge, offer to place them on the opt-out list immediately, do not attempt to re-pitch.
"Is this a real person or a robot?" → Follow your organization's disclosure policy directly and honestly — never claim to be human if asked directly.
Everything else in the block-editing workflow — versioning, Publish vs. Reset, Script History with Preview/Diff/Restore — works identically for outbound and inbound agents.
Connecting Tools for real-time actions during the call
Outbound calls benefit from the same Tools mechanism as inbound: an HTTP action the agent can call mid-conversation to check or push data.
Typical outbound uses:
Look up the lead's current plan/contract before pitching, so the agent doesn't re-offer what they already have.
Validate that the lead hasn't already opted out in a parallel system before continuing the pitch.
Push a qualified outcome to a downstream system mid-call, such as reserve a slot, rather than waiting for the post-call webhook.
When building a tool:
Write the description as an instruction to the agent — when to call it, what inputs it needs, what it returns — not as internal documentation.
Mark critical parameters as Required so the tool never fires with incomplete data.
Keep endpoint latency under ~2 seconds; slower responses create dead air on the call.
Always script a fallback path for when the tool errors or returns nothing.
Build shared tools, such as "check opt-out status", once at the organization level and reuse them across every outbound agent, rather than duplicating per campaign.
Post-call: getting outcomes into your CRM
Every call — including bridge-SMS follow-ups and opt-outs — should land in the client's CRM without manual work.
Three paths use the same underlying outcome payload.
HubSpot
Salesforce
Salesforce integration follows the same shape as HubSpot — connect at the organization level, authorize, map VoiceB's default and schema fields to Salesforce objects, and set trigger conditions per outcome.
See the Salesforce connection guide for the exact steps, including registering a local External Client App where required.
Webhook (custom CRM / middleware)
For any system without a native connector, configure a webhook at Agent Config → Integrations → Webhook:
Sign the payload (
x-webhook-signature) to verify authenticity on your end.Use Trigger Conditions to decide which outcomes actually fire the webhook. For outbound, it's common to fire on every terminal outcome, including no-answer and opt-out, so your CRM can drive suppression logic, not just the "Sold"/"Valid" set used for pipeline creation.
Compliance checklist before going live
Related documentation
Last updated
Was this helpful?

