Features Add-ons Pricing Cost calculator Use cases Compare Blog

Content in This Language Already Exists: Error 2388024

17 min read

The short answer

“Content in This Language Already Exists” is WhatsApp Cloud API error code 100, subcode 2388024: a template with that name already exists in that language in that Messaging account (WABA). Edit the existing template, add a different language under the same name, or choose a new name. Deleting an approved template locks its name for 30 days (checked October 2026).

Templates screen in the Acme Retail demo workspace listing appointment_reminder, festive_offer, flash_sale_blast and order_shipped, each row showing a category, an en_US language code, a variables count, a Pending, Approved or Rejected badge and a Preview button.

What does "Content in This Language Already Exists" mean?

"Content in This Language Already Exists" means you tried to create a WhatsApp template whose name already belongs to a template in the same language, in the same Messaging account. Meta's template management page states the rule and the error in one breath:

"Template names must be unique within a Messaging account for each language. Creating a template with a name that already exists for the same language returns error code 100, subcode 2388024, with message “Content in This Language Already Exists”." (Meta — Template management)

The Messaging account is the half of Meta's new account model that holds templates and billing, and Meta says "Your existing WABA ID now identifies your Messaging account." (Meta — WhatsApp accounts and Messaging accounts) The uniqueness key is therefore three things together: the account, the name and the language code. Change any one of them and the create is no longer a duplicate.

The error is easy to fix and easy to make worse. The instinctive response to a template with a typo, or one that came back in the wrong category, is to delete it and create it again under the same name. For an approved template that is the one move Meta penalises with a 30-day lock on the name. Most of the time the right answer is to edit the template you already have, or to add the language you actually wanted alongside it.

Six ways to create a template under a name already used, from the 2388024 refusal and the 30-day lock after deleting an approved template to the routes Meta allows
Only the same name in the same language and account triggers 2388024. Deleting to start over swaps it for a 30-day lock.

Checked against Meta's documentation on 16 October 2026.

Why is 2388024 missing from Meta's error-code page?

Because, in Meta's WhatsApp documentation, it appears in only one place we could find, and that place is not the error reference. The error codes page has a section of template creation errors, and on 16 October 2026 it listed seven of them: 2388039, 2388040, 2388047, 2388072, 2388073, 2388293 and 2388299 (Meta — WhatsApp Cloud API error codes). The template limit error, 2388019, sits in the section after it, headed "Send template errors". The string 2388024 appears nowhere on that page, and nowhere in the WhatsApp changelog either (both searched on 17 October 2026). It lives in the name-validation paragraph of the template management page quoted above.

That matters for two kinds of reader. A developer who searches the error page for the subcode finds nothing and concludes it is undocumented. And an error-handling table built from the error page alone has no row for a refusal that any code creating templates by name can run into. If your code maps codes to friendly messages, add this one by hand.

The same page also refuses several neighbouring mistakes with the same top-level code, which is why the subcode is worth reading at all:

"Template names can only contain lowercase alphanumeric characters and underscores (regex: ^[a-z0-9_]+$). The maximum length is 512 characters. If a name contains uppercase letters, spaces, or special characters, the API returns error code 100." (Meta — Template management)

A malformed name, an invalid category, an unsupported language code and a duplicate name all come back as code 100. Only the duplicate is documented with a subcode, 2388024.

Where in the error response does 2388024 appear?

Meta's pages do not agree on that, so do not hang your handling on one field. The template management page says the refusal is code 100 with subcode 2388024 and a particular message. Meta's error reference, describing the response format, says this of the subcode field:

"Deprecated. Will not be returned in v16.0+ responses. Graph API subcode. Not all responses will include a subcode, so build your error handling logic around code and details properties instead." (Meta — WhatsApp Cloud API error codes)

Yet the example response on that same page still carries an error_subcode value. Meta's changelog entry for version 16 adds a second complication: "All code 100 errors will now use Invalid parameter as their title. Old titles that described the nature of a given code 100 error have been moved to the details property." (Meta — WhatsApp changelog) Read strictly, that puts "(#100) Invalid parameter" in the message and the descriptive wording in details.

Field What Meta's pages say How to use it
code 100 Branch on it first
error_subcode 2388024, though marked deprecated Use it when present; never rely on it
error_data.details Where v16 moved code 100's descriptive titles Log it and read it
Human-readable text "Content in This Language Already Exists" Do not match on the English
fbtrace_id A trace id for Direct Support Log it with the request

