Business· Help center

Help center › Marketing

How to run a cold email campaign

Find the right person at each US business, have Otto write every email, approve once, and let Otto send them slowly from your own domains, with follow-ups, tests of up to four versions and a lead agent that keeps the campaign full.

Updated 2026-10-31

A cold campaign is a short series of emails to businesses that have not heard from you yet, for example an AI automation agency writing to plumbers in Texas. It is kept apart from your ordinary campaigns, which only ever go to contacts who agreed to hear from you. Only an owner or admin can make one, and only when cold campaigns are switched on for your Otto server. If they are not, the page says "Cold campaigns are not switched on for this server." and nothing is sent.

It is under Growth → Outreach → Cold campaigns, where Campaigns sits beside four more tabs. On the cold email plan each of these is its own entry in the menu: Campaigns, Find your niche (see how to find your niche), Replies (see how to answer replies to cold emails), Leads and credits (see how credits work) and Domains and mailboxes.

Before you start

  • Your own mailboxes. Cold emails leave from your own mailboxes (Google Workspace or another provider), never from Otto's address. Connect them under Domains and mailboxes (see how to connect your own mailboxes). Otto checks each domain's DKIM, SPF and DMARC records before a new address starts sending.
  • Your postal address. The law asks for it in every email. You can save it right on the campaign.

