Changelog
What's new in meiti
Every change with the why and the how — so you can use it right away.
Caller ID with meiti Call: see why a number is not available
"Change" on the caller ID now stays available for "meiti Call" too. Numbers meiti Call on this device cannot show are listed under "Not available with meiti Call on this device". Tapping one picks the number and switches to "Via phone number".
Why it matters
Until now the choice simply disappeared. Now you see the reason and still reach the customer with your number in one tap.
How to use it
- Open "Call", pick "meiti Call" and tap "Change" on the caller ID.
- Tap a number under "Not available with meiti Call on this device" – the call then runs via phone number with that caller ID.
- Want your number to work everywhere? Tap "Request porting" below it. Our team will be in touch.
On the computer you want to call with your landline number. It is listed under "Not available with meiti Call on this device"; one tap, and the call goes via phone number with your landline on the display.
"Draft" tag in the request list
When a conversation holds an unsent draft – a reply suggested by your assistant or a text someone on your team started – its row in the list shows a small "Draft" tag next to the name.
Why it matters
Prepared replies no longer get lost: you see right in the list where all that's left is to check and send.
How to use it
- Open a conversation tagged "Draft" – the draft is waiting above the message field.
- Send or dismiss the draft. Back in the list, the tag is gone.
Overnight your assistant drafted a reply to a WhatsApp request. In the morning that row shows "Draft" in the list; you open it and send the suggestion with one tap.
"Phone system" instead of "Voicebot settings", recording as a switch
The phone settings are now called "Phone system". You pick the recording there and when calling with one switch: "Off", "My side" or "Both sides". When calling, the pencil next to the sentence your customer hears leads straight to the phone system.
Why it matters
The page covers more than the assistant – also the calls you hold yourselves. And whoever wants to change the announcement finds it with one tap.
How to use it
- Open "Call" and expand "Dokumentation". Pick the recording with the switch.
- Tap the pencil next to the sentence your customer hears – the phone system opens.
You want the sentence before the call to sound more personal: tap the pencil when calling, then enter your own sentence under "Announcement before the call" in the phone system.
"Open in CRM" without a CRM integration — right next to the number
You can now always enter the link to the contact and the link to the case, even without a connected CRM and without the customer or case number switched on. In the ticket each number appears only once: with its label and an open icon next to it that opens exactly this record in your CRM. The example links shown while you enter one are now fully readable.
Why it matters
Many teams work with a CRM that meiti does not connect directly. With your own link you still jump from the ticket to the customer or job in one tap — no sync, no searching.
How to use it
- Open "Settings" → "Setup & operations" → "Connected systems" → "CRM & industry software".
- Under "Numbers", tap "Link to the contact" or "Link to the case" and enter the link with {nummer} where the number goes — or take an example and adapt it.
- In the ticket, tap the open icon next to the customer or case number.
A business keeps its jobs in its own industry CRM. It enters
https://crm.firma.de/vorgang/{nummer} as the link to the case. In the ticket with case number 2024-117, one tap on the icon next to it opens exactly that job.Team call: an unanswered colleague is covered by their own ring group
If a colleague doesn't answer an internal team call, their own ring group rings next, target by target — as with customer calls. Only the meiti app of the colleagues in the ring group rings, never a phone number. If they decline the call, it ends as before.
Why it matters
Your own ring group says who steps in when someone can't be reached. That now also applies when the team calls each other.
How to use it
- Open the member → create "Eigene Rufgruppe" and add colleagues.
- Call the colleague from "Internal" and don't answer: after about 30 seconds the app of the next person in the ring group rings.
Tom calls Anna internally, Anna is on site. After 30 seconds Ben's app from Anna's ring group rings, and Ben answers.
On the phone your assistant uses "du" throughout when you set "Du"
If "Anredemodus" is set to "Informell (Du)", every fixed sentence on the phone now uses "du" too: the "leave a message after the beep" line, the announcement before a forward ("ich verbinde dich mit …"), questions for name, number or address, appointment questions, the mailbox prompt and the classic phone menu. The AI's own answers follow the setting as well. Until now these sentences always used "Sie". Each of them now also exists in English for English-speaking callers, as do the ticket's system lines about forwards.
Why it matters
A call held in "du" that switches to "Sie" halfway through sounds like a machine.
How to use it
- Under "KI-Basis und Wissen" set "Anredemodus" to "Informell (Du)" and leave "Anrufer kann eine Nachricht hinterlassen" on for the assistant.
- Call and end the conversation: before the beep you hear "Nach dem Signalton kannst du noch eine Nachricht hinterlassen."
- Ask to be forwarded: the announcement says "Einen Moment, ich verbinde dich mit …".
A café uses "du" with its guests. When someone calls, the assistant asks "Wie ist dein Nachname?", forwards with "ich verbinde dich mit Anna" and ends with "Nach dem Signalton kannst du noch eine Nachricht hinterlassen."
"Caller left no info" instead of an AI summary when the caller says nothing
If a caller hangs up before saying anything, meiti no longer summarises the call. The card in the ticket is then simply called "Caller left no info". "Nachlesen · n" on the card now counts the caller's messages plus the call's system lines, no longer the sentences of your team or your assistant.
Why it matters
A summary of your own greeting says nothing. At a glance you see who tried to reach you and how much the caller had to say.
How to use it
- A tap on the card opens the call directly. More options (e.g. "Löschen") sit behind "…", a long press, or a right click on the computer.
Someone calls, hears your assistant's greeting and hangs up straight away. The ticket says "Caller left no info" — you call back instead of reading an empty summary.
Alerts by email too
Alert skills now send emails too: on top of the push notification to the email address in the meiti account of each notified member — or, instead of the members, to an address outside the organisation. meiti sends it itself; there is no sender to set up. The bottom of every email says which inbox and skill it comes from, how to stop it and where to get help.
Why it matters
Not everyone has the app open or wants alerts by SMS. People who live in their inbox now get the alert there — and partners without meiti access can be reached by email too.
How to use it
- "Settings" → "AI assistants" → pick the assistant → open the alert skill → "How your team finds out" → "Additional channel" → "Email".
- For someone outside: in the skill, "Notify someone outside the organisation", choose "Email" as the channel and enter the address.
A heating firm sends emergencies to on-call@company.com: everyone on call sees that mailbox, even without the app.
Via phone number: meiti rings your phone or desk phone first
With "Via phone number", under "meiti calls you at" you can now pick not just a number but also your phone with the meiti app or your desk phone. meiti rings that device first and then connects you to the customer. Your choice is kept for the next calls.
Why it matters
You dial on the computer and talk on your phone or desk phone, without typing the number. Since only the call to the customer goes over the phone network, such a call costs the same as a call from the app.
How to use it
- Tap "Call" in the ticket or on the contact and choose "Via phone number".
- Tap "Choose a device or saved number" and pick your phone ("meiti app · …") or your desk phone ("Desk phone · …"). Offered are your phones with meiti calls active for this inbox and the desk phones assigned to you.
- Your customer sees your meiti number. For another number: "Enter a number instead".
A tax adviser works on her computer. She opens the ticket, taps "Call" and picks her iPhone once — from then on every call rings her iPhone first, and she talks to the client while the ticket stays open on screen.
Windows: turn on calls on this computer right in "team & phone"
In the Windows app's "team & phone" window you can now switch on calling on this computer yourself: click your status under "Customer calls to you" → "Calls on this computer". It is the same switch as in your own member profile.
Why it matters
Anyone who wanted to call from the computer first had to go to the member profile. Now the switch sits where you make calls — next to "Audio devices …".
How to use it
- On: you call customers and colleagues from the computer, and calls put through ring here.
- Off: calls you place here go through your phone number.
- If the computer is currently on for another organisation, meiti asks before moving it.
An office worker with a headset opens "team & phone" and switches on "Calls on this computer". Her next callback to a customer runs straight through the headset instead of her mobile.
Announcement before the call: optional, in your own words
When meiti transcribes a call or records all of it, your customer has so far always heard "Verbindung wird mitgeschrieben." (or "aufgezeichnet") first. Now you decide per inbox: keep the announcement, replace it with your own sentence, or switch it off. Your own sentence applies on every path — calls from the app, via your phone number, from a desk phone and forwarded calls.
Why it matters
How you get your customers' consent is your decision: maybe you ask during the call yourself or already have it in writing. With the announcement off, the app also no longer asks for "Kunde ist einverstanden" when you start a transcript or recording during the call.
How to use it
- Open "Settings" → "Setup & operations" → "Phone", section "Calls with people". Only admins can change it.
- Switch "Announcement before the call" on or off.
- Under "What your customer hears", enter your own sentence (300 characters at most). Left empty, your customer hears the automatic sentence as before, matching transcript and recording.
A painting business already collects consent in its order form. Instead of "Verbindung wird mitgeschrieben." the customer now hears "Guten Tag, Malerei Berger – wir schreiben das Gespräch wie besprochen mit."
Your own AI: sees when your team took over
When someone on your team takes over a conversation, replies, or switches auto-reply off or mutes it there, your own AI now learns about it too: message.received keeps arriving and carries autoReply (state: on|paused|off, pausedUntil). Your AI decides itself whether to answer. If it does, meiti delivers the answer and, the first time after the intervention, writes a note into the conversation.
Why it matters
Before, your AI heard nothing after a takeover. Now it can keep reading along, collect context or deliberately keep answering — and your team sees in the conversation when it does so although auto-reply is off.
How to use it
- In your endpoint, check
data.autoReply.state: anything butonmeans the team has the conversation. - To stay quiet, answer 204. To keep answering, send
{ text }as usual — skills andhandoveronly run again once the conversation is back with the AI.
Example
{ "type": "message.received", "data": { "projectId": 67890, "autoReply": { "state": "off" } } }
Zendesk connected directly: tickets and internal notes from every conversation
You can now connect Zendesk directly to meiti, without n8n. Callers become end users, enquiries go to the open ticket or get a new one, and every call and chat lands as an internal note with the summary on the ticket. Photos and documents from customers are attached.
Why it matters
Your support team works in Zendesk and starts every ticket with full context, without building and maintaining a workflow in between. The notes are internal: the customer gets no e-mail from them.
How to use it
- Open "Settings" → "Setup & operations" → "Connected systems" → "CRM & industry software".
- Under "CRM integration", choose Zendesk and enter your Zendesk address (e.g. firma.zendesk.com), the agent's e-mail and an API token. Create the token in the Zendesk Admin Center under Apps and integrations → APIs → Zendesk API.
- Optional: tickets from meiti carry the tag "meiti". If Zendesk should not send them a receipt e-mail to the customer, exclude the tag in your trigger.
- Good to know: Zendesk stops issuing new API tokens on 27 Oct 2026 and switches all of them off on 30 Apr 2027. For the time after that we are preparing the connection via the Zendesk sign-in.
An online shop works with Zendesk. A customer calls in the evening about a return: the next morning her ticket is in Zendesk with the summary as an internal note and the photos of the damaged parcel attached.
Pipedrive and HubSpot connected directly — and the webhook on top of your CRM
Besides HERO you can now connect Pipedrive and HubSpot directly to meiti. Callers become contacts, enquiries become deals (Pipedrive, HubSpot) or tickets (HubSpot with Service Hub), and every call and chat lands as a note on the deal or ticket. On top of any connected CRM you can also add a webhook, e.g. for n8n or Make.
Why it matters
Your team works in its CRM and sees there what was said on the phone and in the chat — no automation in between. If you still need your own workflows, you no longer have to choose between CRM and webhook: the customer and case numbers stay with the CRM, the webhook gets the same events as before.
How to use it
- Open "Settings" → "Setup & operations" → "Connected systems" → "CRM & industry software".
- Under "CRM integration", choose Pipedrive, "HubSpot (Deals)" or "HubSpot (Tickets)". Tickets need HubSpot Service Hub, deals work with every HubSpot plan.
- Pipedrive: enter your personal API token (Pipedrive → Personal preferences → API). HubSpot: enter a Service Key (HubSpot → Settings → Integrations → Service Keys) with read and write access to contacts and deals or tickets, plus "files" for customer files.
- "After every call and chat": "Contact + project" (default), "Contact only" or "Manual". Under "Pull from the CRM" you bring contacts and deals or tickets into meiti.
- Webhook on top: in "Webhook in addition", tap "Add webhook" and enter the URL and optionally a bearer token.
A plumber works with HubSpot. A customer calls about water damage: in HubSpot they appear as a contact with a new deal, the conversation as a note on it. At the same time the webhook sends the event to n8n, which texts the on-call technician.
Your AI assistant guides you through the WhatsApp setup
The meiti MCP server has an area for account health and guided setup. For WhatsApp it explains the options with their pros and cons to Claude, ChatGPT and co., recommends the right one (shared inbox: your landline; personal inbox: your own WhatsApp Business App, synced only) and walks through Meta's onboarding step by step: business details, connecting WhatsApp, payment method, business verification.
Why it matters
WhatsApp setup is easy once someone sorts out the terms: WhatsApp, the WhatsApp Business App and Meta's business account are three different things. The assistant sees what your inbox has already done and always names exactly the next step.
How to use it
- Connect your AI assistant to the meiti MCP server (see the MCP docs).
- Say, for example: "Help me set up WhatsApp."
A trade business asks its assistant about WhatsApp. It explains the options, recommends the landline, fills in the missing address details, sends the link to Meta's signup and afterwards reminds them of the payment method and verification.
Start on the web: create your account, then two ways to go live
Under "Kostenlos starten" (/go) you create your account in the browser — with a mobile number or e-mail address and a code. Your inbox is there right away and you can try your assistant in the app. To reach the outside world — your own number, calls and messages — pick one of two ways: the free compliance call or a plan straight away.
Why it matters
You decide whether to talk to us first or get going right away. Nothing reaches the outside world until it is clear who the business is — that protects your number, your senders and your customers.
How to use it
- Open "Kostenlos starten", enter your first and last name and a mobile number or e-mail address, "Konto anlegen", then confirm the code.
- Free: "Compliance-Call buchen". After your compliance call we credit 10,000 credits once, and they don't expire.
- Straight away: under "Sofort starten" pick Solo or Team and pay — your number, calls and messages are open right after.
An electrician signs up from their phone in the evening, tries the assistant in the app and books the compliance call for the next morning. After the call the number is open.
Cleanup: delete recordings after a set time
"Clean up automatically" has a fourth rule: "Delete recordings". Voicemails and call recordings older than 30, 90, 180 or 365 days (or a number of your own) are deleted overnight. The message stays in the conversation — with the voicemail's text, the call's transcript and its summary — and shows "Recording deleted (cleanup)" instead of the player.
Why it matters
Recordings are the largest and most sensitive part of a conversation. With a time limit they are kept only as long as you actually need them — and what was said stays readable. Recordings already downloaded to a phone are removed by the app on its next sync.
How to use it
- "Settings" → "Setup & operations" → "Clean up automatically" (owners and administrators only).
- Switch on "Delete recordings", pick the time limit, check "Affected right now", save.
- The other rules stay as they are: show enquiries as inactive, archive them and empty the archive — transcripts and summaries only go with the enquiry.
A physiotherapy practice sets "Delete recordings" to 90 days. Ms K.'s voicemail from June is gone as audio by October; its text "Please move my appointment, I'm ill" is still in the conversation.
One phone system for every inbox
Your own phone system (SIP) is now connected once for the whole organisation instead of once per inbox. Every inbox has its own address on that connection – its phone number – which your phone system dials to reach it. Calls to an unknown address land in the default inbox.
Why it matters
Before, every inbox needed its own SIP account and desk phones belonged to exactly one of them: transfers into another inbox took detours, and switching SIP off in one inbox could delete phones another one still used. Now you set the phone system up once, every phone and extension serves every inbox, and extension numbers are unique within the organisation.
How to use it
- "Settings" → "Setup & operations" → "Phone" → "Own phone system (SIP)": domain and credentials are the same for every inbox.
- With several inboxes the section shows the "Address of this inbox" (sip:number@domain) – enter that address in your phone system as the destination for this inbox.
- "Make this inbox the default" decides where calls without a matching address arrive.
- The SIP switch only deletes the connection when no other inbox still has it on – otherwise the section is merely hidden.
A property manager has the inboxes "Front desk" and "Damage reports". The phone system forwards the main number to sip:+4989123450@… and the damage hotline to sip:+4989123451@… – both over the same SIP account. A call the system forwards without a number lands in "Front desk", the default inbox.
Calls and forwards abroad — at the telephony provider's price
meiti now calls every destination our telephony provider has a rate for. Domestic calls cost the familiar rates. Abroad, a started minute costs the provider's connection charges, rounded up to whole credits, plus 3 (Solo), 2 (Team) or 1 (Enterprise) credits — never less than at home.
Why it matters
Customers, colleagues and on-call services aren't only in Germany. Instead of a fixed list of countries, the real price counts — so you can forward and call abroad too, and an expensive destination is never cheaper than it costs us.
How to use it
- Calling: in the call sheet a line "International call · … credits/min" appears as soon as the number is abroad.
- Forwarding: add destinations abroad under "Phones & numbers" as usual. meiti refuses special-rate numbers, destinations without a rate and very expensive destinations when you save them.
- In the usage log, the part above the domestic rate shows as its own entry "International carrier charge".
- If someone calls with a withheld number — or with a number from outside the EEA while the forward goes into the EEA — the person the call is put through to sees your inbox's number.
Your technician is on a site in Zurich this week. The forward to his Swiss mobile now just rings; per minute the call costs the provider's charges plus your plan's markup.
API: log mails from your own mailbox and notes
With POST /v1/messages/log your system files a message that was written outside meiti in a contact's project — a mail from your Gmail or Outlook mailbox, a WhatsApp from another tool, incoming or outgoing. meiti sends nothing and does not answer it. POST /v1/notes adds internal notes.
Why it matters
Your team and your assistant see the whole conversation, including what went through other channels: the assistant reads logged messages, incoming ones show as unread in the inbox. Notes stay with the team — they never reach the customer, and the assistant does not read them.
How to use it
- API key: "Connected systems" → "API access".
- Per message send
direction(in/out),channel(email,whatsapp,sms,rcs) andtext, for mails alsosubjectand the Message-ID asexternalId— the same id is filed only once. - Optional:
ai: "pause"hands the project to your team,notify: truesends a push for incoming messages.
Example
{ "email": "erika.weber@example.com", "direction": "in", "channel": "email", "subject": "Angebot Badsanierung", "text": "Hallo, wann können Sie diese Woche vorbeikommen?", "externalId": "<CAF7x9Q@mail.gmail.com>" }
Your own AI: meiti's forward and alert as tools
An assistant with your own AI can now use forwarding and alert skills. Your AI triggers them itself by their key — in chat with executeSkills in its answer, on the phone with the skill frame, or via POST /v1/projects/{id}/skills/{key}. On the phone meiti really puts the call through; if nobody answers, the caller is back with your AI.
Why it matters
Your AI brings the logic, meiti the plumbing: putting calls through to team members, numbers and ring groups, SMS and WhatsApp alerts to the team. meiti keeps the hard rules — the skill's times, the skill limits per hour and call, your plan — so a mistake of your AI cannot overrun the team.
How to use it
- "Settings" → "AI assistants" → your own-AI assistant → "Skills" → "Add skill": pick a forward or an alert.
- Optionally set an announcement meiti tells the customer when the skill runs.
- Copy the key and use it in your AI —
message.receivedandsession.startedlist the skills that may run right now.
Example
{ "text": "Ich verbinde Sie mit unserem Büro.", "executeSkills": ["buero"], "note": "Kunde wartet auf Rückruf zur Rechnung 4711" }
Who answers where — at a glance, schedules included
The "Who's answering right now" sheet (fox in the inbox, "Who answers where?" in AI assistants, "Who answers where right now?" on the profile page) is now a list instead of a diagram: per channel, who answers right now, which schedules exist — and right there "Switch" and "Add schedule". Every schedule has a pencil and a bin. The assistant cards show just one line naming the channels an assistant answers on.
Why it matters
Before, you had to tap a channel in the diagram to see whether a schedule was running, then "Switch assistant" to even reach the choice. Now everything is on one screen, and a change is: "Switch" → assistant → confirm.
How to use it
- Inbox → fox icon, or "Settings" → "AI assistants" → "Who answers where?", or profile page → "Who answers where right now?" (the row already shows the answer as its subtitle).
- On the channel: "Switch" (or "Assign" when nobody answers) → pick an assistant → confirm. "Add schedule" → pick an assistant → period or weekdays.
- Tap the channel: there you can try it like a customer and open the channel settings.
Friday, 17:50: you open the fox sheet. Under "Phone" it says "Now: Anna — answers permanently", below it "Weekly: On-call, Mon–Fri 18:00–08:00". Two taps later ("Switch" → "Holiday" → confirm) the holiday assistant picks up — and you see it right away in the same list.
Even when the AI fails, the request reaches your team
When the AI cannot route a request for technical reasons, the assistant no longer asks the customer to repeat themselves ("sorry, I couldn't process that"). It hands over instead: on the phone and in chat your fallback skill takes over; otherwise meiti notes the request for the team and asks only for whatever name and number are missing.
Why it matters
Before, a caller could hear "couldn't process that" twice, hang up, and leave you with no name or number. Now every request arrives with contact details. Nothing the customer already said is asked again, and a callback is only promised when someone was actually notified.
How to use it
- Nothing to set up — this is on for every inbox.
- Optional: "Settings" → "AI assistants" → pick an assistant → "When meiti needs help" → "When meiti can't place the request", and choose a fallback skill to handle these conversations.
- Your team sees an "AI failure (…)" line with the reason in the conversation. The customer never sees or hears it.
A customer writes in the web chat and the AI returns nothing usable. Instead of an empty acknowledgement she gets: "I've noted your request for the team. So that someone can get back to you: on which number can we reach you? The right person will get back to you as soon as possible." The last sentence only appears when the team was actually notified.
HERO: every conversation in the logbook, appointments in sync, contacts and projects with one tap
After every call and every finished chat, meiti writes exactly one entry with the summary into the HERO logbook and links contact and project. Appointments travel between HERO and meiti in the direction you choose, and you pull contacts and projects from HERO with a button.
Why it matters
Your office works in HERO and no longer has to check meiti for what was said on the phone — it's on the project. Appointments planned in HERO get meiti's customer reminders, and appointments booked in meiti land in your HERO calendar. Existing customers and projects are in meiti from day one, so the assistant recognises them.
How to use it
- Open "Settings" → "Setup & operations" → "Connected systems" → "CRM & industry software".
- Under "CRM integration", choose Hero and enter the API key.
- "After every call and chat": "Contact + project" (default), "Contact only" or "Manual".
- "Appointments with Hero": "Off", "Hero → meiti", "meiti → Hero" or "Both ways". The default is "Both ways" — including for existing HERO inboxes.
- Under "Pull from the CRM": "Pull contacts from Hero" and "Pull projects from Hero". You can repeat both any time; nothing in meiti is overwritten.
A customer calls about a leaking radiator. Afterwards the HERO logbook of their project has one entry with time, duration and summary. The service appointment your office then adds to that project in HERO shows up in meiti — and the customer gets a reminder.
Every inbox puts calls through
The put-through switch is gone. When a handover has a phone target, the assistant now connects the caller in every inbox instead of only taking a callback note. "Put calls through" on a contact is now available in every inbox too.
Why it matters
Inboxes with only one number used to have transfers switched off automatically so calls wouldn't loop. Their callers heard "I can't put you through" even when someone was available. meiti now detects that loop itself — when targets are set up and during the call — so the switch is no longer needed.
How to use it
- "Settings" → "AI assistants" → pick an assistant.
- In "When meiti needs help" (in forward-all mode: "Forward to"), choose a person or number.
- For individual customers: "Contacts" → open a contact → "Put calls through" → "Put calls through to …".
A regular customer calls and asks for the owner. In a one-number inbox the assistant used to say "I can't put you through, but I've noted everything". Now the owner's phone rings.
Appointment events on the CRM webhook — and CRM integrations plus the API on every plan
The CRM webhook now reports appointments too: created, confirmed, rescheduled, cancelled, finished and reminder sent, each with appointmentData. The CRM integration (webhook and Hero) is available on every plan with no monthly event limit, and the API (beta) is on for every inbox.
Why it matters
Your calendar or CRM learns right away when a customer confirms or cancels on their appointment page — so you can refill the slot. The previous limit of up to 100 webhook events a month is gone, so integrations no longer stop mid-month. You no longer have to switch the API on under "Features" first.
How to use it
- Open "Settings" → "Setup & operations" → "Connected systems" → "CRM & industry software".
- Under "CRM integration", choose "Webhook" and enter URL and token.
- In your endpoint, handle the
eventTypevalues AppointmentCreated, AppointmentConfirmed, AppointmentRescheduled, AppointmentCancelled, AppointmentFinished and AppointmentReminderSent. - API key: "Connected systems" → "API access".
Example
{
"eventType": "AppointmentConfirmed",
"timestampUtc": "2026-10-14T16:02:11.512Z",
"callbackUrl": "https://api.meiti.ai/api/webhook-callback/5f0c2e…",
"contactData": { "meitiContactId": 18342, "phoneNumber": "+491701234567", "crmContactId": "K-1042" },
"projectData": { "meitiProjectId": 67890, "crmProjectId": null, "projectName": "Heizungswartung" },
"appointmentData": {
"id": 5120, "externalId": "CAL-8812", "contactId": 18342, "projectId": 67890,
"title": "Heizungswartung", "start": "2026-10-20T08:00:00", "startLocal": "2026-10-20T10:00:00",
"durationMinutes": 60, "kind": "in_person", "status": "confirmed",
"customerConfirmedAt": "2026-10-14T16:02:10.9910824", "rescheduledCount": 0
}
}
"Open in meiti" and "Call with meiti" straight from your CRM
With one link, your CRM, ERP or website opens the matching ticket in the meiti app — by meiti id, case number or customer number. A second link opens the call screen with a number. Also new is the developer guide with quickstart, recipes, reference and llms.txt for AI coding agents.
Why it matters
Whoever has a job open in the CRM jumps into the conversation with exactly that customer in one click — without searching or knowing which inbox it lives in. If the customer has no open ticket, meiti starts one. Nothing is dialled until you tap in the call screen.
How to use it
- Keep the numbers: "Settings" → "Setup & operations" → "Connected systems" → "CRM & industry software" → switch on "Customer number" / "Case number". They arrive via the webhook answer or are entered in the app.
- Add a link like
https://m.meiti.ai/open/project?crmId=…orhttps://m.meiti.ai/open/dial?number=…in your CRM. - With several matches you choose under "Which ticket?". With none, the app says "Ticket not found".
- For your IT: "Connected systems" → "API access" → "Developer guide & examples".
Example
<a href="https://m.meiti.ai/open/project?crmId=AZ-2024%2F117">In meiti öffnen</a>
<a href="https://m.meiti.ai/open/dial?number=%2B491701234567">Mit meiti anrufen</a>
CRM webhook: eventType is now sent as its name
The CRM webhook now sends eventType as text, as documented — for example "FinishedCall" instead of the number 1.
Why it matters
Integrations built against the docs didn't recognise events until now. If you checked against the number, you need to adapt — it's safest to accept both for a while.
How to use it
- Read
eventTypeas a string in your webhook endpoint. - Accept the legacy number for a while (0 = IncomingCallLookup … 5 = FormSubmitted).
- Ignore unknown values — new ones are added, for example the appointment events.
Example
const name = typeof e === "number"
? ["IncomingCallLookup", "FinishedCall", "NewConversation", "ConversationPaused", "Manual", "FormSubmitted"][e]
: e;
Contact list: see at a glance how to reach whom
Every contact now shows as a uniform card: name, contact type, contact person (else address or number), customer number, the contact's channels and one status — "Blocked", "Personal" or where their calls are put through.
Why it matters
You see in the list whether a customer is reachable on WhatsApp, what their customer number is and whether their calls currently ring straight through to a colleague — without opening each contact. Every card is the same height, so the list scrolls smoothly.
How to use it
- Open the "Contacts" tab; search results use the same card.
- The customer number appears once one is stored on the contact.
- Set a call route on the contact under "Put calls through".
Ms Weber's card shows "Cust. no. 4711", phone, WhatsApp and email icons, and the status "Next call to Max".
API: choose channel, sender and WhatsApp template yourself
POST /v1/messages now takes a priority list channels (channels, sender ids or default), respects the contact's settings via respectContactSettings, and sends an approved template via whatsApp when the 24-hour window is closed. New endpoints: GET /v1/senders and GET /v1/whatsapp/templates.
Why it matters
Your software decides whether an invoice notice goes by WhatsApp first and otherwise by SMS, or from exactly which mailbox. Important service messages arrive even if the customer hasn't written for days, because the template goes out instead of the text. Marketing without consent is always blocked.
How to use it
- API key: "Settings" → "Setup & operations" → "Connected systems" → "API access".
- List sender ids with
GET /v1/sendersand templates with their variable count withGET /v1/whatsapp/templates. - Pass
channelsand optionallywhatsAppinPOST /v1/messages. The response carrieschannel,senderId,sentAsTemplate,waitingForReplyandconsentOverridden.
Example
curl https://api.meiti.ai/v1/senders -H "X-Api-Key: $MEITI_API_KEY"
# "rechnung_fertig" is a placeholder: use a name from GET /v1/whatsapp/templates
curl https://api.meiti.ai/v1/messages \
-H "X-Api-Key: $MEITI_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: invoice-2024-117-ready" \
-d '{
"phone": "+491701234567",
"text": "Hallo Frau Weber, Ihre Rechnung 2024-117 ist fertig.",
"purpose": "service",
"channels": ["whatsapp", "sms"],
"whatsApp": { "template": "rechnung_fertig", "language": "de", "variables": ["Frau Weber", "2024-117"] }
}'