Back to the build library
Any industry
Standard

Spanish-English Bilingual Intake

Detect a contact's language on first contact, store it, and run every message, form, call route and reminder in that language from then on.

Industry
Any industry
Build effort
Standard
Typical time to launch
2–4 weeks
On this page
The problemWhat gets builtHow it runsAutomations in detailWhat changesBefore you start
Want this built for you?

Bring your stack to a call and we will scope it against how your business actually runs.

Book a call
01

The problem

Plenty of businesses serve a bilingual market and handle it with goodwill rather than with a system. Somebody on the team speaks Spanish, so Spanish-speaking callers get passed to that person. The website is in English. The forms are in English. The confirmation texts, the reminders, the review requests, the follow-up emails: all English. The result is a journey that starts in Spanish because a human was kind, and then switches to English the moment automation takes over. The person who felt well looked after on the phone receives a reminder they have to work to understand, and a review request they ignore.

The leak is not where people expect. Most operators assume the problem is the front door. That Spanish-speaking prospects do not inquire. Usually they do inquire, and they convert at the front door just fine, because a person handled it. The loss happens downstream, in every automated touch after the first conversation: confirmations that do not get read, reminders that do not get acted on, so no-show rates for Spanish-speaking contacts that run visibly higher than for English-speaking ones. Nobody traces the no-shows back to the language of the reminder, because language is not recorded as a field, so the pattern is invisible in reporting.

There is a second, slower leak. When language handling depends on one bilingual staff member, that person becomes a bottleneck and a single point of failure. They cannot take holiday without the Spanish-speaking pipeline stalling. They get interrupted constantly. And when they leave, a portion of the customer base effectively loses its channel into the business overnight. Fixing this properly means making language a property of the contact record rather than a property of who happens to be at the desk, detected once, stored, and honoured by every workflow, form, calendar, and call route from then on.

02

What gets built

Pipeline and stages

One pipeline, Bilingual Intake, with language carried as a field rather than as a parallel pipeline. Running two language-specific pipelines is the most common mistake in this build. It doubles the maintenance and makes reporting incomparable. Stages:

  • New Inquiry: Language Unknown: contact exists, language not yet determined.
  • Language Set: preferred_language is populated and confirmed.
  • In Qualification: BO or a human is working the inquiry in the stored language.
  • Needs Bilingual Human: requires a person, and that person must speak the stored language.
  • Appointment Booked: booked with language-matched staff where that matters.
  • Interpretation Needed: the stored language is neither English nor Spanish; routed to a documented third-language path.
  • Nurture: no action yet; receiving language-matched nurture.
  • Won and Lost: terminal, each recording the language so win rates can be compared.

Calendars

  • Consultation: English: pooled availability across all staff.
  • Consultation: Spanish: pooled availability restricted to Spanish-speaking staff. Separate calendars, not a single calendar with a note, because availability genuinely differs and a booking link must only ever offer slots that can actually be served.
  • Callback: Spanish: callback blocks for Spanish-speaking staff, used when no suitable consultation slot exists.
  • Interpreted Appointment: longer slots, used when a third language requires an interpreter, with the longer duration built into the slot rather than discovered on the day.

Custom fields

  • preferred_language: the controlling field for the entire build. Values: en, es, other. Every message step reads this.
  • language_source: how it was determined: self-selected, detected-inbound, detected-call, staff-set, inherited-from-household.
  • language_confirmed: yes or no. Detection is a guess until the contact confirms it.
  • language_set_at: timestamp.
  • second_language: for contacts comfortable in both, recorded so staff know they have flexibility.
  • third_language_detail: free text, only populated when preferred_language is other.
  • interpreter_required: yes or no.
  • staff_language_match: yes or no, set at booking; the measurable discipline check.
  • consent_sms, consent_email, consent_language: consent plus the language the consent notice was presented in, because consent given in a language the person does not read is not meaningful consent.
  • intake_answers_language: which language the intake form was completed in, so the answers can be read correctly.

Tags

  • lang-es, lang-en, lang-other: mirrors of the field, for segment building.
  • lang-detected, lang-self-selected, lang-staff-set: provenance.
  • lang-unconfirmed: detection has happened but the contact has not confirmed; drives Workflow 2.
  • lang-mismatch-flag: the contact replied in a language other than the stored one.
  • interpreter-needed.
  • bilingual-staff-required.
  • sms-opted-out, email-opted-out.