Make a campaign

  1. Press New cold campaign.
  2. Give it a Campaign name, say What you offer, and list the Sending addresses, up to 50. Write just the part before the @ (hello, chase) for your main sending domain, or the whole address (sam@getyourcompany.com) for one of your cold email domains. The page shows the full addresses it will send from.
  3. Choose who writes the emails. Otto writes each one is the usual choice. Otto writes every email for each business from its own website and the person found there: their name and title, what they do, and the tools their site uses. You don't write anything.
    • Sign off as is the last line of every email. How they should read is optional, for example "Short and casual. Ask for a 15-minute call."
    • Email 1 and each follow-up can stay empty, and Otto writes them from scratch. Or put words in one, and Otto treats it as a template: it keeps your structure, offer and ask, and rewrites the details for each business.
    • Save as a template keeps the offer, the guide and the steps under a name. Start from a saved template uses them in another campaign.
    • My words, the same for everyone sends your own words, with {first_name}, {company} and {first_line} filled in for each business.
    • Or pick one from Start from a ready-made campaign. There are 18: ten for businesses that sell to local businesses (AI receptionist for trades, website redesign, paid ads management, local SEO, managed IT, bookkeeping and tax, recruiting, software for field service, commercial cleaning and business insurance) and eight for agencies selling done-for-you outbound (to staffing firms, web designers, marketing agencies, IT firms, commercial cleaners, insurance agencies, bookkeepers, and pest control and HVAC companies). Each fills in an offer, how the emails should read, two angles to test against each other as versions A and B, and a sequence of email 1 and two follow-ups. It also fills in the search for Find businesses. Change the offer to yours; Otto still writes every email. Not sure which to use? Compare several with a niche test.
  4. Press Import a CSV. It needs an email column and a state column; first_name, company, website and city are read too. Only US businesses are kept, and Otto checks that each address's domain has a mail server. Rows left out are listed with the reason. Importing is free; each email delivered costs one credit. No emails? A name and a website work too. For a row with a person's first and last name (or full name), their company's website or domain, and a state, Otto finds the email the way Find businesses does: their own address on the site, or one made from their name that the paid check passes, else the business's published address. At most 500 people from one file, within the daily limit. What it finds is free to look over, with most of the address hidden, and keeping it is free too. People it can't find an email for are listed with the reason. Or let Otto find them: type the kind of business and where, for example plumbers and Austin, TX, pick who to write to and how many (10, 20 or 50), and press Find businesses. This works when finding businesses is switched on for your Otto server. There is a limit each day.
    • Describe who you want instead: type a sentence such as "roofers in Columbus, OH that are hiring and have no booking tool" and press Fill in the search. Otto fills in the boxes; check them, then press Find businesses.
    • What you find is free to look over. Each business shows the person and title found, the tools and signals on its site, and its address with most of it hidden. Tick the ones you want and press Keep the ticked, or Keep all. Keeping is free. One credit is one email delivered. Finding and keeping addresses is free, a bounce gives the credit back, and credits never expire. Pass on the ticked removes them, and Otto never offers you those businesses again.
    • Who to write to: an owner or founder, or the marketing, sales or operations lead. Otto reads each business's own website, including its about, team, leadership, staff, contact, careers and locations pages (at most seven pages a site, a few seconds apart), for the person in that role and their title. It also reads what the site publishes for search engines about itself and its people. With nobody in that role, it picks whoever runs the business.
    • Their own address: used when their site prints it, even when it is hidden from robots (written as "jane [at] acme [dot] com", hidden behind a "protected" link, or spelled out in code). When it doesn't, and your server has an address checker, Otto makes one from their name, following how the site writes its other addresses when it shows any. It keeps that address only if the paid check passes it; each check counts toward your AI work. When your server has more than one address checker, Otto asks the next one only when the one before could not tell. Otherwise it uses the address the business publishes on its own domain, such as info@. When the site prints no address at all and your server has an address checker, Otto asks the checker about the usual mailboxes (info@, office@, contact@, hello@, admin@) and keeps one only if the check says it takes mail; nothing is sent to find out. An address that is none of these is never used.
    • Narrow the list: Their site uses keeps only businesses whose website shows a tool, such as HubSpot, or any tool of a kind, such as email marketing. Leave out drops them. Leave out chains (on to start with) skips branches of a brand.
    • Only businesses that keeps those whose website shows a buying signal: hiring now (a job listing or careers page), several open roles (three or more listed on their careers page), running online ads (an ads tag from Google, Meta or TikTok in their page; nothing of yours needs to be connected), takes bookings online (a booking tool such as Calendly built into their site), several locations (a locations page, or two or more addresses the site lists), shows reviews on their site (a reviews widget), website updated in the last 90 days (from the site map the site points to), a dated website (a footer © three or more years old), a website not built for phones, or opened in the last two years. Otto says exactly what it saw, and the email can mention it.
    • Words on their site keeps only businesses whose website uses at least one of the words or phrases you give, up to five, such as "emergency" or "commercial".
    • People on site, at least keeps businesses whose website names at least that many people with a title. It is a floor, not a headcount: many businesses name nobody.
    • Size keeps businesses whose estimated size is in the band you pick: about 1–10, 11–50, 51–200 or more than 200 people. It is an estimate from what their site shows (the number of employees it publishes, the people it names, its locations and its open roles), and each business lists that evidence beside it. A business whose site shows nothing to go on is left out when you pick a size.
    • When a business's own site links to a LinkedIn page, Otto shows the link for you to look at. Otto never opens LinkedIn itself.
    • Company data and larger companies. When your Otto server has a company-data provider, each business you find also shows its number of employees, yearly revenue range, industry and the year it was founded, marked "company-data provider". Where Otto also guessed a size from the website, the provider's figure is shown first and the guess stays as the fallback. You can then filter by employees (fewest and most), revenue, industry and founded after, and choose Companies by size and industry (data provider) instead of Local businesses (map data) to search larger companies by industry, size and state. The provider can also name the owner or the marketing, sales or operations lead with their work address and mobile number; that address is used only when the paid address check passes it. Without a provider these choices are greyed out with the reason beside them: it is off until the server has one. Kept businesses can get company data later with Add company data. The provider has a daily limit; when it is reached, Otto says so.
    • People by job title. With a company-data provider, choose People by job title (data provider) to find people instead of businesses: a job title, a seniority and a department, plus where (a city, one or more states, or anywhere in the US) and the company filters. Each person's work address is checked like any other before you see it, and keeping them is free too. You can also filter any search by Raised in the last months and Funding stage, and the funding shows beside each business.
    • Online businesses (web search). For businesses with no map listing, such as AI automation agencies, online store agencies, online bookkeepers or software companies, choose Online businesses (web search). Describe them in a few words and, if you like, a US state or city; leave the place empty to search the whole US. Otto searches the web, passes over directories, job boards, social networks, articles, review sites, freelancer platforms and app stores, then reads each business's own site to check it is that kind of business and that it is in the US. Only US businesses whose own site shows they are in the US (an address, a US phone number, or "based in" a US place) are kept. The hit rate says how many were dropped and why. It needs web search switched on for your Otto server; until then the choice is greyed out with the reason beside it. See how to find online businesses.
    • Businesses come from open business listings published by the Overture Maps Foundation, not from Google. Finding 20 takes several minutes, because Otto reads each website a few seconds apart; the page fills in when it is done.
    • Each prospect shows the person's name and title, how the address was found, the tools their site uses and any signals. It also shows the business's main phone number from the listing and, when their own site prints a number beside the person, that direct number, once you keep the business.
    • Hit rate. Beside the results, Otto says of the businesses whose site it read how many named a decision-maker, how many had a confirmed mailbox, how many were catch-alls or unconfirmed and how many had no usable address, so you can quote a real rate. When the search itself fails, it says so instead of showing a rate.
    • New reasons to write. About once a month Otto reads again the websites of the businesses you kept in running and finished campaigns, a few a day, and lists what changed under New reasons to write on Leads and credits, grouped: Changed jobs, New funding, New tools, Hiring and Other. You get a notice, and each thing is told once.
    • From their site, free: hiring, ads, a new location, a tool added or gone, more open roles, or the person you wrote to no longer on their site.
    • With a company-data provider on the server: the person you wrote to moved to another company, and a new funding round. Pick a draft campaign and press Add at their new company to add them as a free preview; their new address goes through the same check as every found address.
    • A re-read that could not be made says why beside the list.
  5. Press Write the emails. Otto writes them in the background and the page fills in as it goes. Press Read beside any business to see its email and follow-ups, change any word, then Save, or press Rewrite with Otto.
    • Otto never puts in an email address, a price, or a number that isn't in your offer or on their website, and no link unless you listed it under Links. A draft that breaks a rule is written again, and if it breaks one twice, the business is marked for you instead.
    • Links. List up to three links, such as your website or a booking page, and Otto may add one of them to an email where it helps the reader. It never adds any other link. Links go in the follow-ups only, unless you tick Allow a link in the first email too: a link in a first email from someone new makes Gmail more likely to put it under Promotions. With no links listed, the emails have none. Emails already written keep their words; press Rewrite with Otto to use new links. When you write the emails yourself, any link you type goes as you wrote it.
    • A business whose website can't be read is marked too: Otto has nothing of theirs to write from, so it never guesses.
    • With My words, the same for everyone, press Draft first lines instead: Otto writes one opening line per business, and you can change any of them.

