The Problem
When a third-party app (like a form builder, CRM, or bug reporting tool) sends a notification email on behalf of a user, the email comes from the app’snoreply@ address — not the actual customer. This means Halo creates the contact as [email protected] instead of the real user, and:
- The ticket is linked to the wrong contact
- The AI agent can’t pull up the customer’s history or context
- Replies go to the notification address instead of the customer
- You lose all the structured data from the original form submission
Approach 1: Tickets API (Recommended)
If you can make HTTP requests from your app or webhook handler, use the Tickets API to create tickets with proper user association. This is the cleanest solution and what tools like Intercom recommend for programmatic integrations.How it works
Basic example
[email protected], and the AI agent has full context to respond.
Integration examples
- Form Builder (Webhook)
- Zapier / Make
- CRM Webhook
- Bug Report Tool
Most form builders (Typeform, Tally, JotForm, OrbitForms) support sending webhooks when a form is submitted. Point the webhook at a handler on your backend that calls the Halo Tickets API:
Enabling AI responses
Set"ai_enabled": true to have Halo’s AI agent automatically respond to tickets created via the API. The AI uses your configured email agent and replies to the user’s email address:
AI responses require AI email auto-reply to be enabled in Settings > AI Agents. The AI agent uses your trained knowledge base to respond, just like it would for email tickets.
Enriching user data
For richer AI context, call the identify endpoint before creating the ticket. This gives the AI access to the user’s plan, role, company, and custom attributes:Approach 2: Email Best Practices
If your integration must send emails (e.g., you can’t modify the third-party app’s webhook behavior), follow these guidelines to help Halo identify the real sender.Use the customer’s email as the From address
The most effective approach is configuring your notification system to send emails from the customer’s actual email address, not from anoreply@ address:
Use the Reply-To header
If you can’t change the From address, set theReply-To header to the customer’s email. This ensures that when your team replies from Halo, the response goes to the right person:
Enable forwarded customer detection
If your notification emails include aFrom: line in the body (common with email forwarding), Halo can automatically extract the original sender.
- Go to Settings > Emails > Email Settings
- Enable Detect forwarded customers
[email protected] instead of the envelope sender.
Include structured data in the subject
When sending notification emails, put key information in the subject line so it’s visible in the Halo inbox at a glance:Limitations of email-based integrations
| Issue | Impact |
|---|---|
Sender is noreply@ | Contact linked to wrong email, AI can’t identify the customer |
| No structured metadata | Form fields are buried in email body text |
| No AI context | AI agent can’t access user’s plan, history, or company info |
| Reply threading | Replies may not thread correctly if headers are stripped |
Comparison
| Feature | Tickets API | |
|---|---|---|
| User identity preserved | Always | Only if From is the customer |
| Structured metadata | Full JSON support | Plain text only |
| AI agent context | Full (user, company, history) | Limited |
| AI auto-reply | Supported (ai_enabled) | Supported (if sender is identified) |
| No code required | No (HTTP request needed) | Yes (email forwarding) |
| Works with Zapier/Make | Yes | Yes |
| Email threading | N/A | Native |
Next Steps
Tickets API Reference
Full API reference for creating tickets programmatically.
Identify Users
Enrich user records with traits and context before creating tickets.
Receiving Emails
Set up email forwarding from your existing support address.
Automatic Ticket Creation
Create tickets through the AI chat pipeline for triage and auto-response.