The human-readable wording is the weakest of these for a reason Meta gives on its Graph API error page. Of the user-facing fields error_user_msg and error_user_title, it says: "The language of the message is based on the locale of the API request." (Meta — Graph API, Handle errors) A handler that looks for the English phrase can break on the first request made with another locale. So branch on code 100, treat subcode 2388024 as confirmation when it arrives, and settle any doubt with a fresh read of the account's templates, which tells you directly whether that name and language pair exists.

The create request that provokes it is the ordinary one, sent a second time:

curl 'https://graph.facebook.com/v23.0/<WABA_ID>/message_templates' \
  -H 'Authorization: Bearer <ACCESS_TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "order_confirmation",
    "language": "en_US",
    "category": "UTILITY",
    "components": [ ... ]
  }'

Can two WhatsApp templates share a name in different languages?

Yes, and that is how Meta intends translations to work. Uniqueness is per language, so a second language under the same name is a new template, not a duplicate:

"Every template must have a name, but names are not unique. This flexibility allows you to create multiple templates with the same name, but in different languages." (Meta — Template fundamentals)

To add Hindi to an English order_confirmation, send the same create request with "language": "hi" and the Hindi text. Two cautions come with it. Each language is a full template in its own right, so it is reviewed separately and counts separately: "If you create multiple templates with the same name but with different languages, each template counts against your template limit." (Meta — Template fundamentals) And close language codes are different languages to Meta. en, en_US, en_GB and en_IN are four separate codes in Meta's supported languages table, so creating en_IN beside an existing en_US succeeds, while a second en_US is refused.

The account boundary works the same way. Meta's page on the new account model says templates "belong to the Messaging account in which they were created and are not shared across Messaging accounts" (Meta — Updates to WhatsApp Business accounts). A name taken in one Messaging account is free in another, which is why two partners on the same phone number can each hold an order_confirmation of their own.

Can you reuse the name of a deleted WhatsApp template?

Not for 30 days, if the template you deleted was approved. Meta's delete limitations say so in a single sentence:

"If you delete an approved template, you cannot create a new template with the same name for 30 days." (Meta — Template management)

Two details in that sentence are worth reading closely. It names approved templates only, and says nothing either way about deleting a rejected or pending one. And it says "the same name" without mentioning languages. Meta publishes no exception for either case, so treat both as unknown rather than as permission.

The delete also does not finish at once when a send is still in flight. Meta: "If you delete a template that has been sent in a template message but has yet to be delivered (for example, because the WhatsApp user’s phone is turned off), the template’s status is set to PENDING_DELETION and WhatsApp attempts delivery for 30 days." (Meta — Template management) Where PENDING_DELETION sits among the other statuses is covered in every status a WhatsApp template can be in.

Recreating inside the window is reported to produce a different refusal, whose wording is on no Meta page we could find. At least two integration help centres publish it: egrow's under the title "Message Template Language Is Being Deleted", and GoHighLevel's with the full text: "New English (US) content can't be added while the existing English (US) content is being deleted. Try again in 4 weeks or consider creating a new message template." Neither gives an error code or subcode for it. That is third-party reporting rather than Meta's documentation, we have not captured the response ourselves, and four weeks is 28 days against Meta's documented 30, so plan to the longer figure.

Why does deleting a template by name remove every language?

Because that is what the name-based delete is defined to do. A delete addressed by name takes every language that shares it:

"Deleting a template by name deletes all templates that match that name (meaning templates with the same name but different languages will also be deleted)." (Meta — Template management)

So a business that meant to drop a broken Hindi version of order_confirmation and sent DELETE …/message_templates?name=order_confirmation has just deleted the working English one as well, and if that English one was approved, the name is now locked for 30 days. To remove one language, address it by id. Meta's rule is that the id travels with the name: "To delete a template by ID, include the template’s ID along with its name in your request; only the template with the matching template ID will be deleted." (Meta — Template management)

This request deletes every language of order_confirmation:

curl -X DELETE 'https://graph.facebook.com/v23.0/<WABA_ID>/message_templates?name=order_confirmation' \
  -H 'Authorization: Bearer <ACCESS_TOKEN>'

This one deletes only the template with that id:

curl -X DELETE 'https://graph.facebook.com/v23.0/<WABA_ID>/message_templates?hsm_id=<TEMPLATE_ID>&name=order_confirmation' \
  -H 'Authorization: Bearer <ACCESS_TOKEN>'