More than emails

  • Up to six steps. Press Add a step. Every step after the first is a follow-up email, sent by Otto on its day.
  • Test up to four versions. Tick Test two versions (A/B) and choose how many, two to four. With your own words, write each version under each email. With Otto writing, say how each version should read. The businesses are split evenly between the versions, spread over your sending addresses, and the campaign shows how many were written to, replied and were interested for each.
    • With your own words, you can send one version to everyone left. Or let Otto pick: it does so only once every version has been sent to at least 100 businesses, and only when the leader's reply rate is ahead by more than chance (a standard test, at 95%). Until then nothing changes. When it picks, a notice says which version and why. Both choices are safe because you approved every version.
    • With Otto writing, every business already has its own emails, so the rest cannot be switched to one version. Use what you learn in your next campaign.

When it sends

Under the campaign's options you can change, before you ask to start:

  • Sending days and hours. Weekdays, 9 to 5, unless you choose others. The hours are always in each business's own time zone, and need at least two hours between start and end.
  • A daily limit for this campaign, up to 5,000. Leave it empty for no limit beyond each address's own allowance and your business's daily cap.
  • A start date. Approve now, and the first emails go from that day.
  • Stop the whole company on a reply. On to start with: when someone replies, nobody else at their company (the same email domain) is written to by any campaign of yours. It never applies to shared mail services such as gmail.com.