Forms

  • Intake: English and Intake: Spanish: two forms, identical in field slugs and field order, differing only in label text. Identical slugs are essential: it means both forms write to the same custom fields and reporting stays unified.
  • Language Preference: a one-question form, offered as two buttons, used as the fastest possible confirmation step.
  • Pre-Appointment Questions: served in the stored language, with intake_answers_language stamped on submission.
  • Interpreter Request: internal form capturing the third language, the date needed, and who booked the interpreter.

Translate forms properly. Machine-translated form labels read as careless to a native speaker, and carelessness at the intake step sets the tone for everything after it. Have a fluent speaker review every string, including button text, validation messages, and the thank-you screen: those last ones are almost always missed.

BO's role and guardrails

  • BO detects the probable language of an inbound message and replies in that language, but treats detection as provisional until confirmed.
  • BO asks for confirmation once, early, in both languages in a single short message, and never asks again once language_confirmed is yes.
  • BO holds the entire conversation in one language. BO does not mix languages within a message, and does not switch back to English for anything, not for a link label, not for a day name, not for a closing line.
  • BO never translates on the fly in a context where precision matters: contractual terms, clinical or professional instructions, pricing, or anything the person will act on. Those route to a human in the matching language.
  • BO never quotes prices or fees in either language.
  • When BO detects a language that is neither English nor Spanish, BO stops attempting the conversation, sets preferred_language to other, writes what it observed into third_language_detail, and routes to the interpretation path. Guessing at a third language with machine translation is worse than honestly handing off.
  • Every BO thread records which language each message was sent in, so a mismatch can be audited later.

Numbers and channels

  • One main business number with a bilingual voice greeting: English first or Spanish first depending on the market, then a single keypress to choose. Keep the greeting short; a long bilingual menu loses people in both languages.
  • Optionally a second provisioned number advertised only on Spanish-language marketing, so inbound language is known before anybody speaks. This is the most important element of the build when paid Spanish-language media is running.
  • SMS from the same numbers, with templates maintained in both languages.
  • Web chat with a language toggle in the widget header, and a greeting that appears in both languages on first open.
  • Landing pages duplicated per language at distinct URLs, each with a hidden field that pre-sets preferred_language on submission so detection is not needed at all for form-originated leads.
  • Authenticated email domain, with every template built as a matched pair.
03

How it runs, step by step

  1. A prospect clicks a Spanish-language ad and lands on the Spanish version of the landing page. The page's form carries a hidden field setting preferred_language to es and language_source to self-selected.
  2. She submits Intake: Spanish. The contact is created, language_confirmed is set to yes because she actively chose a Spanish page and completed a Spanish form, lang-es and lang-self-selected are applied, and the contact enters Language Set, skipping New Inquiry: Language Unknown entirely.
  3. Within thirty seconds she receives an SMS in Spanish acknowledging the inquiry and asking the first qualifying question. The message was never composed in English.
  4. She replies in Spanish. BO scans the reply, confirms the language matches the stored value, and continues in Spanish. Had she replied in English, lang-mismatch-flag would be applied and Workflow 3 would resolve it rather than guessing.
  5. BO asks three further qualifying questions in Spanish, one per message, writing answers to the shared custom fields. The same fields an English contact's answers would populate.
  6. BO reads preferred_language, selects the Consultation: Spanish calendar, and offers two specific slots in Spanish with the day and time written out in Spanish rather than as a formatted date string.
  7. She takes a slot. The appointment is created with a Spanish-speaking staff member, staff_language_match is set to yes, and the contact moves to Appointment Booked.
  8. A Spanish confirmation SMS goes out immediately, followed by a Spanish confirmation email containing the address, what to bring, and reschedule and cancel links whose anchor text is also in Spanish.
  9. The pre-appointment question form is sent in Spanish. On submission, intake_answers_language is stamped es, so the staff member opening the record knows the free-text answers are in Spanish before reading them.
  10. Reminders run at twenty-four hours and two hours before, both in Spanish, both from the same number as the original conversation.
  11. She attends. The staff member she meets speaks Spanish, because the calendar only ever offered slots that could be served in Spanish.
  12. Afterwards, the review request arrives in Spanish, with a link to leave a review in Spanish. A review request in the wrong language is the most reliable way to turn a satisfied customer into no review at all.
  13. She enters the long-term nurture segment filtered on lang-es, so every subsequent campaign she receives for the next two years is in Spanish without anybody remembering to check.
  14. Monthly reporting compares booking rate, show rate, and win rate across lang-en and lang-es segments. Because both populate the same fields and the same pipeline, the comparison is valid.
