---
title: meta_rename
description: Rename a Meta campaign, ad set or ad.
---

Ask to rename a campaign, an ad set or an ad on Meta. The new name replaces the whole name, and the rename changes nothing else. AdCrunch checks that the object is in the ad account of the advertiser, and it keeps the name that the rename replaces.

> Rename the FR BE 25-54 - Copy ad set to FR BE 25-54 — Summer.

The agent calls `meta_rename`, then [`get_mutation_status`](/mcp/tools/get-mutation-status), and you see whether Meta applied the change. Meta adds " - Copy" to the name of each copy, so a rename is how a copy gets its full name. [Change what runs on Meta](/mcp/tools/change-what-runs-on-meta) shows how to copy what works.

## Reference

**Available on:** [![Meta](/providers/meta.svg)](https://docs.adcrunch.dev/connect/providers)

Rename a Meta campaign, ad set, or ad on a live ad account. The new name replaces the whole name, and the rename changes no other field. Meta names a copy from `meta_copy_campaign` or `meta_copy_adset` with " - Copy" at the end: rename the copy to give it a full name. AdCrunch refuses an object that is not in this ad account with `not_found`. Runs asynchronously: returns a `workflowId` immediately — call `get_mutation_status` with it to see whether the change succeeded, and to get the name that it replaced as `priorValue`.

### Input

| Argument | Type | Required | Description |
| --- | --- | --- | --- |
| `advertiserId` | string | yes | Advertiser account ID (`acc_<id>`). Must belong to the active organization. |
| `id` | string | yes | The Meta ID of the campaign, ad set, or ad to rename, digits only. It must be in this ad account. |
| `level` | one of `campaign`, `adset`, `ad` | yes | Which level the `id` refers to. |
| `name` | string, at least 1 character | yes | The new name. It replaces the whole name, and it is visible in Meta Ads Manager. |

### Output

A successful call returns this object in `structuredContent`.

| Field | Type | Always present | Description |
| --- | --- | --- | --- |
| `workflowId` | string | yes | The id of the change. The change has not reached Meta yet. Give this id to `get_mutation_status` to find out how the change ended. |

### Failure codes

A failed call has `isError` set, and `structuredContent.error` holds one of these codes. [Errors](/mcp/errors) describes the shape of a failed call.

- `not_found`
- `provider_not_connected`
- `missing_write_access`
- `forbidden`
- `invalid_request`
- `internal_error`

### Scope

The token must hold `mutation:write`. [Auth & scopes](/mcp/auth) lists each scope.

### Annotations

A client reads these hints. A hint that the tool does not declare has the default value of the MCP specification.

- **Writes.** The tool can change data.
- **Destructive.** The tool can make a change that you cannot undo. A client can ask you to confirm before it calls the tool.
- **Not idempotent.** A second call with the same arguments can change more.
- **Open world.** The tool reaches a system outside AdCrunch, such as an ad platform.

### Example

The arguments:

```json
{
  "advertiserId": "acc_1485443900032333",
  "id": "120215678901234890",
  "level": "adset",
  "name": "FR BE 25-54 — Summer"
}
```

The result, in `structuredContent`:

```json
{
  "workflowId": "3f9c2b7e-8a41-4d6e-9b05-c1e7a2d4f860"
}
```