These are part of what you approve, so they cannot change once the campaign runs.

  1. To put a picture in one of the emails, use the Picture panel: upload one, or have Otto make one from your description, an example or your own website. It goes as one line with its link unless you choose to show it inside the email. See how to add a picture to a cold campaign.
  2. Under Before it starts, fix anything marked Needed. To see how the campaign would play out day by day, with nothing sent, try a practice run. Then press Ask to start. That puts one approval in Reviews for the whole campaign. Nothing is sent until you approve it there.

Delete a campaign

Press the bin beside a campaign in the list, or Delete on the campaign itself, and confirm. You can delete a campaign in any state. One that is sending stops at once: nothing more goes from it. One waiting in Reviews has its approval declined. Replies already in your inbox stay, and the emails already sent still count toward each address's bounce and complaint figures. It cannot be undone.

How Otto sends

  • Businesses are spread across your sending addresses, and each keeps the same address for its whole sequence.
  • A new domain warms up first. An address on a domain Otto has not sent from before starts at 5 emails a day and climbs a little each day it sends, over 14 sending days, to about 30. While it warms up it sends only first emails, and only to confirmed mailboxes and your own imported list. Follow-ups, catch-alls and unchecked guesses wait until it is ready; nobody is dropped. It does not start until the domain's DKIM, SPF and DMARC records are all in place. See how to warm up your sending addresses.
  • Then each sending address starts at 30 emails a day and never goes above 50 a day in its first two weeks. After a day that used most of its allowance, and while bounces and spam reports stay low, it rises by about a tenth, up to 100 a day. Your whole business sends at most 4,000 a day, under the 5,000 a day at which Gmail treats a sender as a bulk sender.
  • To send more, add sending addresses. Each address only sends what keeps it out of spam, so more email means more addresses (and, for a lot, more cold email domains). Otto finds and writes for as many businesses a day as your addresses can send: it writes up to two days ahead of them and finds up to three days ahead, and never fewer than 100 written and 300 found a day.
  • Emails go on weekdays between 9 and 5 in each business's own time zone (from its state), or the days and hours you chose, at uneven gaps rather than all at once.
  • Every email is plain text, with your postal address and a last line saying to reply "no" to stop. There is no unsubscribe link and no unsubscribe button beside the sender: Gmail reads those as signs of bulk mail, and US law allows a reply as the way to stop. There are no tracking pixels.
  • Gmail decides which tab an email lands in, so nobody can promise the Primary tab. What helps is what Otto does: plain text, written for one business, no tracking, few or no links, and a slow climb per address.
  • Otto has no warm-up network: it never trades emails with other people's mailboxes to build a reputation. Your sending addresses are addresses Otto sends from, not inboxes, so those networks could not reach them anyway. The warm-up is simply how slowly Otto itself sends at first.

See how it is doing

Once a campaign starts, it shows its figures, counted from what was really sent and received: for each step, how many were sent, replied, were interested and bounced, with the reply rate; and sends and replies for each of the last 14 days. Otto does not track opens or clicks, so those are never shown.

It also counts meetings: each person whose reply you marked as a meeting booked or won under What came of it (see how to answer replies to cold emails). To show the results to someone outside Otto, such as a client, make a read-only report link (see how to run outbound for your clients).

Keep this campaign full

Otto can add businesses to a running campaign as it runs low. Say how many businesses should be in the sequence at once (5 to 500), the most businesses it may add a day (1 to 500), and who to look for, with the same filters as Find businesses. It searches where the campaign's last search did: local businesses, companies from the data provider, or online businesses by web search. The approval in Reviews says which.

  • Switching it on, or changing what it may do, puts one approval in Reviews that states those limits. Nothing is added until you approve it. Switching it off needs no approval.
  • It keeps only confirmed mailboxes, for free. Catch-alls and unconfirmed addresses stay as previews for you to decide. Each email delivered costs a credit, as in any campaign.
  • In a campaign with your own words, each new business gets the words you already approved. When Otto writes, it writes each new business's emails under the same rules as the rest, and they go without you reading each one. A business whose emails could not be written is not sent.
  • It stops for the day when it reaches your daily limit, and says so. Out of credits, it still adds businesses, but the campaign's sending pauses. A notice says how many it added.
  • Otto also suggests up to three searches, worked out from the businesses that replied interested, the ones you kept and your last searches.