04

Automations in detail

Workflow 1: Language Detection on First Inbound Contact

Trigger: a new contact is created from any inbound channel: SMS, web chat, social message, inbound call, or a form that did not pre-set language.

Conditions and branches: check preferred_language first and exit immediately if it is already populated; re-detecting on a known contact is how stored preferences get silently overwritten. Then branch on channel. Text channels get content-based detection on the inbound message. Inbound calls get detection from the keypress on the bilingual greeting, which is far more reliable than speech detection. Form submissions from a language-specific landing page get language from the hidden field and skip detection. If the inbound message is under four words (“hi”, “hola”, “info”) treat detection as low confidence and go straight to the confirmation branch rather than committing.

Actions in order:

  • Run detection on the available signal. Write the result to preferred_language, set language_source to detected-inbound or detected-call, stamp language_set_at.
  • Set language_confirmed to no and apply lang-unconfirmed, plus lang-detected and the matching lang-es or lang-en tag.
  • Third-language branch: if detection returns neither English nor Spanish, set preferred_language to other, apply lang-other and interpreter-needed, write the observed language into third_language_detail, move to Interpretation Needed, and trigger Workflow 6. Send nothing automated beyond a short bilingual holding message.
  • Move to Language Set if confidence is high, or stay in New Inquiry: Language Unknown if low.
  • Trigger Workflow 2 when lang-unconfirmed is present.

Stop and exit conditions: exits as soon as preferred_language is set, or immediately if it was already set. Never runs twice on the same contact.

Workflow 2: Language Confirmation and Lock

Trigger: tag lang-unconfirmed applied.

Conditions and branches: branch on detection confidence. High confidence gets a soft confirmation embedded in the ongoing conversation. Low confidence gets an explicit bilingual choice before anything else is sent, because sending four messages in the wrong language and then correcting is worse than one extra question.

Actions in order:

  • High-confidence branch, detected Spanish: send one SMS in Spanish that includes a single bilingual line at the end: “Seguimos en español. (Prefer English? Reply EN.)” One line, at the end, never a full duplicate message in both languages.
  • Low-confidence branch: send “¿Español o English? Responde ES o EN.” and send nothing further until a reply arrives or the timer expires.
  • Wait 15 minutes. If a reply names a language, write it to preferred_language, set language_source to self-selected, set language_confirmed to yes, remove lang-unconfirmed, apply lang-self-selected, and move to Language Set.
  • If no reply after 15 minutes on the low-confidence branch, wait 4 hours and send the same bilingual question once more. Only once.
  • If still no reply, default to the market's majority language, keep language_confirmed at no, keep lang-unconfirmed, and proceed. The flag matters: it tells a human later that this language was assumed, not chosen.
  • Once confirmed, lock the value. No later workflow overwrites a confirmed language except Workflow 3 or a deliberate staff action.

Stop and exit conditions: exits on confirmation, on the second unanswered attempt, or on opt-out. Never sends a third confirmation request, asking somebody twice what language they speak is tolerable, three times is not.

Workflow 3: Mid-Journey Language Mismatch Correction

Trigger: an inbound message is detected in a language different from the stored preferred_language.

Conditions and branches: this is the workflow that separates a real bilingual system from a cosmetic one. Branch on whether language_confirmed is yes. If it is no, the stored value was a guess, so the new inbound signal simply wins: overwrite without asking. If it is yes, the contact actively chose the stored language, so a single message in the other language may be incidental (a forwarded sentence, a quoted phrase, somebody else using their phone) and must be verified rather than acted on. Second branch: if two consecutive inbound messages arrive in the new language, treat that as decisive regardless of confirmation status.

