# Hail engineering blog

> Tutorials and guides for developers who place phone calls and send email with an API.

- RSS feed: https://hail.so/blog/feed.xml

## [AI outbound calls: make your first call](https://hail.so/blog/ai-outbound-calls)

Place an AI outbound call with one API request. Learn how AI voice calling works: statuses, webhooks, voicemail, consent, and a reminder call template.

- Type: Tutorial · Tags: voice-agent, outbound
- Markdown: https://hail.so/blog/ai-outbound-calls.md
- Sections:
  - [How AI voice calling works](https://hail.so/blog/ai-outbound-calls#how-ai-voice-calling-works)
  - [Place an AI outbound call](https://hail.so/blog/ai-outbound-calls#place-an-ai-outbound-call)
  - [Read the result: statuses and webhooks](https://hail.so/blog/ai-outbound-calls#read-the-result-statuses-and-webhooks)
  - [What happens when voicemail answers](https://hail.so/blog/ai-outbound-calls#what-happens-when-voicemail-answers)
  - [Build an automated calling system, not one call](https://hail.so/blog/ai-outbound-calls#build-an-automated-calling-system-not-one-call)
  - [Make your automated phone system honest](https://hail.so/blog/ai-outbound-calls#make-your-automated-phone-system-honest)
  - [AI phone calls: a reminder template](https://hail.so/blog/ai-outbound-calls#ai-phone-calls-that-people-do-not-hang-up-on)

## [AI phone agent: how it works and how to build one](https://hail.so/blog/ai-phone-agent)

An AI phone agent answers and places calls. Learn how AI voice agents work and how to build one.

- Type: Guide · Tags: voice-agent, inbound, outbound
- Markdown: https://hail.so/blog/ai-phone-agent.md
- Sections:
  - [What are AI voice agents?](https://hail.so/blog/ai-phone-agent#what-are-ai-voice-agents)
  - [AI phone answering: inbound calls](https://hail.so/blog/ai-phone-agent#ai-phone-answering-inbound-calls)
  - [AI call bot: outbound calls](https://hail.so/blog/ai-phone-agent#ai-call-bot-outbound-calls)
  - [The parts of an AI phone system](https://hail.so/blog/ai-phone-agent#the-parts-of-an-ai-phone-system)
  - [Voice AI agents: three ways to build one](https://hail.so/blog/ai-phone-agent#voice-ai-agents-three-ways-to-build-one)
  - [How to build an AI phone agent with Hail](https://hail.so/blog/ai-phone-agent#how-to-build-an-ai-phone-agent-with-hail)
  - [Write the prompt before you pick the vendor](https://hail.so/blog/ai-phone-agent#write-the-prompt-before-you-pick-the-vendor)
  - [Limits to plan for](https://hail.so/blog/ai-phone-agent#limits-to-plan-for)
  - [AI phone agent guides](https://hail.so/blog/ai-phone-agent#ai-phone-agent-guides)

## [Find leads and launch outbound messaging at scale with email, texts, and calls](https://hail.so/blog/contact-leads-fullenrich-hail)

Find leads and start email, text, and call campaigns from Claude, using the messages you've written. Connect FullEnrich and Hail MCP to get started.

- Type: Use case · Tags: fullenrich, claude, mcp, lead-generation, outbound
- Markdown: https://hail.so/blog/contact-leads-fullenrich-hail.md
- Sections:
  - [Keep the writing in your hands](https://hail.so/blog/contact-leads-fullenrich-hail#keep-the-writing-in-your-hands)
  - [1. Connect FullEnrich and Hail to Claude](https://hail.so/blog/contact-leads-fullenrich-hail#1-connect-fullenrich-and-hail-to-claude)
  - [2. Find the people you want to reach](https://hail.so/blog/contact-leads-fullenrich-hail#2-find-the-people-you-want-to-reach)
  - [3. Add the messages you've written](https://hail.so/blog/contact-leads-fullenrich-hail#3-add-the-messages-youve-written)
  - [4. Send a test, then launch your campaign](https://hail.so/blog/contact-leads-fullenrich-hail#4-send-a-test-then-launch-your-campaign)
  - [5. Check what happened before you follow up](https://hail.so/blog/contact-leads-fullenrich-hail#5-check-what-happened-before-you-follow-up)
  - [Work through a larger list](https://hail.so/blog/contact-leads-fullenrich-hail#work-through-a-larger-list)
  - [Check the full cost as you grow](https://hail.so/blog/contact-leads-fullenrich-hail#check-the-full-cost-as-you-grow)

## [DMARC policies explained: none, quarantine, and reject](https://hail.so/blog/dmarc-policy)

Learn how DMARC policies handle email that fails authentication. Compare none, quarantine, and reject to choose a policy for your domain.

- Type: Guide · Tags: dmarc, deliverability
- Markdown: https://hail.so/blog/dmarc-policy.md
- Sections:
  - [What DMARC checks](https://hail.so/blog/dmarc-policy#what-dmarc-checks)
  - [What the three policies request](https://hail.so/blog/dmarc-policy#what-the-three-policies-request)
  - [Start with a record you understand](https://hail.so/blog/dmarc-policy#start-with-a-record-you-understand)
  - [Check every legitimate sender before tightening the policy](https://hail.so/blog/dmarc-policy#check-every-legitimate-sender-before-tightening-the-policy)
  - [Use DNS checks and message checks together](https://hail.so/blog/dmarc-policy#use-dns-checks-and-message-checks-together)

## [Make your first AI phone call with a voice API](https://hail.so/blog/first-ai-phone-call)

Place your first AI phone call with Hail’s voice API. Set a system prompt, confirm recipient consent, and read the call status.

- Type: Tutorial · Tags: voice-agent, getting-started
- Markdown: https://hail.so/blog/first-ai-phone-call.md
- Sections:
  - [Before making the call](https://hail.so/blog/first-ai-phone-call#before-making-the-call)
  - [Give the agent a narrow task](https://hail.so/blog/first-ai-phone-call#give-the-agent-a-narrow-task)
  - [Read the call result](https://hail.so/blog/first-ai-phone-call#read-the-call-result)
  - [Listen for the mistakes a status cannot explain](https://hail.so/blog/first-ai-phone-call#listen-for-the-mistakes-a-status-cannot-explain)
  - [Add the next step only after the first works](https://hail.so/blog/first-ai-phone-call#add-the-next-step-only-after-the-first-works)

## [Send an email with an API, then check what happened](https://hail.so/blog/send-email-with-an-api)

Send a plain text email with Hail’s API and confirm recipient consent. Read delivery and bounce events to check the result.

- Type: Tutorial · Tags: email-api, getting-started
- Markdown: https://hail.so/blog/send-email-with-an-api.md
- Sections:
  - [Set up the sender first](https://hail.so/blog/send-email-with-an-api#set-up-the-sender-first)
  - [Send one plain-text email](https://hail.so/blog/send-email-with-an-api#send-one-plain-text-email)
  - [Follow what happened after sending](https://hail.so/blog/send-email-with-an-api#follow-what-happened-after-sending)
  - [Why there is no open event in this example](https://hail.so/blog/send-email-with-an-api#why-there-is-no-open-event-in-this-example)
  - [Debug the right layer](https://hail.so/blog/send-email-with-an-api#debug-the-right-layer)