What stops things

  • A reply stops that business's emails. When your server receives replies, the reply shows on a new contact's card and is forwarded to you. Someone who replied has not agreed to marketing emails, so they are not added to your ordinary campaigns.
  • Someone at the same company replying stops the rest of that company, unless you switched that off.
  • A bounce stops that business's emails, and an address that bounced or reported any Otto email as spam is never written to again, by anyone.
  • An unsubscribe (a reply such as "no", "stop" or "remove me", which Otto recognises without any AI) stops that business's emails in every cold campaign of yours, and adds the address to Do not contact. Emails sent before this change carried an unsubscribe link, and it still works.
  • One address going bad rests just that address: more than 3% of its own emails bounced, or too many spam reports, after at least 30 sent. The others carry on, a notice says which, and Resume is under Domains and mailboxes.
  • Too many bounces or spam reports pause the whole campaign: more than 3% bounces, or more than 0.1% spam reports, over the last two weeks. A notice says which, and you can Resume once you have fixed the list or the message.

Do not contact

Add addresses or whole domains in Settings → Do not contact. Otto checks the list before every single email, not just when you import.

Domains and mailboxes

Cold email goes out from your own mailboxes: connect your Google Workspace or other mailboxes under Your mailboxes at the top of Domains and mailboxes, then tick them under Sending addresses on a campaign. Otto reads only the replies and bounce reports to its cold emails there. See how to connect your own mailboxes for cold email.

Sending lots of first emails from the domain your customers know puts your everyday email at risk if cold email is ever marked as spam. Under Domains and mailboxes, press Add a cold email domain for a look-alike domain you bought (such as getyourcompany.com), add the records it shows where you bought it, and press Check. Up to 20.

When buying domains is switched on for your Otto server, you can also buy one through Otto. Type your company's name, and Otto shows look-alike names that are free to register (such as getyourcompany.com or yourcompany.co) with their yearly price. Choosing one puts one approval in Reviews with the name, the price and that it renews every year. On your yes, Otto checks the price again, registers it, makes it a cold email domain and adds its email records itself, so there is nothing to copy. If the price changed, nothing is bought.

The Mailboxes list shows each address's warm-up ("Warming up · day 4 of 14 · 10 a day today", then Ready, or why it has not started), its sends today against its allowance, its last two weeks, and whether it is healthy or resting. Test inbox placement shows what share of a test email landed in the inbox or in spam at Gmail, Outlook and Yahoo. It only works when inbox placement tests are switched on for your Otto server; until then the button is off and says why beside it.

Your CRM

Under Replies, choose HubSpot or Salesforce, connect it on the Integrations page, and choose Add everyone interested or Add everyone who replies. Otto adds them there as contacts (HubSpot) or leads (Salesforce), and never changes or deletes anything else in your CRM.

Your own systems

Your own code can run cold campaigns with an API key (see how to use the cold email API), and Otto can tell your system the moment something happens (see how to get cold email events with webhooks).

Use another sending tool

Export CSV gives the businesses that may still be written to, with their first lines, in columns that tools such as Instantly or Smartlead read. Otto is not connected to them; you upload the file there.

The law, in plain words

This is not legal advice. In the US, the CAN-SPAM Act allows business email to people who did not ask for it, as long as: the From line and subject are honest, the email says where your business is (a postal address), it offers a clear way to stop, and you honor a stop request. Otto puts in the address and the way to stop, honors stops at once, and only sends to US businesses because other countries' rules differ. Writing honest subjects and an honest message is up to you.

If it doesn't work

  • "Cold email only goes from your own domain." — press Setup a sending domain.
  • "Something in this campaign changed since the page loaded." — look it over and press Ask to start again.
  • "No US state given" — add a state column to your CSV.
  • An address says Not started under Domains and mailboxes — its domain is missing a DKIM, SPF or DMARC record. Add the record it names where your domain's records are kept.