> Source: https://docs.virtuo.in/vio/how-to > Step-by-step recipes for common Vio tasks — launch an outbound campaign, connect your own carrier, forward call results to a CRM, and remember callers. # How-to guides **Short, task-focused recipes for the things people do most in Vio.** Each recipe has the quick steps plus a link to the full guide. New to Vio? Do [**Getting started**](/vio/getting-started/sign-in) first, then come back here. ## Launch an outbound campaign Dial a list of contacts with an AI agent, paced and retried automatically. ### Prepare your CSV One row per contact, with a phone column in **E.164 format** (for example `+919876543210`). Add any columns you want to personalise the call, such as `name` — see [**Personalise the greeting**](#personalise-the-greeting-with-the-callers-name) below. ### Create the campaign Go to the **Outbound Dialer**, click **New campaign**, and upload your CSV. Map the phone column and any personalisation columns. ### Choose the agent and pacing Pick the [**agent**](/vio/agents) that should make the calls, then set the **pacing** (how fast to dial) and **retry** behaviour for no-answers. ### Start dialing Review the summary and click **Start**. Vio dials through the list; each completed call appears in your [**call log**](/vio/call-logs) with its transcript, outcome, and cost. Full guide: [**Outbound campaigns**](/vio/telephony/outbound-campaigns). Always respect consent and DND rules for the numbers you dial. ## Connect your own carrier / FreePBX (BYOC) Run calls on your existing phone lines while Vio handles the AI, by pointing your carrier or PBX at Vio over a SIP trunk. ### Add a SIP trunk in Vio Go to **SIP Trunks** → **New trunk**. Vio gives you the connection details (host, credentials) and requires **digest authentication** on inbound trunks for security. ### Point your carrier or FreePBX at Vio In your carrier portal or FreePBX (Trunks → SIP), create a trunk to Vio using the details from the previous step. Route the numbers you want the AI to answer to that trunk. ### Assign an agent and test Assign an [**agent**](/vio/agents) to the trunk or number, then place a real call to confirm inbound audio flows and the agent answers. Full guide: [**SIP trunks**](/vio/telephony/sip-trunks). Remember: with BYOC, the **phone minutes stay on your carrier's bill** — Vio only meters the AI. See [**Pricing**](/vio/pricing). ## Forward call results to your CRM or Google Sheet Push every finished call — summary, extracted variables, outcome — to your own system automatically with a **results webhook**. ### Open the Fulfilment settings In the [**agent editor**](/vio/agents), go to the **Analysis, actions & fulfilment** tab. ### Add your webhook URL Paste the URL Vio should POST to when a call ends (your CRM endpoint, a Google Sheet automation, or a tool like Zapier/Make). It must be publicly reachable and return a **2xx** response. ### Choose what to send and save Confirm which fields go in the payload (summary, sentiment, goal-met, and your [**variables**](/vio/agents/variables)), then save. The next completed call fires the webhook. Full guide: [**Analysis, actions & fulfilment**](/vio/agents/analysis-actions-fulfilment). If it isn't firing, see [**Troubleshooting**](/vio/troubleshooting#my-results-webhook-isnt-firing). ## Personalise the greeting with the caller's name Have the agent open with the caller's name (from a campaign CSV or a variable), with a safe fallback when you don't have it. ### Use a variable in the greeting In the agent's [**persona**](/vio/agents/persona), write the greeting with a placeholder and a fallback: `Hi {{name|there}}, thanks for calling…`. If `name` is known, the agent says it; if not, it says "there". ### Supply the value For **outbound campaigns**, add a `name` column to your CSV — Vio maps it into `{{name}}` for each call. For **inbound**, populate the variable from a [**tool**](/vio/agents/tools) lookup or [**caller memory**](#remember-returning-callers). Full guide: [**Persona**](/vio/agents/persona) and [**Variables**](/vio/agents/variables). ## Remember returning callers Let the agent recognise someone who has called before and pick up context, instead of starting cold every time. ### Enable caller memory In the [**agent editor**](/vio/agents), open the **Advanced** tab and turn on **caller memory**. ### Choose what to remember Decide what carries over between calls (for example the caller's name or their last request), then save. On the next call from a known number, the agent has that context available. Full guide: [**Agent advanced settings**](/vio/agents/advanced). ## Transfer a call to a human Hand the live call to a person when the agent can't (or shouldn't) resolve it. ### Add a transfer action In the **Analysis, actions & fulfilment** tab, add a **transfer-to-human** action and set the target number in **E.164 format** (for example `+919876543210`). ### Tell the agent when to use it In the [**persona/prompt**](/vio/agents/persona), describe the conditions — e.g. "if the caller asks for a human or the request is a complaint, transfer." Save and test with a real call. Full guide: [**Analysis, actions & fulfilment**](/vio/agents/analysis-actions-fulfilment). Your carrier must support call transfer — see [**Troubleshooting**](/vio/troubleshooting#transfer-to-a-human-isnt-connecting). ## Read what a call cost See exactly how much any real call cost and where the money went. ### Open the call in Call Logs Go to [**Call Logs**](/vio/call-logs) and open the call. The total **₹ cost** is shown on the call. ### Read the cost breakdown Expand the cost to see the per-component breakdown. Remember this is the **AI cost** — the **phone minutes** are billed separately by your carrier or Twilio. See [**Pricing**](/vio/pricing). In-browser [**test calls**](/vio/getting-started/test-your-agent) are free and are **not** logged. Place a real call to see cost data. --- Can't find your task? Check the [**Features tour**](/vio/features) for the right page, or ask the in-dashboard **Assistant**. Something not working? See [**Troubleshooting**](/vio/troubleshooting).