Two more rules belong next to these. A bulk delete with hsm_ids takes up to 100 ids, and "If any of the template IDs are invalid, the entire request fails and no templates are deleted." And some templates cannot be deleted at all: "Templates that are in a disabled status cannot be deleted." (Meta — Template management) A disabled template keeps its name in that language for as long as it exists.

How many times can an approved WhatsApp template be edited?

Meta caps edits to an approved template and leaves the others uncapped:

"Approved templates can be edited up to 10 times in a 30-day window, or 1 time in a 24-hour window. Rejected or paused templates can be edited an unlimited number of times." (Meta — Template management)

The "or" in the first sentence is read two ways. Our reading, and the safe one, is supported by Meta's own remedy for error 2388039, which notes "templates have a daily limit on the number of edits", so we treat both caps as applying together: at most one edit in any 24 hours and at most ten in any 30 days (Meta — WhatsApp Cloud API error codes). Batch your corrections into one edit rather than spending a day's allowance on each.

The same page sets the boundaries of what an edit can do:

  • "Only templates with an APPROVED, REJECTED, or PAUSED status can be edited." A template still in review cannot, and trying returns 2388039.
  • "You can only edit a template’s category, components, or time-to-live." The name and the language are not editable, which is why changing either is always a new template.
  • "You cannot edit individual template components; the API replaces all components with the components in the edit request payload." Send the whole template, every time.
  • "You cannot edit the category of an approved template." A wrong category on an approved template means a new template under a new name, or the same name in a language you do not yet have. Category disputes are covered in why WhatsApp changed your utility template to marketing.

An edit is reviewed like a new submission. Meta says the API "automatically re-approves the template unless it fails template review" after you edit an approved or paused template (Meta — Template management), so an edit is not risk-free. It is, though, the only route that keeps the same template under the same name and language.

Should you edit, translate, or create a new name?

The answer depends on what you were trying to achieve when 2388024 stopped you. This table covers the common cases, using only the rules quoted above.

What you want What to do What to watch
Fix wording on an approved template Edit it 1 edit per 24 hours, 10 per 30 days
Fix a rejected or paused template Edit it No edit cap; still reviewed
Offer the template in another language Create same name, new language code Counts against the template limit
Change an approved template's category New name Category is locked once approved
Retire one language of a template Delete by id and name 30-day name lock if approved
Reuse a name you deleted this week Choose another name Wording must not duplicate a live template

The pattern in the table is that deletion is rarely the right first move. It is the only action in those rules that removes the template outright, and for an approved one it also blocks the name for 30 days.

Will a renamed copy be rejected as a duplicate?

It can be, if the original still exists. Picking a new name such as order_confirmation_v2 gets you past 2388024, but template review runs a separate check on the content itself:

"If a template is submitted with the same wording in the body and footer of an existing template, the duplicate template will be rejected." (Meta — Template review)

So creating a renamed copy alongside the original, with identical body and footer text, trades a create-time refusal for a review-time rejection. Meta adds that the rejection notice in Business Support Home shows "the name and language of the existing template with the same content as the rejected duplicate template", and that "This check does not apply to templates categorized as AUTHENTICATION." Meta's sentence is about an existing template, and it does not say whether a deleted one still counts.

A renamed template is also a brand-new template in every other respect. Meta lists newly created templates among those its template pacing can apply to (marketing templates, and utility ones once a utility template has been paused), which is covered in template approved, messages accepted, nothing arriving. Every campaign, bot or integration that sends the old name also has to be pointed at the new one.

What does WabaCRM do when you edit or delete a template?

It applies Meta's rules before the click rather than after the refusal. On WabaCRM's templates screen, the edit dialog for an existing template says that Meta replaces the whole template with what is on the form and sends it back through review, and states the limit of 10 edits in 30 days and once in any 24 hours.

Templates list in the Acme Retail demo workspace showing four template names with their text, a category, an en_US language code, a variables count and Approved, Pending or Rejected badges beside Preview buttons
Each row is one name in one language. A second row with the same name and code is exactly what Meta refuses with 2388024.

Delete asks for confirmation first, and for an approved template the confirmation says that Meta reserves the name for 30 days, so a replacement cannot reuse it until then. When WabaCRM holds the template's Meta id, the delete sends that id with the name, so Meta removes that one language and leaves its siblings alone. Delete is unavailable on a disabled template, with Meta's reason given. When Meta refuses a new template, the refusal is shown in the builder with Meta's error code and trace id appended, the trace id being what Meta suggests including when you contact Direct Support.