Actions in order:

  • Apply lang-mismatch-flag and record the mismatch with both languages and the timestamp.
  • Unconfirmed branch: overwrite preferred_language, set language_source to detected-inbound, reset language_confirmed to no, and continue the conversation in the new language with no commentary. Do not announce the switch; just switch.
  • Confirmed branch, single message: reply in the stored language but add one line in the new language offering the switch (“Happy to continue in English if that's easier) just say the word.”
  • Wait for the next inbound. If it arrives in the new language, overwrite preferred_language, set second_language to the previous value, and clear the flag.
  • If the next inbound returns to the stored language, clear lang-mismatch-flag, populate second_language with the other language, and change nothing else.
  • If the switch happens after an appointment is booked, check staff_language_match. If the assigned staff member does not speak the new language, create an assigned task to reassign or arrange an interpreter, and do not silently leave the booking as it stands.
  • Re-send any pending confirmation or reminder in the corrected language, replacing rather than duplicating the earlier one.

Stop and exit conditions: exits once the language is resolved and the flag cleared. Hard exit on opt-out. If mismatches occur more than twice on one contact, stop automating the decision, apply bilingual-staff-required, and let a human set the field.

Workflow 4: Language-Matched Qualification and Booking

Trigger: contact enters Language Set.

Conditions and branches: every message step in this workflow branches on preferred_language at the moment of sending, not at the moment of enrollment. Reading the field at enrollment is the subtle bug that causes a corrected language to be ignored for the rest of the sequence. Branch on calendar: es routes to Consultation: Spanish, en to Consultation: English, other to Interpreted Appointment. Branch on staff availability: if the Spanish calendar has no slot inside five business days, offer Callback: Spanish instead of offering an English slot.

Actions in order:

  • Send the acknowledgement in the stored language. Spanish: “Gracias por escribirnos. Para ayudarte mejor, ¿qué necesitas exactamente?” English: “Thanks for getting in touch. So we point you at the right person. What exactly do you need?”
  • Wait for reply, up to 20 minutes, then one nudge in the stored language.
  • Ask qualifying questions two, three and four, one per message, each read from the language-matched template set.
  • Select the calendar per the branch rules and offer two named slots, with day and time written in words in the stored language.
  • On booking: set staff_language_match based on the assigned staff member's recorded languages, move to Appointment Booked, trigger Workflow 5.
  • No suitable slot branch: offer a callback window, apply bilingual-staff-required, move to Needs Bilingual Human, and create an assigned task routed only to staff who speak the stored language.
  • If no reply after four attempted exchanges, move to Nurture with the language tag intact.

Stop and exit conditions: booking, opt-out, mismatch flag raised, or exhaustion of the four-exchange ceiling. The whole workflow halts rather than continuing in the wrong language if preferred_language is ever empty: fail loudly, do not default silently mid-sequence.

Workflow 5: Language-Matched Confirmations, Reminders and Review Request

Trigger: appointment created on any of the four calendars.

Conditions and branches: every single send reads preferred_language at send time. Branch on interpreter_required: interpreted appointments get an extra confirmation to the interpreter and a longer arrival instruction. Branch on channel consent: if consent_sms is no, run the whole ladder by email only, in the same language.

Actions in order:

  • Immediately: confirmation SMS in the stored language. Spanish: “Listo. Tu cita es el [día] a las [hora] con [persona]. Responde C para cancelar o R para cambiarla.” English equivalent with the same structure and the same reply letters, so staff handling replies do not need to know which language triggered them.
  • Immediately: confirmation email in the stored language, including address, parking or access notes, what to bring, and reschedule and cancel links with translated anchor text.
  • Wait until 48 hours before the appointment. Send the pre-appointment question form in the stored language. Stamp intake_answers_language on submission.
  • Wait until 24 hours before. Send reminder one in the stored language, asking for a single-character confirmation.
  • Wait until 2 hours before. Send reminder two: logistics only, no questions, stored language.
  • Interpreter branch: 24 hours before, notify the interpreter with the appointment detail and the third language, and create a task confirming attendance.
  • Wait 3 hours after the appointment end time. If marked attended, send the review request in the stored language, with the review destination set to one that accepts reviews in that language.
  • If marked no-show, send one message in the stored language offering to rebook, then move to Nurture.

Stop and exit conditions: cancellation, opt-out, or appointment completion plus review request sent. If preferred_language changes mid-ladder, cancel the remaining queued sends and re-queue them from the correct template set rather than letting both versions go out.

Workflow 6: Third-Language and Interpreter Handling

Trigger: preferred_language set to other, or tag interpreter-needed applied by staff.

Conditions and branches: branch on whether the business has a standing arrangement for the detected language. If yes, route to that arrangement. If no, route to a named human to decide, and send the contact a short holding message in English and Spanish only, not a machine translation into the third language, which risks being wrong in a way nobody on the team can check.

Actions in order:

  • Move to Interpretation Needed, apply interpreter-needed, set interpreter_required to yes.
  • Send one bilingual holding message: “We've received your message and someone will call you. / Hemos recibido tu mensaje y alguien te llamará.” Nothing more.
  • Create an assigned task for the named coordinator, due in 4 business hours, carrying third_language_detail.
  • Coordinator completes Interpreter Request, which records the language, the interpreter or service, and the date needed.
  • Book on Interpreted Appointment with the longer duration.
  • Wait until 24 hours before. Notify the interpreter and the assigned staff member, and confirm with the contact by phone rather than by automated message.
  • Suppress all automated nurture for contacts tagged lang-other until a human has set a workable communication method on the record.

Stop and exit conditions: exits when the appointment completes or when a human marks the contact as unservable in that language. Never sends machine-translated marketing into a language the business cannot support.

Workflow 7: Language-Segmented Nurture

Trigger: contact enters Nurture.

Conditions and branches: the nurture sequence exists once, with language-matched template pairs at every step, rather than as two separate campaigns. Branch at each send on preferred_language. Suppress entirely for lang-other. Branch on quiet hours in the contact's time zone, which for a bilingual market frequently spans more than one time zone: do not assume the business's zone.

Actions in order:

  • Wait 2 days. Send email one in the stored language: a single relevant piece of content, not a newsletter.
  • Wait 5 days. Send SMS one, stored language: “Sigues interesado en [servicio]? Responde SÍ y te reservo un hueco.” or the English pair.
  • Wait 9 days. Send email two in the stored language with a case-free, claim-free explanation of how the service works and a booking link to the language-matched calendar.
  • Wait 14 days. Send SMS two, stored language, a single short question.
  • Wait 30 days. Move to a low-frequency monthly segment, still filtered on the language tag.
  • At every step, check for a reply first. Any reply exits nurture and re-enters Workflow 4 at the qualification step, with the language revalidated by Workflow 3.

Stop and exit conditions: any reply, any booking, opt-out, or 30 days elapsed. Opt-out confirmations send in the stored language. An unsubscribe confirmation in the wrong language is the last impression the contact gets.

Workflow 8: Bilingual Call Routing and Missed-Call Text-Back

Trigger: inbound call to any business number.

Conditions and branches: branch first on which number was dialled. A Spanish-advertised number skips the menu entirely and sets preferred_language to es with language_source self-selected. The person chose it by choosing where to call. The main number plays the bilingual greeting and branches on keypress. Then branch on staff availability in the chosen language; if no Spanish-speaking staff member is available, do not route to an English speaker, route to the missed-call path, which at least continues in the right language.

Actions in order:

  • Play the greeting: a single short bilingual line and one keypress per language. Keep it under eight seconds in total.
  • Write preferred_language from the keypress, set language_source to detected-call, set language_confirmed to yes. A deliberate keypress is a choice, not a guess.
  • Ring the language-matched staff group for 25 seconds.
  • If answered, log the call and exit.
  • If unanswered, wait 15 seconds and send a missed-call text in the stored language from the dialled number: “No pudimos atender tu llamada. Cuéntame qué necesitas por aquí y lo resolvemos.” or the English pair.
  • Create the contact if new, apply the language tag, move to Language Set, and hand the thread to Workflow 4.
  • If no Spanish-speaking staff member is on shift, additionally create an assigned task for the next available one, and flag the coverage gap in the weekly report so the rota gets fixed rather than the calls getting lost.

Stop and exit conditions: call answered, reply received and handed to Workflow 4, or opt-out. Do not send a second missed-call text if the same number calls again within thirty minutes.

05

What changes

Afterwards, language stops being a favor somebody does and becomes a property of the record. A Spanish-speaking contact is greeted in Spanish, qualified in Spanish, booked onto a calendar that only offers slots a Spanish speaker can serve, reminded in Spanish, asked for a review in Spanish, and nurtured in Spanish for as long as they stay on the list: without anybody having to remember. The bilingual staff member stops being a bottleneck for messaging and gets to spend their language skill on the conversations that genuinely need a person.

The reporting change is equally significant. Because both language populations run through one pipeline and write to the same fields, you can finally see whether the Spanish-speaking segment books, shows, and converts at the same rate as the English-speaking one. Almost always there is a gap at the start, and almost always it is in show rate rather than booking rate, which is exactly the gap that language-matched reminders close. Once it is measurable, it is fixable.

Metrics to watch:

  • Language capture rate: share of contacts with preferred_language populated. Anything below near-total means a channel is not wired into Workflow 1.
  • Confirmation rate: share with language_confirmed set to yes. A low rate means the confirmation message is being ignored, usually because it is too long.
  • Mismatch rate: frequency of lang-mismatch-flag. Rising numbers point at detection quality, not at customers.
  • Staff language match rate: share of appointments where staff_language_match is yes. This is the rota-and-capacity measure.
  • Show rate by language segment, compared directly. The headline number for this build.
  • Booking rate and win rate by language segment, compared directly.
  • Review request response rate by language, which usually improves fastest and most visibly.
  • Spanish-calendar slot availability inside five business days, as a leading indicator of a staffing gap before it shows up in lost deals.
  • Count of contacts tagged lang-other and the average time to first human contact for them.
06

Before you start

Prerequisites

  • A fluent speaker, ideally a native speaker of the regional variety your market actually uses, to write and review every string in the build. This is not optional and it is not a job for machine translation. Budget their time explicitly: forms, SMS templates, email templates, voice greetings, button labels, validation messages, thank-you pages, and opt-out confirmations all need review.
  • A written list of which staff members speak which languages, at what level, kept current. The whole routing layer depends on it being accurate.
  • A decision on which language leads in the bilingual voice greeting and on the website, based on the actual market rather than on habit.
  • A decision about third languages: which the business will support, with what arrangement, and which it will honestly decline. An undecided answer here produces the worst outcome, which is a machine-translated conversation nobody can audit.
  • Agreed qualifying questions, written natively in both languages. Translating a question sometimes changes what it asks; have the fluent reviewer check the intent survives, not just the words.

Integrations and provisioning

  • At least one voice-and-SMS capable number. Strongly consider a second, advertised only in Spanish-language marketing, so language is known before anybody speaks.
  • Calendar connections for all staff, with Spanish-speaking staff identified so the Spanish calendar's pooled availability is correct. Two-way sync so external bookings block platform slots.
  • Authenticated email domain with SPF, DKIM and DMARC. Build and test both language versions of every template before launch; a missing Spanish template usually fails by silently sending the English one.
  • Landing pages per language at distinct URLs, each with a hidden language field. If the website is on a separate platform, verify the hidden field actually arrives on submission. This is the most common silent failure in the whole build.
  • Web chat with a language toggle, and a tested Spanish greeting.
  • Interpreter service or arrangement contact details stored where the coordinator can reach them, if third languages are being supported.

Messaging compliance

  • A2P and 10DLC registration before SMS volume in the United States. Register the brand and campaign, and submit sample messages. Submit samples in both languages. A campaign registered with English samples that then sends Spanish traffic can see that traffic filtered. Describe the use case accurately.
  • Opt-out handling must work on the Spanish keywords your customers will actually use as well as the standard English ones. Test that a reply of a common Spanish stop word is honoured. If the carrier-level handling only recognizes English terms, add explicit platform-level matching for the Spanish ones, and include opt-out instructions in Spanish in Spanish-language messages.
  • Quiet hours in the contact's own time zone. Bilingual markets commonly span several time zones; do not use the business's zone as a proxy.
  • Consent must be captured in a language the person reads, with the consent notice itself translated and reviewed, and the language of presentation stored in consent_language. Consent collected under an English-only notice from somebody who completed a Spanish form is weak and should be avoided by design.

Data protection

  • Language preference, and particularly a recorded third language, can function as an indicator of national origin or ethnicity. Treat the field as ordinary operational data used to serve people better, store only what the business needs to communicate properly, restrict who can see it, and do not use it for any purpose other than language-matched communication and capacity planning.
  • Translate the privacy notice and any consent wording. A privacy notice available only in English on a page that collected data through a Spanish form is a gap worth closing before launch.
  • Keep free-text intake answers in the language they were written in rather than storing a machine translation alongside the original, and record which language that was. A stored translation can be wrong in ways nobody notices, and then gets relied on.

None of the above is legal advice. Messaging registration rules, consent standards, language-access obligations in regulated sectors, and data-protection requirements vary by jurisdiction and by industry. Confirm the specifics (including whether any language-access duty applies to this business) with the client's own counsel before going live. To scope a build for a specific business, book a call at bookings.appbo.io.

Build it with us.

Every build on this page is something we configure, test and hand over with the SOPs your team needs to run it.

Book a call