Getting started
How do I create my first interview workflow?- On the dashboard, click Create Interviewer.
- Start from a job description, a job posting URL, or a quick-start template, then click Generate Interview Plan.
- Review the basics: URL name, position title, agent identity, language.
- Add stages (Form, Resume, SMS, Voice/Video). Drag to reorder. A cost projector shows the estimate as you add stages.
- Set Essential Settings, click Preview, run Test Now, then Create Interview & Generate Questions.
- Add a fuller job description: title, requirements, location, must-have skills. A few lines is often too thin.
- If you used a posting URL, paste the JD text instead and try again.
- Start from an Interview Template or quick-start template, then edit.
- Still failing? Send support a screenshot and whether you used JD text or a URL.
Testing before you go live
Can I test the interview before sending it to candidates? Yes, and you should. Two ways:- While building: Preview checks flow order, messages, branding, and wording. Test Now (bottom of any Questions & Scoring section, or on the live agent overview) checks scoring, dealbreakers, Form → Enforce Criteria, voice pacing, resume logic, and integrity behavior.
- After publish: open the live interview link and go through it yourself. That’s exactly what candidates get.
- Go to Settings → Billing and confirm your plan is active and you have credits for this cycle.
- Retry Test Now on the stage that failed.
- If only one stage fails, test the others separately to narrow it down.
- Confirm the interviewer is saved and the stage has questions generated.
- If billing looks fine and it still fails, send support a screenshot, the interviewer name, and which stage you were testing.
- Confirm your workspace has an active number under Outreach → Phone Numbers.
- Add yourself as a candidate with your real mobile number (with country code, for example
+15551234567). - Invite yourself and complete the SMS flow on your phone.
- Confirm nudges, dealbreakers, and the handoff to the next stage behave as expected.
The AI interviewer
How do I customize the AI interviewer’s personality or tone? A few places, depending on what you want to change:- Context (company and role): add company info, role details, hiring process, and interview style so the AI represents your brand.
- Custom messages: edit the intro, welcome-back, and closing messages for voice/video.
- SMS messages: customize intro, follow-ups, disqualification, and call-invite copy. Use the recommended SMS prompt version, not legacy v1.
- Voice and accent: pick a matching voice under the Voice/Video identity settings, or browse AI → Languages & Voices.
- Workspace defaults: Settings → Company Settings for name, logo, default URL, and candidate communication settings. AI → Knowledge Base for workspace-wide facts.
- Voice/Video: yes, based on the candidate’s answers and your rubric. Control depth with the Follow-ups Range setting. See Follow-up questions.
- SMS v4 (Frontier): yes, conversational follow-ups; can nudge or escalate to a call when configured.
- SMS v3: structured yes/no and numeric questions only, no conversational follow-ups.
- Form: no follow-ups.
Workflow design
What’s the difference between SMS and Phone interview stages?- SMS is a text stage. Candidates reply at their own pace. It supports yes/no and numeric questions (1–6; 3 recommended). Best for high-volume screening and auto-disqualifying on dealbreakers when enforcement is on. Usually a few minutes.
- Phone is one way to take the Voice/Video stage; candidates can also use browser voice or video. It’s a live conversation with follow-ups, rubric scoring, and optional integrity detection. Usually 10–20 minutes.
- Per interviewer: Settings tab → Timeline & Completion → Interview Retake Policy. Turn retakes on or off for candidates who don’t pass, set Max retakes (0–10; 0 = off), and a cooldown in days (0 = immediate). A common start is 1 retake with a 0–1 day cooldown.
- Per candidate: open the profile → Allow Retake. This overrides the interviewer setting for that one person, useful after a technical issue.
Candidates and branding
What do candidates need to complete an interview? Voice: a phone. Video: any device with a browser. SMS: a phone that can text. Forms: any device with a browser. No apps to install. Can I customize email templates and use my own branding? Yes, in five places:- Outreach → Email Templates: edit invites, nudges, resume requests, and more. Group templates and apply a group in Communication & Branding during setup.
- Outreach → Sender Domains: send from your own domain.
- Outreach → Interview Branding: logo, company name, hide “Powered by HeyMilo,” legal links on candidate pages.
- Outreach → Custom Domains: branded interview links like
interviews.yourcompany.com. - Settings → Company Settings: default name, logo, and interview URL.
https:// links.
HeyMilo’s security and compliance docs (for your team): open Trust Center from Resources & Support on the dashboard, or go to trust.heymilo.ai for SOC 2, privacy, and vendor due diligence. Workspace compliance settings (GDPR/HIPAA modes, audit logs) are under Compliance in the sidebar. HeyMilo’s automated emails may reference HeyMilo’s own candidate privacy notice. See Interview Branding and Compliance.
If candidates reply to our interview invite email, who gets the reply?
Outbound mail can show your verified From address (see Sender Domains), but replies usually go to support@heymilo.ai, not your recruiters. Reply-To isn’t configurable in the app today. Don’t tell candidates to “reply to this email” unless your team knows where replies land. See From address vs replies.
Can I connect my scheduling tool?
Yes. On the interviewer’s Settings tab → Root Level Configuration → Advanced → Scheduling URL, paste a link from Calendly, Cal.com, HubSpot, Microsoft Bookings, or similar. Only qualified candidates see the Schedule button on their status page. The button isn’t auto-emailed, so add the same link to your email or SMS templates if you want it in outreach. You can also set a Redirect URL in the same spot for everyone who finishes. HeyMilo also has built-in self-scheduling if you’d rather book inside the product. See Scheduling.
Results and scoring
How are candidates scored on voice and video interviews? The AI scores each answer against the rubric you wrote for that question, on a 1–5 scale. You define what a 1 and a 5 look like, and the AI infers 2–4. Each question also has a weight from 1 to 10, so more important questions count more. The overall score is 0–100. It’s a weighted average of the scored questions the candidate completed. Some things don’t feed the 0–100 score:- Structured questions (dealbreakers, yes/no, numeric, multiple choice) are pass/fail.
- Tags like location or certifications are extracted for filtering only.
- The speech score on voice/video reports measures clarity and delivery. It’s shown separately and doesn’t affect pass/fail.
- Overall score (0–100) and per-question scores with the AI’s reasoning
- Highlights and lowlights
- Full transcript and recording
- Tags and skill highlights
- A scorecard for each stage (Resume, Form, SMS, Voice/Video)
- Speech score on voice/video interviews
- Integrity flags, if enabled, on the Verify tab
- Notes, Diagnostics, and Contact History
- Edit, replace, add, or delete it, and drag to reorder.
- Choose the type: scored (1–5), structured (pass/fail), or informational (no score).
- Set the weight, mark it as a dealbreaker, and set how many follow-ups the AI can ask.
- Describe what a good answer looks like, or let AI generate the criteria for you.
- Open the interviewer → Duplicate Interviewer (or Actions → Clone).
- Make your changes in the copy.
- Preview and Test Now.
- Use the new interviewer going forward.
Integrations
Does HeyMilo integrate with my ATS? Yes, with a wide range of platforms. To see which ones, open Integrations in your HeyMilo workspace for the full list of available ATS connections, or check ATS Integrations on this site. Integrations sync candidates in and write scores, notes, and stage updates back. Setup is OAuth, API keys, or webhooks depending on the ATS. You can also import jobs from your ATS to auto-create interviewers. Does writeback happen automatically? Yes, once configured. Scores, notes, stage moves, and attachments sync back with no manual steps. See Write-back Configs. Can I use HeyMilo without an ATS? Yes, and most self-serve teams do. Share the interviewer link or QR code, add candidates manually (unique per-person link), bulk upload via the Ingestion Gateway, connect Indeed so applications email into the agent, or use the agent’s Apply Email. See Inviting Candidates and Integrating with Indeed. Are there webhook or API options? Yes, both. Webhooks send real-time updates when an interview starts, completes, or a report is ready; attach them on the agent’s Integrations tab or via the API. API access uses a key from Integrations → API Keys (headerX-API-KEY) to manage interviewers, ingest candidates, read interview data, and more. See API Overview, API Keys, and Webhooks. Developer questions are in the Developers & API section below and the API & Integration FAQ.
Phone numbers and global use
Does HeyMilo work in different countries? Yes, with a few channel differences:- Browser voice/video: works worldwide. Candidates need a modern browser and a stable connection; no phone number required.
- SMS and phone calls: HeyMilo currently provisions US and Canadian phone numbers, managed under Outreach → Phone Numbers. If you’re hiring outside the US and Canada, contact support@heymilo.ai before you launch so we can confirm what’s possible for your region, or use email plus browser voice/video instead.
- Email: works anywhere once a sender domain is verified.
- Languages: 18+ interview languages with matching voices and accents. Need one we don’t list? Ask your CS Manager or support@heymilo.ai.
America/Vancouver), a blackout window (start and end hour), a cooldown before nudging (default 24 hours), and max nudges (default 3). You can also set a workspace-level blackout in Settings → Company Settings. One-off SMS blasts control content, eligibility (prior SMS engagement required), and rate limiting (once per hour per candidate) but don’t have a separate timezone window yet. See SMS Interviews.
Interview experience
The transcript says “Interviewer Sara” but I named my interviewer something else. Why? “Sara” in the transcript is a fixed label on the transcript view. It doesn’t come from your settings, and the AI doesn’t use it. The AI introduces itself with the interviewer name you set. If you rename your interviewer, the change applies to future interviews only. What does the “Don’t Interrupt Me” button do for candidates? It pauses or resumes the interviewer’s speech. It doesn’t change how the AI handles interruptions or turn-taking, so if the interviewer wasn’t talking when the candidate clicked it, nothing visible happens. It can’t be turned off or hidden. Which Knowledge Base scope should hold facts the interviewer should say out loud? Put anything the AI should bring up on its own in the posting overview fields (job, company, interview process) with delivery set to Exact or Summarized. Interviewer Knowledge is used when a candidate asks a question — not for scripted intro content. See Knowledge Base. When should the interviewer use Knowledge Base vs say “the team will follow up”? The AI tries the posting overview first, then Interviewer Knowledge. If neither covers the question, it defers to the team. Keep Interviewer Knowledge concise so matches are reliable. Where do candidate questions appear in the dashboard? When candidate questions is enabled on the posting, questions the AI could not answer show in the posting Inbox (Beta) tab and the candidate’s Inbox tab. All other candidate questions appear only in the transcript. Why is the Activity tab empty? Activity lists HeyMilo outreach (invites, reminders, SMS) with email delivery status, interview milestones, and candidate link visits. It stays empty when HeyMilo has not contacted the candidate yet (for example your ATS sent the link) and they have not opened it. Why does the interviewer ask a follow-up and jump to the next question? That is not expected behavior. We have reduced how often it occurs, but it can still happen. Send support@heymilo.ai the interview ID if you need help reviewing a session. Can the interviewer ask only one question at a time? The AI is instructed to ask one question at a time. You can reinforce that with custom instructions and by limiting follow-ups in your posting setup. Why does the AI end the call early? Normally the interviewer runs through your questions, any closing guidance, then ends. Occasionally the model may end early (hallucination); this is uncommon (typically under about 4% of interviews). Candidates can usually resume on the same link; contact support with interview IDs if you see a pattern on one posting. Ending behavior is not fully deterministic — the model decides based on progress, follow-ups, closing rules, and cases where the candidate asks to stop. You cannot disable AI-initiated hang-up in settings today. Status and scores do not depend on who ended the call; they depend on saved session data and whether the interview met the completion threshold for processing. If the candidate closes the browser instead of clicking Leave, what changes? Status and webhooks follow the same rules either way — what matters is how many questions were answered. The candidate can resume on the same link. Can I finalize an interview stuck in progress from the dashboard? No. Refresh analysis re-runs analysis but will not mark complete an interview with too few answers. There is no manual finalize button. Contact support@heymilo.ai if you need areport_available webhook re-sent after review.
How often do interviews get stuck or stay incomplete?
There is no single platform-wide percentage. Processing delays are usually picked up by background jobs; device issues vary by candidate; model-related glitches (including odd hang-ups) are uncommon. Drop-off without finishing depends heavily on role, industry, and audience. Use Analytics → Funnel & Conversion for your workspace and send support interview IDs for one-off stuck sessions.
Can I turn off the incomplete-interview reminder email?
Yes. Turn off reminders in workspace or posting communication settings, or remove the reminder template from the email template group. HeyMilo sends at most two reminders, only to candidates who have not started.
Can incomplete-interview emails use my verified sender?
Yes, when the posting or template group uses a verified sender domain.
Status page looks wrong on desktop — is that a known issue?
Yes. Layout issues on the candidate status page above typical mobile widths are a known bug and are being addressed.
Where do I set data retention for compliance?
Go to Settings → Compliance → Retention. It covers request retention (grace period before deletion runs), archive retention (how long archived records are kept), and an optional Delete inactive candidates policy. Defaults are on the Compliance page. That’s separate from how long interview recordings are kept; for a specific recording retention period for a privacy notice, ask support@heymilo.ai.
What happens to our data if we cancel or don’t renew?
New screening stops when your subscription ends, but nothing already saved in your ATS is deleted. Retention in HeyMilo follows your contract and DPA — many customers have a window after termination (often around 60 days) to access and export data before it’s deleted or de-identified. Export what you need before your last day. Full details: Offboarding, Exports & Data Retention.
Troubleshooting
Why does my posting show something like $1.1k / $100 spend? Is my budget broken? Usually not. Spend is what you’ve used toward the budget cap you set, not all-time spend on the role. If the numbers look mismatched, check that you’re reading spent vs cap for the current budget. Hover for budget left and amount held for interviews in progress; red means the cap is reached. Change the cap with the pencil on Spend or in the interviewer Settings tab. See How to read Spend. Candidates say they can’t access the interview link. What should I check? In this order:- Credits: Settings → Billing. If credits are used up, candidates may not be able to start. This is the most common cause.
- Deadline: Settings tab → Timeline & Completion (posting deadline or days to complete).
- Agent status: confirm the interviewer is published and not archived.
- Link: resend from the candidate profile or copy a fresh link. Try it yourself.
- Length: shorter interviews generally get higher completion rates, so trimming is the first thing we recommend. As a guide, 5–7 voice questions, 3 SMS questions, and under 15 minutes total work well. Longer interviews can still work if the role calls for it.
- Trust: candidates don’t recognize the sender. Verify Sender Domains and brand your links.
- Timing: invites at low-engagement hours. Use SMS blackout windows; send reminders 2–3 days after the first invite.
- Setup: confirm the agent is Active, the link is correct, and required stages aren’t blocking people with missing data.
- Enforcement: on Form stages, confirm whether Enforce Criteria is on if dealbreakers should stop people.
- Filters: make sure you’re looking at the right agent, date range, and candidate set.
- Contact info: SMS needs a valid mobile number with country code; email needs a valid address.
- Channel setup: SMS needs an active number under Outreach → Phone Numbers. SMS blasts only go to candidates with prior SMS engagement and skip anyone messaged in the last hour. Unverified sender domains raise bounce risk.
- Communications off: if Turn Off All Candidate Communications is on in Settings → Company Settings, all automated email and SMS stop.
{{candidate_nam}} instead of {{candidate_name}}). See Candidate Messaging and Troubleshooting.
What happens if a phone or voice interview disconnects?
When the candidate reconnects they’re usually prompted to pick up where they left off; they don’t normally restart. Retake settings apply only to interviews already marked complete, not mid-interview drops. If someone still can’t get back in, check the deadline and days to complete, confirm the agent is still published, and send support the candidate email and interviewer name if it persists. See Voice Interview Reliability.
Scores seem off (too high or too low)
Review your rubrics; they may be too strict or lenient. Read a few full transcripts next to their scores to calibrate. For workspace-wide tuning, see Adjusting Scoring.
My ATS integration isn’t syncing
Check that the connection is still active in Integrations and that credentials haven’t expired. Then open your provider’s ATS quickstart.
Tracker only: Tracker allows one API token at a time. If someone generates a new token in Tracker, HeyMilo stops syncing until support updates the connection. Copy the existing token (don’t regenerate), send it through the secure link support provides, and do not disconnect Tracker in HeyMilo or you’ll lose job mappings. See Tracker — sync stopped.
For other ATS tools, disconnecting and reconnecting is sometimes enough after credentials expire.
Developers & API
Short versions of the most common developer questions. Full detail, code samples, and more are in the API & Integration FAQ. How do I verify that a webhook came from HeyMilo? Webhooks created through the v2 or v4 endpoints are signed with HMAC-SHA256. The create response includes asigning_secret; each delivery carries an X-HeyMilo-Signature header. See Verifying Webhook Signatures.
Can I retrieve or rotate a webhook’s signing secret?
No. It’s returned once at creation. If you lose it, delete the webhook and create a new one.
When does the report_available webhook fire?
After interview_completed, once AI analysis finishes, usually seconds to a few minutes later. See Event lifecycle.
Can I ingest candidates through the API?
Yes. POST /api/v2/postings/{posting_id}/candidates, plus async and bulk variants. The in-app Ingestion Gateway (CSV and resume upload) is separate from the API. See API Overview.
Can I set Reply-To on emails through the API or app?
No. Sender Domains control From, not Reply-To. Replies go to support@heymilo.ai. See From address vs replies.
Where are per-tag scores and knockouts in the API?
Typed tag values are in web_interview.tag_results[]; knockouts are in structured_questions. See the API & Integration FAQ.
Can I ingest a resume with the sync API?
Pass metadata.resume_url or use the resume step — no file upload on ingest. URL requirements are in the API & Integration FAQ.