One WabaCRM behaviour is worth knowing in this context. The builder tidies a typed name into Meta's format, lowercasing it and turning spaces and other characters into underscores, so "Order Shipped" is submitted as order_shipped. If an order_shipped already exists in the language you chose, that tidy name is what Meta refuses with 2388024, even though what you typed looked different.

What should you check before creating a template again?

Read the account first, then decide. A single request answers most of the questions on this page:

curl 'https://graph.facebook.com/v23.0/<WABA_ID>/message_templates?fields=name,language,status,category' \
  -H 'Authorization: Bearer <ACCESS_TOKEN>'
  1. Does the name already exist in the language you want? If it does, edit that template rather than creating a second one.
  2. What is its status? APPROVED, REJECTED and PAUSED can be edited, and a template still in review cannot. For DISABLED, Meta's pages disagree. The template management page says "Only templates with an APPROVED, REJECTED, or PAUSED status can be edited." The template review page says "If an approved template has become disabled, you may also edit it and resubmit it for approval." Either way it cannot be deleted.
  3. Have you deleted this name recently? If an approved version was deleted in the last 30 days, choose another name now rather than discovering the lock on submit.
  4. Is this the right Messaging account? Names are unique only inside one account, and WhatsApp Manager shows one account at a time.
  5. Is the wording identical to a template that still exists? Change the body or footer, or the new template will be rejected as a duplicate.

If the account turns out to be refusing template creation of any kind, the problem is not the name. That is a different refusal, covered in this WABA is not allowed to create or update templates.

Every Meta quotation on this page was read from Meta's own documentation on 16 October 2026 and re-checked word for word on 17 October 2026. Meta changes that documentation without notice; the linked pages are authoritative and this one is not.

Questions people also ask

Does the 30-day name lock cover every language of that template name?

Meta's sentence does not say. It reads that if you delete an approved template, you cannot create a new template with the same name for 30 days, with no mention of languages either way. The refusal that integration help centres have published for this case names a single language, which suggests the lock follows the language that was deleted, but that is a third-party report rather than Meta's documentation. Until you have tested your own case, plan as though any language of a recently deleted approved name may be refused, and keep a fallback name ready.

Does archiving a template free its name for a new one?

Not that Meta documents. Archiving takes a template out of use without deleting it: archived templates cannot be sent, and Meta deletes them 28 days after archival unless you unarchive them first, which restores the previous status. While the archived template still exists, expect its name and language to count as taken. Meta does not say whether a template deleted at the end of that archive window locks its name the way a manual delete of an approved template does, so do not count on archiving as a quicker route to reusing a name.

Can two different Messaging accounts use the same template name?

Yes. Meta makes names unique within a Messaging account for each language, and its documentation of the new account model says templates belong to the Messaging account they were created in and are not shared across accounts. So the same name in the same language can exist in two Messaging accounts at once, for example one per partner on a shared phone number, or one per billing currency. Each copy is created, reviewed and counted against its own account's template limit separately, and editing one changes nothing in the other.

Does an edited WhatsApp template go back through review?

Yes. Meta says templates are automatically reviewed upon creation or after editing, and that after you edit an approved or paused template the API re-approves it automatically unless it fails template review. So an edit is not a quiet correction: the new wording is judged as if submitted fresh, and it can fail. Because an edit replaces every component rather than the one you changed, send the complete template each time, including any header, footer and buttons you meant to keep, or they will be gone from the reviewed version.

What is the difference between error 2388024 and error 2388039?

They refuse two different actions. 2388024 refuses a create: a template with that name already exists in that language in the Messaging account. 2388039, which Meta lists as Message template status can't be changed, refuses an edit: Meta's example is a template that is still in review, and its remedy is to wait until the template is approved or rejected and to remember that templates have a daily limit on edits. If your code hits 2388024 and then tries to edit the existing template instead, it may meet 2388039 next.

Keep reading

Your customers are already on WhatsApp

Free for your first 1,000 contacts, with no time limit and no card. Setting up the workspace takes minutes; connecting a number takes as long as Meta's own review of it.

Sign up with your company email address. No sales call, no onboarding fee, nothing to schedule.

Why this is safe to point your customer list at

Payments are processed by Razorpay on their own checkout — your card details are never entered on, or stored by, WabaCRM. Every inbound WhatsApp webhook is checked against its signature before it is trusted.

Tech Provider is a Meta platform access tier — not a partnership, a reseller agreement or an endorsement.